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

Key Management Service:Secrets Manager Client

最終更新日:May 09, 2026

Secrets Manager Client は、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 Role Arn

    未サポート

    サポート

    ECS RAM Role

    サポート

    サポート

    RAM Role 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 を使用してください。SDK 2.0 のサンプルコードおよびソースコードについては、alibabacloud-secretsmanager-client-java-v2 をご参照ください。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 を使用してください。SDK 2.0 のサンプルコードおよびソースコードについては、aliyun-secretsmanager-client-python-v2 をご参照ください。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 を使用してください。SDK 2.0 のサンプルコードおよびソースコードについては、alibabacloud-secretsmanager-client-go-v2 をご参照ください。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 を使用してください。SDK 2.0 のサンプルコードおよびソースコードについては、alibabacloud-secretsmanager-client-nodejs-v2 をご参照ください。

アクセス認証情報の構成

ECS RAM Role

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

ECS インスタンス RAM ロールを使用すると、AccessKey ペアを構成せずに、ECS インスタンス内から一時的なアクセス認証情報 (STS トークン) を取得して KMS API オペレーションを呼び出すことができます。

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

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

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

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

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

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

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

      説明

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

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

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

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

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

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

  • 環境変数:オペレーティングシステムごとに設定方法が異なります。詳細については、をご参照ください。

    警告

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

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

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

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

    • Python:プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切な方法 (os.pathpkg_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 アカウントはデフォルトで、すべてのリソースに対する管理者権限を持ち、これを変更することはできません。リソースのセキュリティを確保するために、RAM ユーザーを使用して AccessKey ペアを作成し、必要な最小限の権限のみを付与することを推奨します。

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

  2. 認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。

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

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

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

      説明

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

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

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

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

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

  • 環境変数:オペレーティングシステムごとに設定方法が異なります。詳細については、をご参照ください。

    警告

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

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

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

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

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

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

設定ファイル

  • 専用ゲートウェイ

    # 認証情報タイプ
    credentials_type=ak
    # AccessKey ID
    credentials_access_key_id=#access_key_id#
    # AccessKey Secret
    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 Secret
    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 Secret
    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 Secret。

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 Role ARN

説明

OIDC Role 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 および クライアント ID を確認できます。

  3. OIDC プロバイダー向けの RAM ロールの作成と権限付与

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

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

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

      説明

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

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

      2. 信頼ポリシーの編集 セクションで、以下のパラメーターを構成します。

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

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

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

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

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

      説明

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

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

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

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

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

    2. ロール詳細ページの ARN セクションで、OIDC ロール ARN を確認します。

      説明

      ロール ARN は、偽装する RAM ロールの Alibaba Cloud リソースネーム (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 です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードできるように、適切な設定ディレクトリに配置してください。言語別の一般的な設定ディレクトリは以下のとおりです。

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

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

    • Python:プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切な方法 (os.pathpkg_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

説明

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

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

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

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

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

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

    3. 認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。

  2. RAM ロールの作成と権限付与:

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

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

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

        RAM ロールの 操作 列で、権限の付与 をクリックして、RAM ロールに KMS の組み込みシステム権限ポリシーをアタッチします。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 です (ファイル名は変更できません)。アプリケーションが設定ファイルを正しくロードできるように、適切な設定ディレクトリに配置してください。言語別の一般的な設定ディレクトリは以下のとおりです。

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

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

    • Python:プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切な方法 (os.pathpkg_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 Secret
    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 Secret
    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 Secret
    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 Secret。

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パブリック に設定し、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 パネルで、ModeStandard Creation に設定し、以下のパラメーターを構成します。

      パラメーター

      説明

      Authentication Method

      ClientKey を選択します。

      Encryption Password

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

      Validity Period

      重要

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

      権限ポリシー

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

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

      • Credential (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

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

ステップ 2:環境変数または設定ファイルの構成
  • 環境変数:オペレーティングシステムごとに設定方法が異なります。詳細については、をご参照ください。

    警告

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

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

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

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

    • Python:プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切な方法 (os.pathpkg_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 に設定されており、変更できません。

      Default Permission Policy

      値は key/* secret/* で、変更できません。つまり、アプリケーションは指定された KMS インスタンス内のすべてのキーおよびシークレットにアクセスできます。

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

      • Credential (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

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

  • 方法 2:標準作成

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

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

      1. ネットワークリュールを構成する際、ネットワークタイプを プライベート に選択します。

      2. 権限ルールのスコープを構成する際、対応する KMS インスタンス ID を選択します。

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

      • Credential (ClientKeyContent):デフォルトのファイル名は clientKey_****.json です。

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

ステップ 2:環境変数または設定ファイルの構成
  • 環境変数:オペレーティングシステムごとに設定方法が異なります。詳細については、をご参照ください。

    警告

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

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

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

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

    • Python:プロジェクトディレクトリまたは特定の config ディレクトリに設定ファイルを配置し、適切な方法 (os.pathpkg_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 証明書があり、SSL/TLS プロトコルとともに本人確認および暗号化通信に使用されます。有効値:

  • 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 Examples」をご参照ください。

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 Examples」をご参照ください。

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 Examples」をご参照ください。

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 構成に追加します。

        # CA 証明書パスおよびインスタンスエンドポイントを含む関連付けられた KMS リージョン
        cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]
                  

        設定ファイル経由での渡し方

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

        # CA 証明書パスおよびインスタンスエンドポイントを含む関連付けられた KMS リージョン
        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 にダウングレードします (推奨されません)。