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

Key Management Service:Secrets Manager Client

最終更新日:Sep 16, 2026

Secrets Manager Client は、Key Management Service (KMS) OpenAPI および KMS インスタンス API 上に構築されたカスタムラッパーです。アプリケーション統合のための組み込みのシークレットのキャッシュおよび更新機能を提供し、ビジネスの安定性を向上させ、開発者のワークフローを簡素化します。このクライアントは、すべてのシークレットタイプのシークレット値の取得をサポートします。

Secrets Manager Client SDK

Secrets Manager Client SDK は KMS API をラップし、シークレットのキャッシュに関するベストプラクティスと設計パターンを組み込んでいるため、アプリケーションシステムへのシークレット管理の統合が容易になります。この SDK には、次の利点があります。

  • 1 行のコードでシークレット値を読み取るだけで、アプリケーションにシークレット管理を統合できます。

  • アプリケーション内に組み込まれたシークレットのキャッシュおよび更新機能。

  • サーバー側のエラーをインテリジェントに処理する、API エラーに対する自動リトライロジック。

  • キャッシュ、リトライロジック、その他のモジュールをカスタマイズできるプラグインベースのアーキテクチャ。

説明
  • Alibaba Cloud は、シークレット値の取得にも使用できる KMS Instance SDK と Alibaba Cloud SDK も提供しています。詳細については、「SDK リファレンス」をご参照ください。

  • シークレットに対する管理操作を実行するには、Alibaba Cloud SDK を使用する必要があります。

SDK バージョン

SDK 2.0 が利用可能です。SDK 2.0 の使用を推奨します。次の表は、SDK 1.0 と SDK 2.0 を比較したものです。

  • 認証情報のサポート

    認証情報の種類

    SDK 1.0

    SDK 2.0

    AccessKey

    サポート

    サポート

    OIDC ロール ARN

    非サポート

    サポート

    ECS RAM ロール

    サポート

    サポート

    RAM ロール ARN

    サポート

    サポート

    説明

    SDK 2.0 は、デフォルトの環境変数や設定ファイルからの RAM ロール ARN 情報の読み取りをサポートしていません。ハードコーディング方式を使用する必要があります。この機能が必要な場合は、テクニカルサポートにお問い合わせください。

    ClientKey

    サポート

    非サポート

    デフォルトの認証情報プロバイダーチェーン

    非サポート

    サポート

  • セキュリティ機能

    機能

    SDK 1.0

    SDK 2.0

    組み込み CA 証明書

    非サポート

    サポート

SDK 認証フロー

Secrets Manager Client は、アクセス認証情報を使用して認証します。認証プロセスは、接続するゲートウェイタイプによって若干異なります。SDK は設定されたパラメーターを自動的に検出し、適切なゲートウェイを選択します。この柔軟な認証メカニズムにより、ゲートウェイタイプを手動で設定する必要はありません。認証手順は次のとおりです。

  1. 環境変数を設定するか、設定ファイルを準備し、必要なすべての認証情報が含まれていることを確認します。パラメーターは、専用ゲートウェイと共有ゲートウェイで異なります。

  2. クライアントを初期化します。SDK は自動的に設定を読み取り、ゲートウェイタイプを識別します。

  3. 認証が完了したら、ゲートウェイ操作に進むことができます。

適用範囲

  • サポートされるシークレットタイプ:汎用シークレット、RAM シークレット、ECS シークレット、データベースシークレット。

  • サポートされるプログラミング言語:Java (Java 8 以降)、Python、Go、Node.js。

Secrets Manager Client のインストール

以下の手順は、SDK 2.0 のインストール方法を示しています。SDK 1.0 のインストールについては、各 SDK のソースコードリポジトリをご参照ください。

Java

Maven を使用して、プロジェクトに Secrets Manager Client をインストールします。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client-v2</artifactId>
    <version>x.x.x</version>
</dependency>
          
重要

最新の機能と最適化を利用するために、SDK 2.0 の最新バージョンを使用してください。alibabacloud-secretsmanager-client-java-v2 にアクセスして、SDK 2.0 のサンプルコードとソースコードをご覧ください。SDK 1.0 については、alibabacloud-secretsmanager-client-java をご覧ください。

Python

pip を使用して Secrets Manager Client をインストールします。

# 次のコマンドが失敗した場合は、pip を pip3 に置き換えてください
pip install alibabacloud_secretsmanager_client_v2
          
重要
  • Secrets Manager Client Python SDK V2 のインストールには、Python 3.7 以降が必要です。現在のバージョンを確認するには、python3 --version を実行します。バージョンが 3.7 未満の場合は、インストールコマンドを実行する前に Python をアップグレードしてください。

  • 最新の機能と最適化を利用するために、SDK 2.0 を使用してください。aliyun-secretsmanager-client-python-v2 にアクセスして、SDK 2.0 のサンプルコードとソースコードをご覧ください。SDK 1.0 については、aliyun-secretsmanager-client-python をご覧ください。

Go

go get コマンドを使用して Secrets Manager Client をインストールします。

go get -u github.com/aliyun/alibabacloud-secretsmanager-client-go-v2          
重要
  • Go の場合、alibaba-cloud-sdk-go の依存関係は V1.63.0 より前のバージョンである必要があります。go.mod ファイルでバージョンを確認し、互換性の問題を回避してください。

  • 最新の機能と最適化を利用するために、SDK 2.0 を使用してください。alibabacloud-secretsmanager-client-go-v2 にアクセスして、SDK 2.0 のサンプルコードとソースコードをご覧ください。SDK 1.0 については、aliyun-secretsmanager-client-go をご覧ください。

Node.js

npm または yarn を使用して Secrets Manager Client をインストールします。

  • npm

    npm install alibabacloud-secretsmanager-client-v2
  • yarn

    yarn add alibabacloud-secretsmanager-client-v2
重要
  • Secrets Manager Client SDK V2 をインストールするには、Node.js 16.0.0 以降が必要です。

  • 最新の機能と最適化を利用するために、SDK 2.0 を使用してください。alibabacloud-secretsmanager-client-nodejs-v2 にアクセスして、SDK 2.0 のサンプルコードとソースコードをご覧ください。

アクセス認証情報の設定

ECS RAM ロール

ステップ 1:RAM ロールの作成と権限の設定

Elastic Compute Service (ECS) インスタンスの RAM ロールを使用すると、AccessKey ペアを設定することなく、ECS インスタンス内から一時的なアクセス認証情報 (STS トークン) を取得して KMS API 操作を呼び出すことができます。

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

  1. RAM コンソールにログインし、信頼された Alibaba Cloud サービス用の RAM ロールを作成します。

    • 信頼できるエンティティタイプ: Elastic Compute Serviceを選択します。

    • 信頼されたエンティティ:[Elastic Compute Service (ECS)] を選択します。

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

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

      RAM ロールの操作列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーを RAM ロールにアタッチします。 KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

      説明

      カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

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

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

  3. ECS コンソールにログインし、RAM ロールを ECS インスタンスにアタッチします。

ステップ 2:環境変数または設定ファイルの設定

SDK は、アクセス認証情報を取得するために次の 2 つの方法をサポートしています。

  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルは secretsmanager.properties です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードできるように、ファイルを適切な設定ディレクトリに配置してください。言語ごとの一般的な設定ディレクトリは次のとおりです。

    • Java: コンパイル時にクラスパスに自動的に含まれるように、設定ファイルを src/main/resources ディレクトリに配置します。

    • Go: 設定ファイルをプロジェクトのルートディレクトリ、または専用の config ディレクトリに配置し、コードを介してロードします。

    • Python: 設定ファイルをプロジェクトディレクトリまたは特定の config ディレクトリに配置し、適切なメソッド (os.path や pkg_resources など) を使用してロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル

  • 専用ゲートウェイ

    # 認証情報の種類
    credentials_type=ecs_ram_role
    # ECS RAM ロール名
    credentials_role_name=#credentials_role_name#
    # 関連する KMS リージョンとインスタンスエンドポイント
    cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]
                
  • 共有ゲートウェイ

    # 認証情報の種類
    credentials_type=ecs_ram_role
    # ECS RAM ロール名
    credentials_role_name=#credentials_role_name#
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"#regionId#"}]
                
  • 共有ゲートウェイ (VPC)

    # 認証情報の種類
    credentials_type=ecs_ram_role
    # ECS RAM ロール名
    credentials_role_name=#credentials_role_name#
    # 関連する KMS リージョンと VPC エンドポイント
    cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
                

環境変数

パラメーター

値

credentials_type

固定値:ecs_ram_role。

credentials_role_name

RAM ロールの名前。

cache_client_region_id

  • 専用ゲートウェイ:`[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]`。

  • 共有ゲートウェイ:`[{"regionId":"<your_region_id>"}]`。

  • 共有ゲートウェイ (VPC):`[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}]`。

    重要
    • `<regionId>` を実際のリージョン ID に、`<your_kms_instance_id>` を実際のインスタンス ID に置き換えてください。

    • Linux で export コマンドを使用して環境変数を設定する場合は、たとえば [{\"regionId\":\"<your_region_id>"}] のように、エスケープ文字を使用します。

AccessKey

ステップ 1:AccessKey の作成と権限の設定

警告

デフォルトでは、Alibaba Cloud アカウント (root ユーザー) はすべてのリソースに対する管理者権限を持っており、これは変更できません。リソースのセキュリティを確保するため、RAM ユーザーを使用して AccessKey ペアを作成し、必要な権限のみを付与することを推奨します。

  1. RAM コンソールにログオンします。ユーザー ページで、対象の RAM ユーザーの名前をクリックします。

  2. 認証情報管理 タブの [AccessKey] セクションで、[AccessKey の作成] をクリックします。

  3. RAM ユーザーに KMS へのアクセス権限を付与します。

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

      RAM ユーザーの操作列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーを RAM ユーザーにアタッチします。 KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

      説明

      カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

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

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

ステップ 2:環境変数または設定ファイルの設定

SDK は、アクセス認証情報を取得するために次の 2 つの方法をサポートしています。

  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルは secretsmanager.properties です (ファイル名は変更できません)。アプリケーションで設定ファイルが正しくロードされるように、ファイルを適切な構成ディレクトリに配置してください。言語ごとの一般的な構成ディレクトリは次のとおりです:

    • Java: 設定ファイルを src/main/resources ディレクトリに配置すると、コンパイル時に自動的にクラスパスに含まれます。

    • Go: 設定ファイルをプロジェクトのルートディレクトリまたは専用の config ディレクトリに配置し、コードでロードします。

    • Python:設定ファイルをプロジェクトディレクトリまたは特定の config ディレクトリに配置し、適切なメソッド (os.path や pkg_resources など) を使用してロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル

  • 専用ゲートウェイ

    # 認証情報の種類
    credentials_type=ak
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 専用 KMS インスタンスゲートウェイには次の設定を使用します
    cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]
                
  • 共有ゲートウェイ

    # 認証情報の種類
    credentials_type=ak
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"#regionId#"}]
                
  • 共有ゲートウェイ (VPC)

    # 認証情報の種類
    credentials_type=ak
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 関連する KMS リージョンと VPC エンドポイント
    cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
                

環境変数

パラメーター

値

credentials_type

固定値: ak。

credentials_access_key_id

AccessKey ID。

credentials_access_secret

AccessKey シークレット。

cache_client_region_id

  • 専用ゲートウェイ:`[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]`。

  • 共有ゲートウェイ:`[{"regionId":"<your_region_id>"}]`。

  • 共有ゲートウェイ (VPC):`[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}]`。

    重要
    • `<regionId>` を実際のリージョン ID に、`<your_kms_instance_id>` を実際のインスタンス ID に置き換えてください。

    • Linux で export コマンドを使用して環境変数を設定する際は、たとえば [{\"regionId\":\"<your_region_id>"}] のようにエスケープ文字を使用します。

OIDC ロール ARN

説明

OIDC ロール ARN 認証情報は SDK 2.0 のみがサポートしており、SDK 1.0 はサポートしていません。

ステップ 1:OIDC ロール ARN の作成と権限の設定

  1. OIDC プロバイダーの作成

    1. RAM 管理者として RAM コンソールにログインします。[SSO] ページで、[ロールベースの SSO] タブをクリックします。

    2. [OIDC] タブで、IdP の作成 をクリックします。

    3. IdP の作成 ページで、プロバイダー情報を設定します。詳細については、「OIDC プロバイダーを管理する」をご参照ください。

  2. OIDC ID 情報 (ARN とクライアント ID) の取得と保存

    1. [SSO] ページに移動し、IdP タブで、対象の OIDC プロバイダーの名前をクリックします。

    2. IdP 詳細ページで、ARN と Client ID を確認できます。

  3. OIDC プロバイダー用の RAM ロールの作成と認可

    1. RAM 管理者として RAM コンソールにログインし、アイデンティティ > ロール ページに移動します。

    2. ロールの作成をクリックします。作成ページの右上隅で、[ポリシーエディターに切り替え]をクリックします。

    3. ポリシーエディターで、OIDC プロバイダーを指定します。ビジュアルエディターを選択し、以下のようにパラメーターを設定します。

      説明

      他のモードについては、「OIDC ID プロバイダー用の RAM ロールの作成」をご参照ください。

      1. [信頼できるエンティティの選択] セクションで、IdP を選択します。

      2. [信頼ポリシーの編集] セクションで、次のパラメーターを設定します。

        • IdP タイプ:OIDC を選択します。

        • IdP: 以前に作成した OIDC プロバイダーを選択します。

  4. OIDC RAM ロールに KMS へのアクセス権限を付与する

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

      アイデンティティ > ロール リストページに戻り、ターゲット OIDC ロールの [操作] 列にある 権限の付与 をクリックして、KMS 組み込みシステム権限ポリシーを RAM ロールに直接アタッチします。KMS 組み込みシステム権限ポリシーの詳細については、「Key Management Service システム権限ポリシーリファレンス」をご参照ください。

      説明

      カスタム権限ポリシーもサポートされています。詳細については、「カスタムポリシーの作成」をご参照ください。

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

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

  5. 対象の OIDC ロール ARN の取得

    1. アイデンティティ > ロール ページで、対象のロールの名前をクリックします。

    2. ロール詳細ページの [ARN] セクションで、OIDC ロール ARN を見つけます。

      説明

      ロール ARN は、引き受ける RAM ロールの ARN です。フォーマットは `acs:ram::$accountID:role/$roleName` で、`$accountID` は Alibaba Cloud アカウント ID、`$roleName` は RAM ロール名です。

  6. OIDC トークンファイルの発行と保存

    Alibaba Cloud はコンソールからの直接の OIDC ログインをサポートしていませんが、プログラムで OIDC SSO プロセスを完了することができます。OIDC トークンの取得には OAuth フローが関与し、通常は OIDC ID プロバイダー (IdP) からの標準的な OAuth 2.0 プロセスを通じて行われます。

    例:RRSA が有効になっている ACK クラスターでアプリケーションが実行されると、クラスターはアプリケーションポッドに対応するサービスアカウントの OIDC トークンファイルを自動的に作成してマウントします。

ステップ 2:環境変数または設定ファイルの設定

SDK は、アクセス認証情報を取得するために次の 2 つの方法をサポートしています。

  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルは secretsmanager.properties です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードできるように、ファイルを適切な設定ディレクトリに配置してください。各言語の一般的な設定ディレクトリは次のとおりです:

    • Java: 設定ファイルを src/main/resources ディレクトリに配置すると、コンパイル時に自動的にクラスパスに含まれます。

    • Go: 設定ファイルをプロジェクトのルートディレクトリ、または専用の config ディレクトリに配置し、コードでロードします。

    • Python: 設定ファイルをプロジェクトディレクトリまたは特定の config ディレクトリに配置し、(os.path や pkg_resources などの)適切なメソッドを使用してロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル

  • 専用ゲートウェイ

    # 認証情報の種類
    credentials_type=oidc_role_arn
    # ロール ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_role_arn=<role_arn>
    # OIDC プロバイダー ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_provider_arn=<oidc_provider_arn>
    # OIDC トークンファイルパス (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_token_file_path=<oidc_token_file_path>
    # KMS リージョンとインスタンスエンドポイント
    cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]            
  • 共有ゲートウェイ

    # 認証情報の種類
    credentials_type=oidc_role_arn
    # ロール ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_role_arn=<role_arn>
    # OIDC プロバイダー ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_provider_arn=<oidc_provider_arn>
    # OIDC トークンファイルパス (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_token_file_path=<oidc_token_file_path>
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"<regionId>"}]
                
  • 共有ゲートウェイ (VPC)

    # 認証情報の種類
    credentials_type=oidc_role_arn
    # ロール ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_role_arn=<role_arn>
    # OIDC プロバイダー ARN (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_provider_arn=<oidc_provider_arn>
    # OIDC トークンファイルパス (オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます)
    credentials_oidc_token_file_path=<oidc_token_file_path>
    # 関連する KMS リージョンと VPC エンドポイント
    cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
                

環境変数

パラメーター

値

credentials_type

固定値: oidc_role_arn。

credentials_role_arn

OIDC ID プロバイダー用の RAM ロールの ARN。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。

credentials_oidc_provider_arn

OIDC ID プロバイダーの ARN。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。

credentials_oidc_token_file_path

OIDC トークンを保存するファイルの相対パスまたは絶対パス。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。

cache_client_region_id

  • 専用ゲートウェイ:`[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]`。

  • 共有ゲートウェイ:`[{"regionId":"<your_region_id>"}]`。

  • 共有ゲートウェイ (VPC):`[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}]`。

    重要
    • `<regionId>` を実際のリージョン ID に、`<your_kms_instance_id>` を実際のインスタンス ID に置き換えてください。

    • Linux で export コマンドを使用して環境変数を設定する場合、エスケープ文字を使用してください。例: [{\"regionId\":\"<your_region_id>"}]。

AK+RamRoleArn

説明

SDK 1.0 のみが、デフォルトの環境変数と設定ファイルからの RAM ロール ARN 情報の読み取りをサポートしています。SDK 2.0 はサポートしていません。SDK 2.0 でこの機能が必要な場合は、テクニカルサポートにお問い合わせください。

ステップ 1:RAM ロール ARN の作成と権限の設定

RAM ユーザーまたはクラウドサービスは、長期キーを使用する代わりにロールを引き受けて一時的な権限 (STS トークン) を取得することで、キー漏洩のリスクを低減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスが特定の RamRoleArn を持つロールを一時的に引き受けます。タスクが完了すると、ロールの権限は取り消され、露出のリスクが最小限に抑えられます。

  1. ユーザー AccessKey ペアの作成

    1. RAM コンソールにログインします。左側のナビゲーションウィンドウで、アイデンティティ > ユーザーを選択します。[ユーザー] ページで、目的の RAM ユーザーの名前をクリックします。

    2. RAM ユーザーに `AliyunSTSAssumeRoleAccess` システムポリシーまたは `sts:AssumeRole` アクションを含むカスタムポリシーをアタッチします。

    3. 認証情報管理 タブの AccessKey セクションで、[AccessKey の作成] をクリックします。

  2. RAM ロールの作成と認可:

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。[ロール] ページで、ロールの作成 をクリックします。詳細については、「RAM ロールを作成する」をご参照ください。

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

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

        RAM ロールの 操作 列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーを RAM ロールにアタッチします。 KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

        説明

        カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

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

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

  3. 対象の RAM ロールの RamRoleArn を取得します。詳細については、「RAM ロールに関する情報の表示」をご参照ください。

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。[ロール] ページで、対象のロールの名前をクリックします。

    2. ロール詳細ページの [ARN] セクションで、RamRoleArn を見つけます。

      説明

      RamRoleArn は、引き受ける RAM ロールの Alibaba Cloud リソースネーム (ARN) です。フォーマットは `acs:ram::$accountID:role/$roleName` で、`$accountID` は Alibaba Cloud アカウント ID、`$roleName` は RAM ロール名です。

ステップ 2:環境変数または設定ファイルの設定

SDK は、アクセス認証情報を取得するために次の 2 つの方法をサポートしています。

  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルは secretsmanager.properties です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードするように、ファイルを適切な設定ディレクトリに配置してください。言語ごとの一般的な設定ディレクトリは次のとおりです:

    • Java: コンパイル時にクラスパスに自動的に含まれるように、設定ファイルを src/main/resources ディレクトリに配置します。

    • Go: 設定ファイルをプロジェクトのルートディレクトリ、または専用の config ディレクトリに配置し、コードでロードします。

    • Python: 設定ファイルをプロジェクトディレクトリまたは特定の config ディレクトリに配置し、os.path や pkg_resources などの適切なメソッドを使用してロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル

  • 専用ゲートウェイ

    # 認証情報の種類
    credentials_type=ram_role
    # ロールセッション名
    credentials_role_session_name=#role_session_name#
    # ロール ARN
    credentials_role_arn=#role_arn#
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 専用 KMS インスタンスゲートウェイには次の設定を使用します
    cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]          
  • 共有ゲートウェイ

    # 認証情報の種類
    credentials_type=ram_role
    # ロールセッション名
    credentials_role_session_name=#role_session_name#
    # ロール ARN
    credentials_role_arn=#role_arn#
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"#regionId#"}]           
  • 共有ゲートウェイ (VPC)

    # 認証情報の種類
    credentials_type=ram_role
    # ロールセッション名
    credentials_role_session_name=#role_session_name#
    # ロール ARN
    credentials_role_arn=#role_arn#
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey シークレット
    credentials_access_secret=#access_key_secret#
    # 関連する KMS リージョンと VPC エンドポイント
    cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]           

環境変数

パラメーター

値

credentials_type

`ram_role` または `sts`

credentials_role_session_name

RAM ロールセッションの名前。

credentials_role_arn

RAM ロールの ARN。

credentials_access_key_id

AccessKey ID。

credentials_access_secret

AccessKey シークレット。

cache_client_region_id

  • 専用ゲートウェイ:`[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}]`。

  • 共有ゲートウェイ:`[{"regionId":"<your_region_id>"}]`。

  • 共有ゲートウェイ (VPC):`[{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}]`。

    重要
    • `<regionId>` を実際のリージョン ID に、`<your_kms_instance_id>` を実際のインスタンス ID に置き換えてください。

    • Linux では、export コマンドで環境変数を設定する場合、たとえば [{\"regionId\":\"<your_region_id>"}] のようにエスケープ文字を使用します。

ClientKey (非推奨)

説明

ClientKey 認証情報は SDK 1.0 のみがサポートしており、SDK 2.0 はサポートしていません。

共有ゲートウェイ

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

  2. (オプション) ネットワークルールの作成

    説明

    送信元 IP アドレスによるアクセスを制限するためのネットワークルールの設定はオプションです。ただし、セキュリティを向上させるために設定することを推奨します。

    1. Network Access Rules タブをクリックし、Create Network Access Rule をクリックします。

    2. Create Network Access Rule パネルで、Network Type を Public に設定し、Allowed Source IP Addresses を入力して、[OK] をクリックします。

  3. 権限ポリシーの作成

    1. 権限ポリシー タブをクリックし、権限ポリシーの作成 をクリックします。

    2. 権限ポリシーの作成 パネルで、以下に従って共有ゲートウェイのパラメーターを設定し、[OK] をクリックします。

      1. スコープ: Shared KMS Gateway

      2. アクセス可能のリソース: アクセスするシークレットを選択します。

      3. (任意) Network Access Rules: 前のステップで作成したネットワークルールを選択します。

  4. アプリケーションアクセスポイント (AAP) の作成

    1. アプリケーションアクセス タブをクリックし、次に Create AAP をクリックします。

    2. Create AAP パネルで、Mode を Standard Creation に設定し、次に以下のようにパラメーターを設定します。

      パラメーター

      説明

      Authentication Method

      ClientKey を選択します。

      Encryption Password

      数字、文字、および特殊文字を含む 8〜64 文字の文字列を入力します:`~!@#$%^&*?_-`。

      Validity Period

      重要

      ClientKey 漏洩のリスクを低減するため、有効期間を 1 年に設定することを推奨します。サービスの中断を避けるため、有効期限が切れる前に ClientKey をローテーションしてください。詳細については、「ClientKey のローテーション」をご参照ください。

      権限ポリシー

      前のステップで作成した権限ポリシーを選択します。

    3. 確認 をクリックします。ブラウザによって ClientKey が自動的にダウンロードされます。ClientKey には、以下のファイルが含まれています。

      • アプリケーション認証情報の内容 (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

      • 認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は `clientKey_****_Password.txt` です。

ステップ 2:環境変数または設定ファイルの設定
  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルは secretsmanager.properties です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードするように、ファイルを適切な設定ディレクトリに配置してください。さまざまな言語の一般的な設定ディレクトリは次のとおりです:

    • Java: 設定ファイルを src/main/resources ディレクトリに配置すると、コンパイル時にクラスパスに自動的に含まれます。

    • Go: 設定ファイルをプロジェクトのルートディレクトリまたは専用の config ディレクトリに配置し、コードでロードします。

    • Python: 設定ファイルをプロジェクトディレクトリまたは特定の config ディレクトリに配置し、適切なメソッド (os.path や pkg_resources など) を使用してロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル
  • 方法 1:ファイルパスを設定する

    # 認証情報の種類
    credentials_type=client_key
    
    # ClientKeyPassword ファイルへのファイルパス (clientKey_****_Password.txt)
    client_key_password_from_file_path=#client_key_password_file_path#
    
    # ClientKeyContent ファイルへのファイルパス (clientKey_****.json)
    client_key_private_key_path=#client_key_private_key_file_path#
    
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"#regionId#"}]
                  
  • 方法 2:環境変数を介してパスワードを設定する

    警告

    まず、`clientKey_****_Password.txt` ファイルから ClientKeyPassword をカスタム環境変数 (例:`clientKeyPassword_content`) に保存します。

    # 認証情報の種類
    credentials_type=client_key
    
    # ClientKeyPassword の内容を保存する環境変数名
    client_key_password_from_env_variable=#client_key_password_env_var_name#
    
    # ClientKey 秘密鍵ファイルパス
    client_key_private_key_path=#client_key_private_key_file_path#
    
    # 関連する KMS リージョン
    cache_client_region_id=[{"regionId":"#regionId#"}]
                  

環境変数

SDK は、ClientKey 認証情報パスワードを設定するために 2 つの方法をサポートしています。

  • 方法 1:ClientKey パスワードのファイルパスを設定する (`clientKey_****_Password.txt`)

    パラメーター

    値

    credentials_type

    固定値: client_key。

    client_key_password_from_file_path

    ClientKeyPassword ファイル (`clientKey_****_Password.txt`) への絶対パスまたは相対パス。

    client_key_private_key_path

    認証情報-ClientKeyContent ファイル (`clientKey_****.json`) への絶対パスまたは相対パス。

    cache_client_region_id

    フォーマット:`[{"regionId":"<your_region_id>"}]`。Linux では、エスケープ文字を使用します:`[{\"regionId\":\"<your_region_id>"}]`。

  • 方法 2:ClientKey パスワードの内容を直接設定する

    警告

    まず、`clientKey_****_Password.txt` の内容をカスタム環境変数 (例:`clientKeyPassword_content`) に保存します。

    パラメーター

    値

    credentials_type

    固定値: client_key。

    client_key_password_from_env_variable

    ClientKeyPassword の内容を保存する環境変数の名前。例:`clientKeyPassword_content`。

    client_key_private_key_path

    `clientKey_****.json` ファイルへの絶対パスまたは相対パス。

    cache_client_region_id

    フォーマット:`[{"regionId":"<your_region_id>"}]`。Linux では、エスケープ文字を使用します。

専用ゲートウェイ

ステップ 1:ClientKey の作成

クイック作成モードまたは標準作成モードのいずれかを使用して ClientKey を作成できます。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 に設定されており、変更できません。

      認証情報暗号化アルゴリズム

      ClientKey を暗号化するために使用される暗号化アルゴリズムを選択します。有効な値:TripleDES-CBC および RC2-CBC (デフォルト)。

      Default Permission Policy

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

    3. 確認 をクリックします。ブラウザが ClientKey を自動的にダウンロードします。ClientKey には、以下のファイルが含まれています。

      • アプリケーション認証情報の内容 (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

      • 認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は `clientKey_****_Password.txt` です。

  • 方法 2:標準作成

    リソースに対する詳細なアクセス権限を設定する必要がある場合は、標準作成方法を使用することを推奨します。

    1. 「アプリケーションアクセスポイントの作成」の標準作成手順に従って、専用ゲートウェイにアクセスするための ClientKey を作成します。主要なパラメーターは以下のとおりです。

      1. ネットワークルールを設定する際、ネットワークタイプに [プライベート] を選択します。

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

    2. 作成後、ブラウザは自動的に ClientKey をダウンロードします。これには以下が含まれます。

      • アプリケーション認証情報の内容 (ClientKeyContent): デフォルトでは、ファイル名は clientKey_****.json です。

      • 認証情報パスワード (ClientKeyPassword):ファイルのデフォルト名は `clientKey_****_Password.txt` です。

ステップ 2:環境変数または設定ファイルの設定
  • 環境変数:設定方法はオペレーティングシステムによって異なります。詳細については、「環境変数でのアクセス認証情報の設定」をご参照ください。

    警告

    パラメーター名を変更しないでください。変更すると、SDK が認識できなくなります。

  • 設定ファイル: デフォルトの設定ファイルはsecretsmanager.propertiesです (ファイル名は変更できません)。アプリケーションで設定ファイルが正しくロードされるように、適切な設定ディレクトリに配置してください。さまざまな言語の一般的な設定ディレクトリは次のとおりです:

    • Java: コンパイル時に自動的にクラスパスに含まれるように、設定ファイルを src/main/resources ディレクトリに配置します。

    • Go: 設定ファイルをプロジェクトのルートディレクトリ、または専用の config ディレクトリに配置し、コードでロードします。

    • Python: プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切なメソッド (os.path や pkg_resources など) を使用してそれをロードします。

  • カスタム設定ファイルを使用する場合、クライアントの初期化時にファイルパス (#customConfigFileName#) を指定する必要があります。

設定ファイル

方法 1:ファイルパスを設定する

cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
              

方法 2:環境変数を介してパスワードを設定する

cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
              

環境変数

SDK は、ClientKey 認証情報パスワードを設定するために 2 つの方法をサポートしています。

  • 方法 1:ClientKey パスワードファイルのファイルパスを設定する

    パラメーター

    値

    cache_client_dkms_config_info

    フォーマット:`[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]`。

  • 方法 2:環境変数を介して ClientKey パスワードの内容を設定する

    パラメーター

    値

    cache_client_dkms_config_info

    フォーマット:`[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]`。

cache_client_dkms_config_info のパラメーター

パラメーター

説明

regionId

KMS インスタンスがデプロイされているリージョン ID。リージョン ID については、「リージョンとゾーン」をご参照ください。

endpoint

KMS インスタンスのエンドポイント。フォーマットは `{instance_id}.kms.aliyuncs.com` です。

clientKeyFile

認証情報-ClientKeyContent ファイル (`clientKey_****.json`) への絶対パスまたは相対パス。

passwordFromFilePath

ClientKeyPassword ファイル (`clientKey_****_Password.txt`) への絶対パスまたは相対パス。

passwordFromEnvVariable

ClientKeyPassword の内容を保存する環境変数の名前。例:`clientKeyPassword_content`。

ignoreSslCerts

KMS インスタンスの SSL 証明書検証をスキップするかどうかを指定します。KMS インスタンスには、本人確認と暗号化通信のために SSL/TLS プロトコルと共に使用される組み込みの SSL 証明書があります。有効な値:

  • `true`:検証をスキップします。`caFilePath` を設定する必要はありません。

  • `false`:SSL 証明書を検証します。

caFilePath

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

説明

CA 証明書は、KMS インスタンスの SSL 証明書を検証するために使用されます。CA 証明書の取得方法の詳細については、「KMS インスタンスの CA 証明書の取得」をご参照ください。

シークレットの取得

以下の例はすべて SDK 2.0 を使用しています。SDK 1.0 の例については、SDK 1.0 のソースコードリポジトリをご覧ください。

Java

デフォルト設定の使用

SDK は、`secretsmanager.properties` ファイルまたは環境変数から認証情報を自動的に読み取ります。

import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;

public class CacheClientEnvironmentSample {

    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newClient();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
          

カスタム設定ファイルの使用

設定ファイルがデフォルトのファイル名またはパスを使用しない場合は、この方法を使用します。設定ファイルのパス (#customConfigFileName#) を指定してください。

import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;

public class CacheClientCustomConfigFileSample {

    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard()
                        .withCustomConfigFile("#customConfigFileName#")
                        .build())
                    .build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            System.out.println("CacheSecretException: " + e.getMessage());
        }
    }
}
          

ハードコーディングされた認証情報の使用

この方法では、AccessKey を設定ファイルや環境変数に書き込むことなく、クライアントの初期化時に AccessKey とリージョン情報を直接渡すことができます。

import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils;

public class CacheClientWithCaCertificateSample {
    public static void main(String[] args) {
        try {
            // CA 証明書パスを持つ RegionInfo を作成
            RegionInfo regionInfo = new RegionInfo();
            regionInfo.setRegionId("#regionId#");
            // 専用ゲートウェイエンドポイント。共有ゲートウェイを使用する場合は省略
            regionInfo.setEndpoint("<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com");

            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard()
                            .withCredentialsProvider(CredentialsProviderUtils.withAccessKey(
                                    System.getenv("#accessKeyId#"),
                                    System.getenv("#accessKeySecret#")))
                            .addRegion(regionInfo)
                            .build())
                    .build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
          

Alibaba Cloud のデフォルトの認証情報プロバイダーチェーンの使用

デフォルトの認証情報プロバイダーチェーンは、フォールバック戦略です。認証情報が見つかるまで、事前定義された順序で認証情報を検索します。すべての方法が失敗した場合、認証は失敗し、認証情報を取得できません。

import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;

public class CacheClientDefaultCredentialChainSample {

    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard()
                        .withRegion("#regionId#")
                        .build())
                    .build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
          
説明

その他の例については、「Secrets Manager Client SDK の例」をご参照ください。

Python

デフォルト設定の使用

SDK は、`secretsmanager.properties` ファイルまたは環境変数から認証情報を自動的に読み取ります。

from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder

if __name__ == '__main__':
    secret_cache_client = SecretManagerCacheClientBuilder.new_client()
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
          

カスタム設定ファイルの使用

この方法は、設定ファイルがデフォルトのファイル名やパスを使用しない場合に使用します。

from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder

if __name__ == '__main__':
    secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
        DefaultSecretManagerClientBuilder.standard()
            .with_custom_config_file("#customConfigFileName#")
            .build()
    ).build()
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
          

ハードコーディングされた認証情報の使用

この方法では、クライアントの初期化時に AccessKey とリージョン情報を直接渡します。

import os

from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \
    DefaultSecretManagerClientBuilder
from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo

if __name__ == '__main__':
    # CA 証明書パスを持つ RegionInfo を作成
    region_info = RegionInfo(
        region_id="#regionId#",
        endpoint="#kmsInstanceEndpoint#",  # 専用ゲートウェイエンドポイント。共有ゲートウェイを使用する場合は省略
    )
    secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
        DefaultSecretManagerClientBuilder.standard()
            .with_access_key(
                os.getenv("#accessKeyId#"),
                os.getenv("#accessKeySecret#")
            )
            .add_region_info(region_info)
            .build()
    ).build()
    # ... クライアントを使用
          

Alibaba Cloud のデフォルトの認証情報プロバイダーチェーンの使用

from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder

if __name__ == '__main__':
    secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
        DefaultSecretManagerClientBuilder.standard()
            .with_region("#regionId#")
            .build()
    ).build()
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
          
説明

その他の例については、「Secrets Manager Client SDK の例」をご参照ください。

Go

デフォルト設定の使用

package main

import "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"

func main() {
    client, err := sdk.NewClient()
    if err != nil {
        // 例外を処理
        panic(err)
    }
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // 例外を処理
        panic(err)
    }
}
          

カスタム設定ファイルの使用

package main

import (
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)

func main() {
    client, err := sdk.NewSecretCacheClientBuilder(
            service.NewDefaultSecretManagerClientBuilder().Standard().
                WithCustomConfigFile("#customConfigFileName#").Build()).Build()
    if err != nil {
        // 例外を処理
        panic(err)
    }
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // 例外を処理
        panic(err)
    }
}
          

ハードコーディングされた認証情報の使用

package main

import (
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models"
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
    "os"
)

func main() {
    regionInfo := &models.RegionInfo{
        RegionId: "#regionId#",
        // 専用ゲートウェイエンドポイント。共有ゲートウェイを使用する場合は省略
        Endpoint: "<kmsInstanceId>.cryptoservice.kms.aliyuncs.com",
    }

    client, err := sdk.NewSecretCacheClientBuilder(
        service.NewDefaultSecretManagerClientBuilder().
            Standard().
            WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")).
            AddRegionInfo(regionInfo).
            Build()).Build()
    if err != nil {
        // 例外を処理
        panic(err)
    }
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // 例外を処理
        panic(err)
    }
}
          

Alibaba Cloud のデフォルトの認証情報プロバイダーチェーンの使用

package main

import (
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
    "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)

func main() {
    client, err := sdk.NewSecretCacheClientBuilder(
            service.NewDefaultSecretManagerClientBuilder().Standard().
                WithRegion("#regionId#").Build()).Build()
    if err != nil {
        // 例外を処理
        panic(err)
    }
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // 例外を処理
        panic(err)
    }
}
          
説明

その他の例については、「Secrets Manager Client SDK の例」をご参照ください。

Node.js

デフォルト設定の使用

SDK は、`secretsmanager.properties` ファイルまたは環境変数から認証情報を自動的に読み取ります。

import { SecretCacheClientBuilder } from 'alibabacloud-secretsmanager-client-v2';

async function example() {
  try {
    // 環境変数またはデフォルト設定を介してクライアントをビルド
    const client = await SecretCacheClientBuilder.newClient();
    const secretInfo = await client.getSecretInfo('#secretName#');
    console.log(secretInfo);
  } catch (error) {
    console.error('Error:', error);
  }
}

example();

カスタム設定ファイルの使用

この方法は、設定ファイルがデフォルトのファイル名やパスを使用しない場合に使用します。設定ファイルのパスを指定します。

import {
  SecretCacheClientBuilder,
  BaseSecretManagerClientBuilder,
  CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';

async function example() {
  try {
    const client = await SecretCacheClientBuilder.newCacheClientBuilder(
      BaseSecretManagerClientBuilder.standard().withCustomConfigFile('#customConfigFileName#').build()
    ).build();

    const secretInfo = await client.getSecretInfo('#secretName#');
    console.log(secretInfo);
  } catch (error) {
    console.error('Error:', error);
  }
}

example();

ハードコーディングされた認証情報の使用

この方法では、クライアントの初期化時に AccessKey とリージョン情報を直接渡します。

import {
  SecretCacheClientBuilder,
  BaseSecretManagerClientBuilder,
  CredentialsProviderUtils,
  RegionInfo
} from 'alibabacloud-secretsmanager-client-v2';

async function example() {
  try {
    // CA 証明書パスを持つ RegionInfo を作成
    const regionInfo = new RegionInfo();
    regionInfo.setRegionId('#regionId#');
    regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // KMS インスタンスアドレスを指定
    
    const client = await SecretCacheClientBuilder.newCacheClientBuilder(
        BaseSecretManagerClientBuilder.standard()
          .withCredentialsProvider(
            CredentialsProviderUtils.withAccessKey(
              process.env['#accessKeyId#'],
              process.env['#accessKeySecret#']
            )
        )
        .addRegionInfo(regionInfo) // CA 証明書パスを持つ RegionInfo を使用
        .build()
    ).build();

    const secretInfo = await client.getSecretInfo('#secretName#');
    console.log(secretInfo);
  } catch (error) {
    console.error('Error:', error);
  }
}

example();

Alibaba Cloud のデフォルトの認証情報プロバイダーチェーンの使用

import {
  SecretCacheClientBuilder,
  BaseSecretManagerClientBuilder,
  CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';

async function example() {
  try {
    const client = await SecretCacheClientBuilder.newCacheClientBuilder(
      BaseSecretManagerClientBuilder.standard()
        .withCredentialsProvider(CredentialsProviderUtils.withDefaultCredential())
        .withRegion('#regionId#')
        .build()
    ).build();

    const secretInfo = await client.getSecretInfo('#secretName#');
    console.log(secretInfo);
  } catch (error) {
    console.error('Error:', error);
  }
}

example();
説明

よくある質問

  • エラー「cannot find the built-in CA certificate for region[$regionId], please provide the caFilePath parameter.」が表示された場合の対処法

    • 原因:指定されたリージョンの組み込み CA 証明書が SDK に存在しません。

    • 解決策:

      • SDK を最新の V2.0 バージョンに更新します。

      • 最新バージョンに更新してもエラーが解決しない場合は、最新の CA 証明書 (KMS コンソールの [インスタンス管理] > [インスタンス詳細] で入手可能) をダウンロードし、CA 証明書パスを渡します。以下のいずれかの方法を使用できます。

        環境変数を介して渡す

        `caFilePath` パラメーターを `cache_client_region_id` 設定に追加します。

        # 関連する KMS リージョン、CA 証明書パスとインスタンスエンドポイントを含む
        cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]
                  

        設定ファイルを介して渡す

        `caFilePath` パラメーターを `secretsmanager.properties` またはカスタム設定ファイルに追加します。

        # 関連する KMS リージョン、CA 証明書パスとインスタンスエンドポイントを含む
        cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]
                  

        ハードコーディングされた認証情報を介して渡す

        import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
        import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
        import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
        import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo;
        import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
        import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils;
        
        public class CacheClientWithCaCertificateSample {
            public static void main(String[] args) {
                try {
                    // CA 証明書パスを持つ RegionInfo を作成
                    RegionInfo regionInfo = new RegionInfo();
                    regionInfo.setRegionId("#regionId#");
                    regionInfo.setEndpoint("#kmsInstanceEndpoint#"); // KMS インスタンスエンドポイントを指定
                    regionInfo.setCaFilePath("#caFilePath#"); // CA 証明書ファイルパスを指定
        
                    SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                            BaseSecretManagerClientBuilder.standard()
                                    .withCredentialsProvider(CredentialsProviderUtils.withAccessKey(
                                            System.getenv("#accessKeyId#"),
                                            System.getenv("#accessKeySecret#")))
                                    .addRegion(regionInfo) // CA 証明書パスを持つ RegionInfo を使用
                                    .build())
                            .build();
                    // ... クライアントを使用
                } catch (CacheSecretException e) {
                    e.printStackTrace();
                }
            }
        }
                  
        import os
        
        from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
        from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \
            DefaultSecretManagerClientBuilder
        from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo
        
        if __name__ == '__main__':
            # CA 証明書パスを持つ RegionInfo を作成
            region_info = RegionInfo(
                region_id="#regionId#",
                endpoint="#kmsInstanceEndpoint#",  # KMS インスタンスエンドポイントを指定
                ca_file_path="#caFilePath#"  # CA 証明書ファイルパスを指定
            )
            secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
                DefaultSecretManagerClientBuilder.standard()
                    .with_access_key(
                        os.getenv("#accessKeyId#"),
                        os.getenv("#accessKeySecret#")
                    )
                    .add_region_info(region_info)  # CA 証明書パスを持つ RegionInfo を使用
                    .build()
            ).build()
            # ... クライアントを使用
                  
        package main
        
        import (
            "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
            "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models"
            "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
            "os"
        )
        
        func main() {
            // CA 証明書パスを持つ RegionInfo を作成
            regionInfo := &models.RegionInfo{
                RegionId:   "#regionId#",
                Endpoint:   "#kmsInstanceEndpoint#", // KMS インスタンスエンドポイントを指定
                CaFilePath: "#caFilePath#",          // CA 証明書ファイルパスを指定
            }
        
            client, err := sdk.NewSecretCacheClientBuilder(
                service.NewDefaultSecretManagerClientBuilder().
                    Standard().
                    WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")).
                    AddRegionInfo(regionInfo). // CA 証明書パスを持つ RegionInfo を使用
                    Build()).Build()
            if err != nil {
                // 例外を処理
                panic(err)
            }
            secretInfo, err := client.GetSecretInfo("#secretName#")
            if err != nil {
                // 例外を処理
                panic(err)
            }
        }
                  
        import {
          SecretCacheClientBuilder,
          BaseSecretManagerClientBuilder,
          CredentialsProviderUtils,
          RegionInfo
        } from 'alibabacloud-secretsmanager-client-v2';
        
        async function example() {
          try {
            // CA 証明書パスを持つ RegionInfo を作成
            const regionInfo = new RegionInfo();
            regionInfo.setRegionId('#regionId#');
            regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // KMS インスタンスアドレスを指定
            regionInfo.setCaFilePath('#caFilePath#'); // CA 証明書ファイルパスを指定
            
            const client = await SecretCacheClientBuilder.newCacheClientBuilder(
                BaseSecretManagerClientBuilder.standard()
                  .withCredentialsProvider(
                    CredentialsProviderUtils.withAccessKey(
                      process.env['#accessKeyId#'],
                      process.env['#accessKeySecret#']
                    )
                )
                .addRegionInfo(regionInfo) // CA 証明書パスを持つ RegionInfo を使用
                .build()
            ).build();
        
            const secretInfo = await client.getSecretInfo('#secretName#');
            console.log(secretInfo);
          } catch (error) {
            console.error('Error:', error);
          }
        }
        
        example();
  • エラー「env/config credentials type[client_key] is illegal」が表示された場合の対処法

    • 原因:Alibaba Cloud Secrets Manager Client SDK 2.0 は ClientKey 認証情報をサポートしていません。

    • 解決策:

      • AccessKey、ECS RAM ロール、OIDC ロール ARN などのサポートされている認証情報タイプに切り替えます。詳細については、「アクセス認証情報の設定」をご参照ください。

      • SDK 1.0 にダウングレードします (非推奨)。

  • Secrets Manager Client V1.x の使用時にエラー `NoSuchMethodError: setFetchExtendedConfig` が表示された場合の対処法

    • 原因:`alibabacloud-secretsmanager-client` V1.x を使用する際、ランタイムクラスパス上の `aliyun-java-sdk-kms` のバージョンが 2.14.0 より古い場合、`getSecretValue` の呼び出しで `NoSuchMethodError: void com.aliyuncs.kms.model.v20160120.GetSecretValueRequest.setFetchExtendedConfig(java.lang.Boolean)` がスローされます。`setFetchExtendedConfig` メソッドは `aliyun-java-sdk-kms` 2.14.0 で導入されたものであり、以前のバージョンの `GetSecretValueRequest` クラスには存在しません。

    • 解決策:pom.xml で `aliyun-java-sdk-kms` 2.14.0 以降を明示的に宣言し、`aliyun-java-sdk-core` を 4.5.17 にアップグレードします。

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-kms</artifactId>
          <version>2.14.0</version>
      </dependency>
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.5.17</version>
      </dependency>