すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:RAM シークレットプラグイン

最終更新日:Mar 31, 2026

Key Management Service (KMS) を使用して RAM ユーザーの AccessKey を管理した後、RAM シークレットプラグインをインストールできます。Alibaba Cloud SDK を使用する際、RAM シークレット名を参照することで API 認証に必要な AccessKey を取得できます。これにより、AccessKey の詳細情報の管理やシークレットのローテーション処理が不要になります。本トピックでは、RAM シークレットプラグインの仕組み、およびそのインストールと使用方法について説明します。

仕組み

RAM シークレットプラグインは、シークレット名に基づき KMS から RAM シークレット値を取得し、アプリケーションのメモリ内にキャッシュします。アプリケーションが Alibaba Cloud SDK を使用する際、プラグインのローカルキャッシュから取得した AccessKey を用いて Alibaba Cloud サービスへのリクエストを送信します。

キャッシュされた AccessKey が無効になった場合(例:シークレットのローテーションによるもの)、RAM シークレットプラグインは即座に KMS から最新のシークレットを取得し、ローカルキャッシュを更新します。設定されたリトライ動作に基づき、プラグインは新しい RAM シークレットを使用してサービス呼び出しを再試行します。デフォルトでは、プラグインは API 応答内の InvalidAccessKeyId および InvalidAccessKeyId.NotFound エラーコードを検出して、AccessKey が無効であることを識別します。

対応する Alibaba Cloud SDK

KMS は、以下の表に示す Alibaba Cloud SDK 用の RAM シークレットプラグインを提供しています。

重要

RAM シークレットプラグインは、特定の Alibaba Cloud SDK 向けに開発されています。プラグインが要件を満たさない場合は、シークレットクライアントまたは標準の Alibaba Cloud SDK を使用してください。各 SDK の詳細については、「SDK リファレンス」をご参照ください。また、要件に応じてテクニカルサポートまでお問い合わせください。

Java 向け SDK(Java 8 以降のみ)

SDK 名

プラグインモジュール名

Alibaba Cloud SDK for Java (V2.0)

aliyun-java-tea-openapi-sdk-managed-credentials-provider

Alibaba Cloud SDK for Java (V1.0)

aliyun-java-sdk-managed-credentials-provider

OSS SDK for Java V1

aliyun-oss-java-sdk-managed-credentials-provider

Message Queue for Apache RocketMQ TCP SDK for Java

ons-client-managed-credentials-provider

Python 向け SDK

SDK 名

プラグインモジュール名

説明

Alibaba Cloud SDK for Python (V1.0)

aliyun-openapi-python-sdk-managed-credentials-provider

V1.0 のみ対応しています。V2.0 の場合は、シークレットクライアントまたは Alibaba Cloud SDK を使用してください。

OSS Python SDK

aliyun-oss-python-sdk-managed-credentials-provider

該当なし。

Go 向け SDK

重要

Go 向けシークレットプラグインは、InvalidAccessKeyId エラーが発生した際に自動的にリトライしません。自動ローテーションされたシークレットは、6 時間ごとに実行されるスケジュールされたリフレッシュ機構によって更新されます。手動でシークレットをローテーションする場合は、資格情報の有効期限切れによるタスク中断を防ぐため、最低でも 12 時間のローテーションウィンドウを設定してください。詳細については、「Go 向け RAM シークレットプラグインで資格情報の有効期限が切れた後に InvalidAccessKeyId エラーが報告された場合の対処方法」をご参照ください。

SDK 名

プラグインモジュール名

説明

Alibaba Cloud SDK for Go (V1.0)

alibaba-cloud-sdk-go-managed-credentials-provider

V1.0 のみ対応しています。V2.0 の場合は、シークレットクライアントまたは Alibaba Cloud SDK を使用してください。

OSS Go SDK

aliyun-oss-go-sdk-managed-credentials-provider

該当なし。

ステップ 1:アクセス認証情報の作成

シナリオ 1:共有ゲートウェイ経由でのアクセス

このシナリオは、パブリックエンドポイントまたは VPC エンドポイントを使用する場合に適用されます。対応するアクセス認証情報には、ECS インスタンス RAM ロールおよび ClientKey が含まれます。

ECS インスタンス RAM ロール

ECS RAM ロールは ECS インスタンスに付与され、信頼できるサービスとして Elastic Compute Service (ECS) が指定されます。このロールにより、ECS インスタンス内で一時的なセキュリティ認証情報(STS トークン)を取得し、AccessKey の設定を行わずに KMS API を呼び出すことができます。

詳細については、「インスタンス RAM ロール」をご参照ください。

  1. RAM コンソールにログインし、信頼できるエンティティが Alibaba Cloud サービスである RAM ロールを作成します。

    • 信頼できるエンティティの種類: Elastic Compute Service を選択します。

    • プリンシパルを Elastic Compute Service (ECS) に設定します。

  2. RAM ロールに KMS へのアクセス権限を付与します。

    • 方法 1:ID ベースのポリシーを構成する

      Key Management Service (KMS) には、組み込みのシステム権限ポリシーが用意されています。これらのポリシーを RAM ロールに直接アタッチできます。詳細については、「Key Management Service のシステム権限ポリシー」をご参照ください。また、カスタム権限ポリシーを作成することも可能です。image

    • 方法 2:リソースベースのポリシーを構成する

      KMS では、個別のキーおよび認証情報に対するアクセス権限を設定するリソースベースのポリシーをサポートしています。これらのポリシーにより、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよび認証情報を管理または使用できるかを制御できます。詳細については、「キー ポリシー」および「シークレット ポリシー」をご参照ください。

  3. ECS 管理コンソールにログインし、RAM ロールを ECS インスタンスに付与します。image

ClientKey

共有ゲートウェイへのアクセス用 ClientKey を作成するには、「アプリケーションアクセスポイントの作成」で説明されている標準的な作成方法に従ってください。

重要
  • ネットワークルールを設定する際、ネットワークタイプを パブリック または VPC に設定します。

  • 権限ルールの範囲を設定する際、Shared KMS Gateway を選択します。

シナリオ 2:専用ゲートウェイ(推奨しません)

このシナリオは、KMS に対してプライベートネットワークを使用する場合に適用されます。アクセス認証情報として ClientKey のみがサポートされます。

ClientKey は、クイック作成および標準作成の 2 つの方法で作成できます。ClientKey の詳細については、「アプリケーションアクセスポイントの概要」および「アプリケーションアクセスポイントの作成」をご参照ください。

  • 方法 1:クイック作成

    この方法は迅速かつ効率的であり、テストおよび開発の初期段階に最適です。作成されたアクセス認証情報は、KMS インスタンス内のすべてのリソースへのアクセスを許可します。

    1. Key Management Service コンソールにログインします。上部のナビゲーションバーからリージョンを選択し、左側のナビゲーションウィンドウで アプリケーションアクセス > マルチクラウドアクセス (元のアクセスポイント) を選択します。

    2. アプリケーションアクセス タブで、Create AAP をクリックします。Create AAP パネルで、以下のパラメーターを設定します。

      パラメーター

      説明

      Mode

      Quick Creation を選択します。

      Scope (KMS Instance)

      アプリケーションがアクセスする必要がある KMS インスタンスを選択します。

      Application Access Point Name

      アプリケーションアクセスポイントのカスタム名を入力します。

      Authentication Method

      デフォルト値は ClientKey であり、変更できません。

      Default Permission Policy

      デフォルト値は key/* および secret/* であり、変更できません。これは、アプリケーションが指定された KMS インスタンス内のすべてのキーおよびシークレットにアクセスできることを意味します。

    3. OK をクリックします。ブラウザが自動的に ClientKey をダウンロードします。

      ClientKey は、CredentialClientKeyContent)および パスワード(ClientKeyPassword) で構成されます。デフォルトでは、CredentialClientKeyContent)は clientKey_****.json というファイル名で保存され、パスワード(ClientKeyPassword)clientKey_****_Password.txt というファイル名で保存されます。

  • 方法 2:標準作成

    リソースに対する細かいアクセス権限を設定したい場合は、標準作成を使用します。詳細については、「アプリケーションアクセスポイントの作成」をご参照ください。

    重要

    アプリケーションアクセスポイントを標準作成する場合、以下の点に注意してください:

    • ネットワークルールを設定する際、ネットワークタイプを プライベート に設定します。

    • 権限ルールの範囲を設定する際、対応する KMS インスタンス ID を選択します。

ステップ 2:実行時パラメーターの構成

RAM シークレットプラグインは、構成ファイルを使用して実行時パラメーターを設定します。アプリケーションの実行時ディレクトリに managed_credentials_providers.properties という名前の構成ファイルを作成し、認証方式に応じて内容を追加します。

説明

アプリケーションが managed_credentials_providers.properties ファイルを自動的に読み込めない場合は、コード例を参照して、コード内でファイルパスを指定する方法を確認してください。

ECS インスタンス RAM ロール

構成ファイルには、以下の内容を使用します。

credentials_type=ecs_ram_role
## ECS RAM ロールの名前。
credentials_role_name=#credentials_role_name#
## 関連付けられた KMS サービスのリージョン。
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey(共有ゲートウェイ)

KMS 共有ゲートウェイエンドポイントを介してシークレット値を取得するには、構成ファイルに以下の内容を使用します。

## アクセス認証情報の種類。
credentials_type=client_key

## ClientKey のパスワード。環境変数またはファイルから読み取ることができます。
## これは、アプリケーションアクセスポイント(AAP)で ClientKey を作成した際に保存した ClientKeyPassword です。
client_key_password_from_env_variable=#your_client_key_private_key_password_environment_variable_name#
client_key_password_from_file_path=#your_client_key_private_key_password_file_path#

# ClientKey ファイルのパス。
# ClientKey ファイルには、AAP で ClientKey を作成した際にダウンロードした ClientKeyContent が含まれます。
# デフォルトのファイル名は ClientKey_******.json です。
client_key_private_key_path=#your_client_key_private_key_file_path#

## 関連付けられた KMS サービスのリージョン。
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey(専用ゲートウェイ)

KMS 専用ゲートウェイエンドポイントを介してシークレット値を取得するには、構成ファイルに以下の内容を使用します。

構成パラメーターは cache_client_dkms_config_info です。cache_client_dkms_config_info は JSON 配列形式を使用します。複数の KMS インスタンスを構成することで、サービス可用性およびディザスタリカバリを向上させることができます。

  • 方法 1:環境変数から ClientKey パスワードを取得

    構成ファイルの内容は以下のとおりです:

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

    この方法では、認証情報パスワード(ClientKeyPassword) 用にカスタム名の環境変数を設定する必要があります。設定後、<YOUR_PASSWORD_ENV_VARIABLE> を変数名に置き換えます。例:

    cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
  • 方法 2:ファイルから ClientKey パスワードを取得

    デフォルトでは、ClientKey の 認証情報パスワード(ClientKeyPassword) 用にダウンロードされたファイルの名前は clientKey_****_Password.txt です。ファイル名を変更した場合は、<your Client Key file path> を新しいファイルパスに置き換える必要があります。

    構成ファイルの内容は以下のとおりです:

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

    例:

    cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

各構成項目の説明:

構成項目

パラメーターの説明

説明

リージョン ID

KMS インスタンスが配置されているリージョン ID。

具体的なリージョン ID については、「リージョンとゾーン」をご参照ください。

エンドポイント

KMS インスタンスのドメイン名。形式は {instance ID}.kms.aliyuncs.com です。

インスタンス管理 ページに移動します。インスタンスの詳細ページで、インスタンス VPC エンドポイント がエンドポイントです。

clientKeyFile

JSON 形式の ClientKey ファイルの絶対パスまたは相対パス。

  • ClientKey ファイルには、アプリケーションアクセスポイント(AAP)で ClientKey を作成した際にダウンロードした Application Access SecretClientKeyContent)が含まれます。デフォルトのファイル名は ClientKey_******.json です。

  • 認証情報パスワード:AAP で ClientKey を作成した際にダウンロードした 認証情報パスワードClientKeyPassword)です。デフォルトでは、このパスワードは ClientKey_******_password.txt ファイルに保存されます。

重要

ClientKey ファイルと認証情報パスワードは 1 対 1 の対応関係にあります。これらは ClientKey を作成した際にのみ取得できます。作成時に保存しなかった場合は、AAP で新しい ClientKey を作成する必要があります。詳細については、「アプリケーションアクセスポイントの作成」をご参照ください。

passwordFromFilePath または passwordFromEnvVariable

  • passwordFromFilePath:認証情報パスワードを含むファイルの絶対パスまたは相対パス。

  • passwordFromEnvVariable:認証情報パスワードを含む環境変数の名前。

SSL 証明書を無視

KMS インスタンスの SSL 証明書の有効性チェックを無視するかどうかを指定します。KMS インスタンスには組み込みの SSL 証明書があり、SSL/TLS プロトコルを使用して認証および暗号化通信を行います。有効な値は以下のとおりです:

  • true:有効性チェックを無視します。

    説明

    値を true に設定した場合、caFilePath の設定は不要です。

  • false:有効性チェックを実行します。

本番環境では、このパラメーターを false に設定する必要があります。

caFilePath

KMS インスタンスの CA 証明書ファイルの絶対パスまたは相対パス。

KMS インスタンスの CA 証明書は、KMS インスタンスの SSL 証明書の有効性を検証するために使用されます。たとえば、SSL 証明書が対応する CA によって発行されたものであるか、有効期間内であるか、KMS インスタンス(エンドポイント)のドメイン名に対応しているかなどを検証します。

インスタンス管理 ページに移動します。インスタンスの詳細ページで、ダウンロード をクリックします(Instance CA Certificate セクション内)。

ステップ 3:RAM シークレットプラグインの使用

Java

Alibaba Cloud SDK for Java (V2.0)

Java 9+ 互換性

このプラグインは、動的クラスプロキシのために CGLIB に依存しています。Java 9 以降でプログラムを実行すると、java.lang.reflect.InaccessibleObjectException エラーが発生する可能性があります。

これを解決するには、アプリケーション起動時に以下の JVM パラメーターを追加して、CGLIB が制限付き API にアクセスできるようにします:

--add-opens java.base/java.lang=ALL-UNNAMED

たとえば、コマンドラインからプログラムを実行する場合:

java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar

IntelliJ IDEA や Eclipse などの IDE でプログラムを実行する場合は、VM オプションにこのパラメーターを追加します。

  1. RAM シークレットプラグインを Maven 依存関係としてプロジェクトに追加します。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId>
        <version>[1.3.5,]</version>
    </dependency>
    説明

    プラグインの最新バージョンをインストールすることを推奨します。詳細については、ソースコードをご参照ください。

  2. Alibaba Cloud SDK for Java クライアントを取得し、クラウドサービスを呼び出します。以下の例では、ECS の DescribeInstances 操作を呼び出す方法を示します。

    1. ecs20140526 依存関係を追加します。

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>ecs20140526</artifactId>
          <version>7.1.0</version>
      </dependency>
    2. DescribeInstances 操作を呼び出します。

      import com.aliyun.ecs20140526.Client;
      import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
      import com.aliyun.kms.secretsmanager.plugin.tea.openapi.ProxyClientCreator;
      import com.google.gson.Gson;
      
      public class AliyunTeaOpenApiProviderSample {
      
          public static void main(String[] args) throws Exception {
              // ステップ 1:管理対象シークレットの名前(KMS で作成したシークレットの名前)を指定します。
              String secretName = "your-secret-name";
      
              /*
                アプリケーションがクラスパスまたは実行可能 JAR ファイルからデフォルトの構成ファイル(managed_credentials_providers.properties)を読み込めない場合、
                またはカスタムファイル名を使用する必要がある場合は、以下のコードを呼び出します。
                ファイルは以下の順序で読み込まれます:
                1. "your-config-name" が絶対パスの場合、そのパスにあるファイルが読み込まれます。
                2. "your-config-name" がファイル名のみの場合、まずクラスパスから、次に実行可能 JAR ファイルから読み込まれます。
              */
              //ConfigLoader.setConfigName("your-config-name");
      
              // ステップ 2:OpenAPI クライアントを構成します。
              com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
              config.endpoint = "your-product-endpoint"; // 実際のサービスエンドポイントに置き換えます。
      
              // ステップ 3:クライアントインスタンスを作成します。
              Client client = ProxyClientCreator.createClient(config, Client.class, secretName);
      
              // ステップ 4:クラウドサービス API を呼び出します。
              com.aliyun.ecs20140526.models.DescribeInstancesRequest request = new com.aliyun.ecs20140526.models.DescribeInstancesRequest();
              request.setRegionId("cn-hangzhou"); // リージョン ID を設定します。
              DescribeInstancesResponse response = client.describeInstances(request);
      
              // ステップ 5:結果を出力します。
              System.out.println(new Gson().toJson(response.getBody()));
          }
      }

Alibaba Cloud SDK for Java (V1.0)

  1. RAM シークレットプラグインを Maven 依存関係としてプロジェクトに追加します。

    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>[4.3.2,5.0.0]</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId>
      <version>[1.3.1,]</version>
    </dependency>
    説明

    プラグインの最新バージョンをインストールすることを推奨します。詳細については、ソースコードをご参照ください。

  2. Alibaba Cloud SDK for Java クライアントを取得し、クラウドサービスを呼び出します。以下の例では、ECS の DescribeInstanceStatus 操作を呼び出す方法を示します。

    ECS の DescribeInstanceStatus 呼び出しを例として示します。

    1. aliyun-java-sdk-ecs 依存関係を追加します。

      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-ecs</artifactId>
        <version>5.11.20</version>
      </dependency>
    2. DescribeInstanceStatus 操作を呼び出します。

      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse;
      import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient;
      import com.aliyuncs.exceptions.ClientException;
      import com.aliyuncs.exceptions.ServerException;
      
      public class AliyunSdkProviderSample {
          public static void main(String[]args) {
              String secretName="******";
              /*
                アプリケーションがクラスパスまたは実行可能 JAR ファイルからデフォルトの構成ファイル(managed_credentials_providers.properties)を読み込めない場合、
                またはカスタムファイル名を使用する必要がある場合は、以下のコードを呼び出します。
                ファイルは以下の順序で読み込まれます:
                1. "your-config-name" が絶対パスの場合、そのパスにあるファイルが読み込まれます。
                2. "your-config-name" がファイル名のみの場合、まずクラスパスから、次に実行可能 JAR ファイルから読み込まれます。
              */
              //ConfigLoader.setConfigName("your-config-name");
              
              // 1. aliyun-java-sdk-managed-credentials-provider を使用して ACSClient を取得します。
              IAcsClient client = null;
              try {
                  client = new ProxyAcsClient("<the regionId of ECS>", secretName);
              } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 2. ECS API を呼び出して操作を実行します。
              DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
              DescribeInstanceStatusResponse response;
              try {
                   response = client.getAcsResponse(request);
              } catch (ServerException e) {
                   e.printStackTrace();
               } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 3. プラグインに関連付けられたリソースを解放するために、クライアントをシャットダウンします。 
              client.shutdown();
          }
      }

OSS SDK の使用方法

  1. RAM シークレットプラグインを Maven 依存関係としてプロジェクトに追加します。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.17</version>
    </dependency>
    <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>[2.1.0,3.10.2]</version>
    <exclusions>
        <exclusion>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-kms</artifactId>
        </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId>
    <version>[1.3.1,]</version>
    </dependency>
    説明

    プラグインの最新バージョンをインストールすることを推奨します。詳細については、ソースコードをご参照ください。

  2. OSS SDK for Java クライアントを取得し、クラウドサービスを呼び出します。以下の例では、OSS の listBuckets 操作を呼び出す方法を示します:

    import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder;
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.model.Bucket;
    
    import java.util.List;
    
    public class OssProviderSample {
    
        public static void main(String[] args) throws Exception {
            String secretName = "******";
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
            /*
              アプリケーションがクラスパスまたは実行可能 JAR ファイルからデフォルトの構成ファイル(managed_credentials_providers.properties)を読み込めない場合、
              またはカスタムファイル名を使用する必要がある場合は、以下のコードを呼び出します。
              ファイルは以下の順序で読み込まれます:
              1. "your-config-name" が絶対パスの場合、そのパスにあるファイルが読み込まれます。
              2. "your-config-name" がファイル名のみの場合、まずクラスパスから、次に実行可能 JAR ファイルから読み込まれます。
            */
            //ConfigLoader.setConfigName("your-config-name");
    
            // OSS クライアントを取得します。
            OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
    
    
            // 業務ロジック:Alibaba Cloud OSS サービスを呼び出して操作を実行します。
            List<Bucket> buckets = ossClient.listBuckets();
            for (Bucket bucket : buckets) {
                if (bucket != null) {
                    // ...
                }
            }
    
            // プラグインに関連付けられたリソースを解放するために、クライアントをシャットダウンします。 
            ossClient.shutdown();
        }
    
    }

Python

Alibaba Cloud SDK for Python (V1.0)

  1. pip コマンドを実行して、プロジェクト向けの RAM シークレットプラグインをインストールします。

    pip install aliyun-openapi-python-sdk-managed-credentials-provider
    説明

    プラグインのバージョンが 0.1.0 以降であることを確認してください。詳細については、ソースコードをご参照ください。

  2. Alibaba Cloud SDK for Python クライアントを取得し、クラウドサービスを呼び出します。

    from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
    
       region="cn-hangzhou"
       secretName="******"
    
       # 1. ACSClient を取得します。
       client = ProxyAcsClient(region_id=region, secret_name=secretName )
    
       # 2. 業務ロジック:クライアントを使用して Alibaba Cloud サービスを呼び出します。他のコード変更は不要です。
       ...
    
       # 3. プラグインに関連付けられたリソースを解放するために、クライアントをシャットダウンします。
       client.shutdown()

OSS Python SDK

  1. pip コマンドを実行して、プロジェクト向けの RAM シークレットプラグインをインストールします。

    pip install aliyun-oss-python-sdk-managed-credentials-provider
    説明

    プラグインのバージョンが 0.1.0 以降であることを確認してください。詳細については、ソースコードをご参照ください。

  2. Alibaba Cloud OSS SDK for Python クライアントを取得し、クラウドサービスを呼び出します。

    from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket
    from itertools import islice
    
    endpoint = "******"
    secret_name ="******"
    bucket_name = "******"
    bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name)
    objects = bucket.list_objects()
    for b in islice(objects.object_list, 10):
        print(b.key)
    bucket.shutdown()

Go

Alibaba Cloud SDK for Go (V1.0)

  1. Alibaba Cloud SDK for Go 向けの RAM シークレットプラグインをインストールします。

    重要
    • プラグインの最新バージョンをインストールすることを推奨します。詳細については、ソースコードをご参照ください。

    • Go 向け RAM シークレットプラグインは、v1.63.0 未満の alibaba-cloud-sdk-go バージョンを必要とします。潜在的な互換性の問題を回避するため、プラグインの go.mod ファイルでバージョンを確認および確認してください。

    • 方法 1:go.mod を使用して依存関係を管理します。

      依存関係をインストールするために、go.mod ファイルに以下の内容を追加します。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X
      )
    • 方法 2:go get コマンドを使用してリモートパッケージを取得します。

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
  2. Alibaba Cloud SDK for Go クライアントを取得し、クラウドサービスを呼び出します。

    以下の例では、ECS の DescribeInstances 操作を呼び出す方法を示します:

    package sample
    
    import (
        "fmt"
        "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
        sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        regionId := "cn-hangzhou"
    
        client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
        ecsClient := client.(*ecs.Client)
    
        request := ecs.CreateDescribeInstancesRequest()
        instancesResponse, err := ecsClient.DescribeInstances(request)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        for _, instance := range instancesResponse.Instances.Instance {
            // instance に対して何か処理を行います
        }
    }

OSS Go SDK

  1. OSS SDK for Go 向けの RAM シークレットプラグインをインストールします。

    重要
    • プラグインの最新バージョンをインストールすることを推奨します。詳細については、ソースコードをご参照ください。

    • Go 向け RAM シークレットプラグインは、v1.63.0 未満の alibaba-cloud-sdk-go バージョンを必要とします。潜在的な互換性の問題を回避するため、プラグインの go.mod ファイルでバージョンを確認および確認してください。

    • 方法 1:go.mod を使用して依存関係を管理します。

      依存関係パッケージをインストールするために、go.mod ファイルに以下の内容を追加します。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X
      )
    • 方法 2:go get コマンドを使用してリモートコードパッケージを取得します。

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
  2. Alibaba Cloud OSS SDK for Go クライアントを取得し、クラウドサービスを呼び出します。

    package sample
    
    import (
        "fmt"
        ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    
        // Proxy OSS クライアントを取得します。
        client, err := ossprovider.New(endpoint, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        result, err := client.ListBuckets()
        if err != nil {
            fmt.Println(err)
            return
        }
        for _, bucket := range result.Buckets {
            // 業務ロジックをここに記述します。
        }
    
        // プラグインに関連付けられたリソースを解放するために、クライアントをシャットダウンします。
        client.Shutdown()
    }

よくある質問

Go 向け RAM シークレットプラグインで資格情報の有効期限が切れた後に InvalidAccessKeyId エラーが報告された場合の対処方法を教えてください。

  • 原因

    • Go 向け認証情報プラグインは、InvalidAccessKeyId エラーが発生した際に自動的にリトライしません。

    • 短いローテーションウィンドウ(例:10 分)でシークレットを手動ローテーションした場合、クライアントの AccessKey がローカルキャッシュのリフレッシュ前に有効期限切れになる可能性があります。

  • 解決策

    1. 自動リフレッシュを待つ: 自動ローテーションされたシークレットの場合、プラグインのスケジュールされたリフレッシュ機構(6 時間ごとに実行)が新しいシークレットを取得します。

    2. オンデマンドリフレッシュ: 認証情報が無効になった場合、例外をキャッチして sdk.RefreshSecretInfo(secretName) メソッドを呼び出して、RAM シークレットを手動でリフレッシュします。

    3. スケジュールされたリフレッシュ: sdk.RefreshSecretInfo(secretName) をカスタム頻度で呼び出す定期タスクを設定します。これにより、現在のシークレットの有効期限が切れる前に新しいシークレットを取得できます。

    4. ローテーションウィンドウの調整: 手動ローテーションされた RAM シークレットの場合、最低でも 12 時間のローテーションウィンドウを使用します。