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 は設定されたパラメーターを自動的に検出し、適切なゲートウェイを選択します。この柔軟な認証メカニズムにより、ゲートウェイタイプを手動で設定する必要はありません。認証手順は次のとおりです。
-
環境変数を設定するか、設定ファイルを準備し、必要なすべての認証情報が含まれていることを確認します。パラメーターは、専用ゲートウェイと共有ゲートウェイで異なります。
-
クライアントを初期化します。SDK は自動的に設定を読み取り、ゲートウェイタイプを識別します。
-
認証が完了したら、ゲートウェイ操作に進むことができます。
適用範囲
-
サポートされるシークレットタイプ:汎用シークレット、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 ロール」をご参照ください。
RAM コンソールにログインし、信頼された Alibaba Cloud サービス用の RAM ロールを作成します。
信頼できるエンティティタイプ: Elastic Compute Serviceを選択します。
信頼されたエンティティ:[Elastic Compute Service (ECS)] を選択します。
RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールの操作列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーを RAM ロールにアタッチします。 KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーとシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが KMS のキーとシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
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"}]
環境変数
|
パラメーター |
値 |
|
|
固定値: |
|
|
RAM ロールの名前。 |
|
|
|
AccessKey
ステップ 1:AccessKey の作成と権限の設定
デフォルトでは、Alibaba Cloud アカウント (root ユーザー) はすべてのリソースに対する管理者権限を持っており、これは変更できません。リソースのセキュリティを確保するため、RAM ユーザーを使用して AccessKey ペアを作成し、必要な権限のみを付与することを推奨します。
RAM コンソールにログオンします。ユーザー ページで、対象の RAM ユーザーの名前をクリックします。
認証情報管理 タブの [AccessKey] セクションで、[AccessKey の作成] をクリックします。
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"}]
環境変数
|
パラメーター |
値 |
|
|
固定値: |
|
|
AccessKey ID。 |
|
|
AccessKey シークレット。 |
|
|
|
OIDC ロール ARN
OIDC ロール ARN 認証情報は SDK 2.0 のみがサポートしており、SDK 1.0 はサポートしていません。
ステップ 1:OIDC ロール ARN の作成と権限の設定
OIDC プロバイダーの作成
RAM 管理者として RAM コンソールにログインします。[SSO] ページで、[ロールベースの SSO] タブをクリックします。
[OIDC] タブで、IdP の作成 をクリックします。
IdP の作成 ページで、プロバイダー情報を設定します。詳細については、「OIDC プロバイダーを管理する」をご参照ください。
OIDC ID 情報 (ARN とクライアント ID) の取得と保存
[SSO] ページに移動し、IdP タブで、対象の OIDC プロバイダーの名前をクリックします。
IdP 詳細ページで、ARN と Client ID を確認できます。
OIDC プロバイダー用の RAM ロールの作成と認可
RAM 管理者として RAM コンソールにログインし、 ページに移動します。
ロールの作成をクリックします。作成ページの右上隅で、[ポリシーエディターに切り替え]をクリックします。
ポリシーエディターで、OIDC プロバイダーを指定します。ビジュアルエディターを選択し、以下のようにパラメーターを設定します。
説明他のモードについては、「OIDC ID プロバイダー用の RAM ロールの作成」をご参照ください。
[信頼できるエンティティの選択] セクションで、IdP を選択します。
[信頼ポリシーの編集] セクションで、次のパラメーターを設定します。
IdP タイプ:OIDC を選択します。
IdP: 以前に作成した OIDC プロバイダーを選択します。
OIDC RAM ロールに KMS へのアクセス権限を付与する
方法 1:ID ベースのポリシーを設定する
アイデンティティ > ロール リストページに戻り、ターゲット OIDC ロールの [操作] 列にある 権限の付与 をクリックして、KMS 組み込みシステム権限ポリシーを RAM ロールに直接アタッチします。KMS 組み込みシステム権限ポリシーの詳細については、「Key Management Service システム権限ポリシーリファレンス」をご参照ください。
説明カスタム権限ポリシーもサポートされています。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーとシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが KMS のキーとシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
対象の OIDC ロール ARN の取得
ページで、対象のロールの名前をクリックします。
ロール詳細ページの [ARN] セクションで、OIDC ロール ARN を見つけます。
説明ロール ARN は、引き受ける RAM ロールの ARN です。フォーマットは `
acs:ram::$accountID:role/$roleName` で、`$accountID` は Alibaba Cloud アカウント ID、`$roleName` は RAM ロール名です。
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"}]
環境変数
|
パラメーター |
値 |
|
|
固定値: |
|
|
OIDC ID プロバイダー用の RAM ロールの ARN。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。 |
|
|
OIDC ID プロバイダーの ARN。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。 |
|
|
OIDC トークンを保存するファイルの相対パスまたは絶対パス。オプション。指定しない場合、デフォルトの認証情報プロバイダーチェーンが使用されます。 |
|
|
|
AK+RamRoleArn
SDK 1.0 のみが、デフォルトの環境変数と設定ファイルからの RAM ロール ARN 情報の読み取りをサポートしています。SDK 2.0 はサポートしていません。SDK 2.0 でこの機能が必要な場合は、テクニカルサポートにお問い合わせください。
ステップ 1:RAM ロール ARN の作成と権限の設定
RAM ユーザーまたはクラウドサービスは、長期キーを使用する代わりにロールを引き受けて一時的な権限 (STS トークン) を取得することで、キー漏洩のリスクを低減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスが特定の RamRoleArn を持つロールを一時的に引き受けます。タスクが完了すると、ロールの権限は取り消され、露出のリスクが最小限に抑えられます。
ユーザー AccessKey ペアの作成
RAM コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。[ユーザー] ページで、目的の RAM ユーザーの名前をクリックします。
RAM ユーザーに `
AliyunSTSAssumeRoleAccess` システムポリシーまたは `sts:AssumeRole` アクションを含むカスタムポリシーをアタッチします。認証情報管理 タブの AccessKey セクションで、[AccessKey の作成] をクリックします。
RAM ロールの作成と認可:
左側のナビゲーションウィンドウで、 を選択します。[ロール] ページで、ロールの作成 をクリックします。詳細については、「RAM ロールを作成する」をご参照ください。
RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールの 操作 列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーを RAM ロールにアタッチします。 KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーとシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが KMS のキーとシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
対象の RAM ロールの RamRoleArn を取得します。詳細については、「RAM ロールに関する情報の表示」をご参照ください。
左側のナビゲーションウィンドウで、 を選択します。[ロール] ページで、対象のロールの名前をクリックします。
ロール詳細ページの [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"}]
環境変数
|
パラメーター |
値 |
|
|
` |
|
|
RAM ロールセッションの名前。 |
|
|
RAM ロールの ARN。 |
|
|
AccessKey ID。 |
|
|
AccessKey シークレット。 |
|
|
|
ClientKey (非推奨)
ClientKey 認証情報は SDK 1.0 のみがサポートしており、SDK 2.0 はサポートしていません。
共有ゲートウェイ
専用ゲートウェイ
ステップ 1:ClientKey の作成
クイック作成モードまたは標準作成モードのいずれかを使用して ClientKey を作成できます。ClientKey の詳細については、「アプリケーションアクセスポイント」および「アプリケーションアクセスポイントの作成」をご参照ください。
方法 1:クイック作成
この方法は便利で効率的であり、迅速なテストと開発に適しています。この方法で作成されたアクセス認証情報は、KMS インスタンス内のすべてのリソースへの完全なアクセス権を持ちます。
Key Management Service コンソールにログオンします。上部のナビゲーションバーで、リージョンを選択します。左側のナビゲーションウィンドウで、を選択します。
-
アプリケーションアクセス タブで、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 インスタンス内のすべてのキーとシークレットにアクセスできることを意味します。 -
確認 をクリックします。ブラウザが ClientKey を自動的にダウンロードします。ClientKey には、以下のファイルが含まれています。
-
アプリケーション認証情報の内容 (ClientKeyContent): デフォルトのファイル名は
clientKey_****.jsonです。 -
認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は `
clientKey_****_Password.txt` です。
-
方法 2:標準作成
リソースに対する詳細なアクセス権限を設定する必要がある場合は、標準作成方法を使用することを推奨します。
「アプリケーションアクセスポイントの作成」の標準作成手順に従って、専用ゲートウェイにアクセスするための ClientKey を作成します。主要なパラメーターは以下のとおりです。
ネットワークルールを設定する際、ネットワークタイプに [プライベート] を選択します。
権限ルールの適用範囲を設定する際、対応する KMS インスタンス ID を選択します。
作成後、ブラウザは自動的に 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 のパラメーター
|
パラメーター |
説明 |
|
|
KMS インスタンスがデプロイされているリージョン ID。リージョン ID については、「リージョンとゾーン」をご参照ください。 |
|
|
KMS インスタンスのエンドポイント。フォーマットは ` |
|
|
認証情報-ClientKeyContent ファイル (` |
|
|
ClientKeyPassword ファイル (` |
|
|
ClientKeyPassword の内容を保存する環境変数の名前。例:` |
|
|
KMS インスタンスの SSL 証明書検証をスキップするかどうかを指定します。KMS インスタンスには、本人確認と暗号化通信のために SSL/TLS プロトコルと共に使用される組み込みの SSL 証明書があります。有効な値:
|
|
|
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();
その他の例については、「Secrets Manager Client SDK の例」をご参照ください。
よくある質問
-
エラー「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>
-