Key Management Service (KMS) は、Alibaba Cloud SDK、Credentials SDK、KMS インスタンス SDK (非推奨) の 3 種類の SDK を提供しています。このトピックでは、ビジネス要件に基づいて適切な SDK を選択できるように、それぞれの統合フロー、認証方式、サポートされる API、およびゲートウェイタイプについて説明します。
SDK 統合フロー
Alibaba Cloud SDK
Alibaba Cloud SDK は、Alibaba Cloud の OpenAPI をラップした依存パッケージであり、開発者が Alibaba Cloud 関連のアプリケーションを迅速に構築するのに役立ちます。キーと認証情報の両方のコントロールプレーン API とデータプレーン API をサポートしています。Java、Python、C++、PHP、.NET (C# のみ)、Go、TypeScript、Swift で利用できます。詳細については、「Alibaba Cloud SDK」をご参照ください。
サポートされる API
Alibaba Cloud SDK は、OpenAPI を呼び出して KMS のコントロールプレーン操作とデータプレーン操作を実行することをサポートしています。API のサポートに関する詳細については、「Alibaba Cloud SDK がサポートする OpenAPI」をご参照ください。
-
コントロールプレーン操作:デフォルトキーと KMS インスタンスの管理 (キー、認証情報、またはインスタンスの作成、タグの変更)。
-
データプレーン操作:
-
暗号操作:対称および非対称の暗号化/復号、エンベロープ暗号化、データキー生成、デジタル署名、署名検証。
-
認証情報取得:KMS インスタンスに保存されている認証情報の値を取得します。
-
本番環境では、ネットワークの変動に対処し、認証情報取得の失敗を避けるために、エラーリトライと認証情報キャッシングを実装してください。リトライ戦略については、「指数バックオフでリクエストをリトライする」をご参照ください。
サポートされるゲートウェイタイプ
Alibaba Cloud SDK は、共有ゲートウェイまたは専用ゲートウェイをサポートして OpenAPI およびインスタンス API にアクセスします。コントロールプレーンの API オペレーションには共有ゲートウェイが必要ですが、データプレーンの API オペレーションは共有ゲートウェイと専用ゲートウェイの両方をサポートしています。
|
ゲートウェイタイプ |
推奨シナリオ |
サポートされる API |
|
共有ゲートウェイ |
|
すべての OpenAPI |
|
専用ゲートウェイ |
|
暗号操作と認証情報取得の OpenAPI |
Credentials SDK
Credentials SDK は、KMS OpenAPI と KMS インスタンス API に基づくカスタムラッパーです。アプリケーション内認証情報キャッシングと更新機能を提供し、ビジネスの安定性を高め、統合を容易にします。認証情報取得のみをサポートし、Credential Client、Credential JDBC Client、RAM Credential Plugin の 3 種類の SDK が含まれています。Java (Java 8 以降)、Python、Go で利用できます。詳細については、「Credentials SDK」をご参照ください。
Credentials SDK のタイプ
|
SDK |
説明 |
|
|
|
|
|
サポートされる API
Credentials SDK は、OpenAPI およびインスタンス API (非推奨) を介した認証情報取得操作のみをサポートします。認証情報管理 (コントロールプレーン) には、Alibaba Cloud SDK を使用してください。
サポートされるゲートウェイタイプ
Credentials SDK は、共有ゲートウェイまたは専用ゲートウェイを介して認証情報を取得します。
|
ゲートウェイタイプ |
推奨シナリオ |
|
共有ゲートウェイ |
|
|
専用ゲートウェイ |
|
KMS インスタンス SDK (非推奨)
KMS インスタンス SDK は、専用ゲートウェイエンドポイントにアクセスして、暗号操作と認証情報取得を行います。Java (Java 8 以降)、PHP、Go、Python、.NET (C# のみ) で利用できます。詳細については、「KMS インスタンス SDK」をご参照ください。
ゲートウェイタイプのエンドポイント
KMS は 2 種類のエンドポイントタイプを提供します:
-
共有ゲートウェイエンドポイント (KMS サービスエンドポイント):パブリックインターネットまたは VPC 経由でアクセス可能なグローバルな KMS アドレスです。
-
フォーマット:
kms.<region-id>.cryptoservice.kms.aliyuncs.com。リージョン ID の情報については、「リージョンとゾーン」をご参照ください。 -
例:中国 (杭州) の場合、パブリックエンドポイントは
kms.cn-hangzhou.aliyuncs.comで、VPC エンドポイントはkms-vpc.cn-hangzhou.aliyuncs.comです。
-
-
専用ゲートウェイエンドポイント (KMS インスタンスエンドポイント):特定の KMS インスタンスのアドレスで、プライベートネットワーク経由でのみアクセス可能です。
-
フォーマット:
<kms-instance-id>.cryptoservice.kms.aliyuncs.com。 -
例:
kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com。
-
認証と権限付与
KMS は、RAM 認証と AAP (アプリケーションアクセスポイント) 認証をサポートしています。共有ゲートウェイは RAM 認証と AAP 認証の両方をサポートし、専用ゲートウェイは AAP 認証のみをサポートします。
-
RAM 認証:RAM ロール、STS トークン、ECS RAM ロール、AccessKey、およびその他のメソッド。詳細については、「認証情報の管理」をご参照ください。
重要RAM 認証を使用して専用ゲートウェイ経由でインスタンス内のキーと認証情報にアクセスする場合、CA 証明書を設定する必要があります。
-
AAP 認証 (非推奨):アプリケーションアクセスポイントを作成し、ClientKey ファイルをダウンロードします。これには、アプリケーション認証情報の内容 (ClientKeyContent) と認証情報パスワード (ClientKeyPassword) が含まれます。
RAM 認証
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 のキーとシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
-
ECS RAM ロール
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 インスタンスにアタッチします。

AccessKey + RamRoleArn
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 ロール名です。
-
STS トークン
セキュリティトークンサービス (STS) は、一時的なアクセス認証情報である STS トークンを RAM ユーザーまたは RAM ロールに発行します。このトークンにより、限られた有効期間内で特定の権限を持って KMS にアクセスできます。トークンの有効期限が切れると、自動的に無効になります。
RAM コンソールにログインして、RAM ユーザーまたは RAM ロールを作成します。詳細については、「RAM ユーザーの作成」および「RAM ロールの作成」をご参照ください。
RAM ユーザーまたは RAM ロールに
AliyunSTSAssumeRoleAccess権限を付与します。詳細については、「RAM ユーザーの権限管理」および「RAM ロールへの権限付与」をご参照ください。RAM ユーザーまたは RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールまたはユーザーの 操作 列で、権限の付与 をクリックして、KMS の組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーとシークレットへのアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが KMS のキーとシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
RAM ユーザーまたは RAM ロールを使用して STS の AssumeRole オペレーションを呼び出し、一時的な STS アクセス認証情報を取得します。詳細については、「AssumeRole」をご参照ください。
OIDC ロール ARN
OIDC プロバイダーの作成
RAM 管理者として RAM コンソールにログインします。[SSO] ページで、[ロールベースの SSO] タブをクリックします。
[OIDC] タブで、IdP の作成 をクリックします。
IdP の作成 ページで、プロバイダー情報を設定します。 詳細については、「OIDC プロバイダーを管理する」をご参照ください。
OIDC ID 情報 (ARN とクライアント ID) の取得と保存
[SSO] ページに移動し、IdP タブで、対象の OIDC プロバイダーの名前をクリックします。
IdP 詳細ページで、ARN と クライアント 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 トークンファイルを自動的に作成してマウントします。
AAP 認証 (非推奨)
共有ゲートウェイの構成
Key Management Service コンソールにログオンします。上部ナビゲーションバーで、リージョンを選択します。左側のナビゲーションウィンドウで、を選択します。
(オプション) ネットワークルールを作成します。
説明送信元 IP アドレスによるアクセスを制限するためのネットワークルールの設定はオプションです。ただし、セキュリティを向上させるために設定することを推奨します。
Network Access Rules タブをクリックし、Create Network Access Rule をクリックします。
Create Network Access Rule パネルで、Network Type を [パブリック] に設定し、Allowed Source IP Addresses を入力して、 [OK] をクリックします。
権限ポリシーを作成します。
権限ポリシー タブをクリックし、次に 権限ポリシーの作成 をクリックします。
権限ポリシーの作成 パネルで、以下のように共有ゲートウェイのパラメーターを設定し、[OK] をクリックします。
スコープ:Shared KMS Gateway
アクセス可能のリソース: アクセスするシークレットを選択します。
(オプション) Network Access Rules: 前のステップで作成したネットワークルールを選択します。
アプリケーションアクセスポイント (AAP) を作成します。
アプリケーションアクセス タブをクリックし、Create AAP をクリックします。
Create AAP パネルで、Mode を Standard Creation に設定し、以下のようにパラメーターを設定します。
パラメーター
説明
Authentication Method
ClientKey を選択します。
Encryption Password
数字、文字、および特殊文字を含む 8〜64 文字の文字列を入力します:
~!@#$%^&*?_-。Validity Period
重要ClientKey の漏洩リスクを低減するため、有効期間を 1 年に設定することを推奨します。サービスの中断を避けるため、ClientKey の有効期限が切れる前にローテーションしてください。詳細については、「ClientKey のローテーション」をご参照ください。
権限ポリシー
前のステップで作成した権限ポリシーを選択します。
-
確認 をクリックします。ブラウザによって ClientKey が自動的にダウンロードされます。ClientKey には、以下のファイルが含まれています:
-
アプリケーション認証情報の内容(ClientKeyContent):デフォルトのファイル名は
clientKey_****.jsonです。 -
認証情報パスワード (ClientKeyPassword):デフォルトのファイル名は
clientKey_****_Password.txtです。
-
専用ゲートウェイの構成
クイック作成モードまたは標準作成モードのいずれかを使用して 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です。