全部產品
Search
文件中心

Key Management Service:擷取憑據值樣本

更新時間:Dec 26, 2024

初始化KMS執行個體SDK用戶端後,您可以通過用戶端調用GetSecretValue介面擷取憑據值。本文介紹擷取憑據值的程式碼範例。

完整程式碼範例

調用介面擷取憑據值。

源碼github地址:GetSecretValue.php

擷取憑據值完整程式碼範例

<?php

if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}

use AlibabaCloud\Dkms\Gcs\OpenApi\Util\Models\RuntimeOptions;
use AlibabaCloud\Dkms\Gcs\Sdk\Client as AlibabaCloudDkmsGcsSdkClient;
use AlibabaCloud\Dkms\Gcs\OpenApi\Models\Config as AlibabaCloudDkmsGcsOpenApiConfig;
use AlibabaCloud\Dkms\Gcs\Sdk\Models\GetSecretValueRequest;

// 填寫您在KMS應用管理擷取的ClientKey檔案路徑
// $clientKeyFile = '<your client key file path>';

// 或者,填寫您在KMS應用管理擷取的ClientKey檔案內容
$clientKeyContent = '<your client key content>';

// 填寫您在KMS應用管理建立ClientKey時輸入的加密口令
$password = getenv('CLIENT_KEY_PASSWORD');

// 填寫您的KMS執行個體VPC地址
$endpoint = '<your dkms instance service address>';

// 填寫您在KMS建立的憑據名稱
$secretName = '<your secret name>';

// KMS執行個體SDK Client對象
$client = getDkmsGcsSdkClient();
if (is_null($client)) exit(1);

// 擷取KMS憑據樣本
getSecretValueSample();

function getSecretValueSample(){
    global $client, $secretName;

    // 構建擷取憑據請求
    $getSecretValueRequest = new GetSecretValueRequest([
        'secretName' => $secretName,
    ]);
    // 忽略服務端認證
    $runtimeOptions = new RuntimeOptions();
    //$runtimeOptions->ignoreSSL = true;

    try {
        // 調用擷取憑據介面
        $getSecretValueResponse = $client->getSecretValueWithOptions($getSecretValueRequest, $runtimeOptions);

        // 憑據名稱
        $_secretName = $getSecretValueResponse->secretName;
        // 憑據值
        $_secretData = $getSecretValueResponse->secretData;

        var_dump($getSecretValueResponse->toMap());
    } catch (\Exception $error) {
        if ($error instanceof \AlibabaCloud\Tea\Exception\TeaError) {
            var_dump($error->getErrorInfo());
        }
        var_dump($error->getMessage());
        var_dump($error->getTraceAsString());
    }
}

/**
 * 構建KMS執行個體SDK Client對象
 * @return AlibabaCloudDkmsGcsSdkClient
 */
function getDkmsGcsSdkClient()
{
    global $clientKeyContent, $password, $endpoint;

    // 構建KMS執行個體SDK Client配置
    $config = new AlibabaCloudDkmsGcsOpenApiConfig();
    //連線協定請設定為"https"。KMS執行個體服務僅允許通過HTTPS協議訪問。
    $config->protocol = 'https';
    //Client Key。
    $config->clientKeyContent = $clientKeyContent;
    //Client Key口令。
    $config->password = $password;
    //設定endpoint為<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
    $config->endpoint = $endpoint;
    // 執行個體CA認證
    $config->caFilePath = 'path/to/caCert.pem';

    // 構建KMS執行個體SDK Client對象
    return new AlibabaCloudDkmsGcsSdkClient($config);
}

程式碼範例解析

初始化用戶端

關於初始化用戶端的詳細介紹,請參見初始化用戶端

<?php

use AlibabaCloud\Dkms\Gcs\Sdk\Client as AlibabaCloudDkmsGcsSdkClient;
use AlibabaCloud\Dkms\Gcs\OpenApi\Models\Config as AlibabaCloudDkmsGcsOpenApiConfig;


function getDkmsGcsSdkClient()
{
    global $clientKeyContent, $password, $endpoint;

    // 構建KMS執行個體SDK Client配置
    $config = new AlibabaCloudDkmsGcsOpenApiConfig();
    //連線協定請設定為"https"。KMS執行個體服務僅允許通過HTTPS協議訪問。
    $config->protocol = 'https';
    //Client Key。
    $config->clientKeyContent = $clientKeyContent;
    //Client Key口令。
    $config->password = $password;
    //設定endpoint為<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
    $config->endpoint = $endpoint;
    // 執行個體CA認證
    $config->caFilePath = 'path/to/caCert.pem';

    // 構建KMS執行個體SDK Client對象
    return new AlibabaCloudDkmsGcsSdkClient($config);
}

調用GetSecretValue介面擷取憑據值

function getSecretValueSample(){
    global $client, $secretName;

    // 構建擷取憑據請求
    $getSecretValueRequest = new GetSecretValueRequest([
        'secretName' => $secretName,
    ]);
    // 忽略服務端認證
    $runtimeOptions = new RuntimeOptions();
    //$runtimeOptions->ignoreSSL = true;

    try {
        // 調用擷取憑據介面
        $getSecretValueResponse = $client->getSecretValueWithOptions($getSecretValueRequest, $runtimeOptions);

        // 憑據名稱
        $_secretName = $getSecretValueResponse->secretName;
        // 憑據值
        $_secretData = $getSecretValueResponse->secretData;

        var_dump($getSecretValueResponse->toMap());
    } catch (\Exception $error) {
        if ($error instanceof \AlibabaCloud\Tea\Exception\TeaError) {
            var_dump($error->getErrorInfo());
        }
        var_dump($error->getMessage());
        var_dump($error->getTraceAsString());
    }
}