Alibaba Cloud SDK を統合すると、インスタンスやキーの作成などの管理操作の OpenAPI を呼び出すことができます。また、暗号化、復号、シークレット値の取得などのビジネス操作を実行することもできます。このトピックは、Alibaba Cloud SDK を統合することで Key Management Service (KMS) を使用する方法について説明します。
アクセスの概要
KMS 用の Alibaba Cloud SDK を統合する場合は、管理操作は共有ゲートウェイからのみアクセスできるのに対し、ビジネス操作は共有ゲートウェイと専用ゲートウェイの両方からアクセスできることに注意してください。次の図は、これらのアクセス方法を示しています。
KMS にアクセスするための共有ゲートウェイと専用ゲートウェイの違い
次の表に、Alibaba Cloud SDK を使用してビジネス操作のために KMS にアクセスする場合の、共有ゲートウェイと専用ゲートウェイへのアクセスの主な違いを示します。
項目 | 共有ゲートウェイ | 専用ゲートウェイ | |
ネットワーク | パブリックネットワークまたは VPC ネットワーク。 | KMS プライベートネットワーク。 | |
パフォーマンス | KMS には、1 秒あたりの API リクエスト数を制限するクォータがあります。 たとえば、暗号化と復号の QPS は 1000 に固定されています。 | KMS は、API リクエスト数を制限する代わりに、ベストエフォートモードで処理します。処理中は、使用可能な最大のコンピューティングリソースとストレージリソースが使用されます。 KMS インスタンスを購入する際に、ビジネス要件に基づいて適切な QPS を選択できます。 | |
サポートされている API | 暗号操作とシークレット値の取得のためのすべての OpenAPI。 | すべての OpenAPI (ReEncrypt を除く)が暗号操作とシークレット値の取得のためにサポートされています。 | |
ネットワークアクセス制御 | ネットワークアクセス制御には、VPC ID(条件キー:acs:SourceVpc)と VPC 内の IP アドレス(条件キー:acs:VpcSourceIp)がサポートされています。 | ネットワークアクセス制御には、VPC ID(条件キー:acs:SourceVpc)と VPC 内の送信元 IP アドレス(条件キー:acs:VpcSourceIp)はサポートされていません。ネットワークアクセス制御が必要な場合は、アカウントマネージャーにお問い合わせください。 | |
承認 | STS 認証を使用してシークレットを取得する場合、承認は Decrypt 操作ではなく、GetSecretValue 操作にのみ適用されます。その他の認証方法は、両方の操作に承認を適用します。 |
シークレットの取得プロセスでは、GetSecretValue 操作と Decrypt 操作の両方が承認されます。 | |
ログ監査 | ActionTrail | Simple Log Service (SLS) | |
SDK 構成 | エンドポイント | クライアントの初期化中に、共有ゲートウェイエンドポイントを次のいずれかの形式で構成する必要があります。
| クライアントの初期化中に、専用ゲートウェイエンドポイントを |
CA 証明書 | 必須ではありません。 |
| |
サポートされている OpenAPI
管理操作は共有ゲートウェイからのみアクセスできますが、ビジネス操作は共有ゲートウェイと専用ゲートウェイの両方からアクセスできます。
エンドポイント
認証方式
Alibaba Cloud SDK を使用して共有ゲートウェイまたは専用ゲートウェイを介して OpenAPI にアクセスする場合、認証方式は同じです。 AccessKey (AK)、STS トークン、RamRoleArn、ECS インスタンス RAM ロールなどの RAM ベースの ID 認証方式がサポートされています。詳細については、「アクセス認証情報を管理する」をご参照ください。
AccessKey
デフォルトでは、Alibaba Cloud アカウントは、関連付けられているすべての Alibaba Cloud リソースを管理する権限を持つ管理者として機能します。 Alibaba Cloud アカウントに関連付けられているアクセス許可は変更できません。 Alibaba Cloud アカウントに関連付けられている AccessKey ペアが侵害された場合、アカウントのリソースが危険にさらされます。セキュリティを強化するために、Alibaba Cloud アカウントの AccessKey ペアを作成することはお勧めしません。代わりに、API アクセスモードが有効になっている RAM ユーザーを作成し、このユーザーの AccessKey ペアを生成します。最小権限の原則に従って RAM ユーザーに必要なアクセス許可のみを付与することにより、API 操作を実行して Alibaba Cloud リソースにアクセスできます。詳細については、「AccessKey ペアを作成する」をご参照ください。
Alibaba Cloud アカウント、AliyunRAMFullAccess ポリシーがアタッチされた RAM 管理者、または AccessKey ペアを管理する権限が付与された RAM ユーザーを使用して、RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、[ID] > [ユーザー] を選択し、目的の RAM ユーザーをクリックします。
[認証] タブで、[accesskey の作成] をクリックし、指示に従って作成を完了します。

RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。
方法 1:ID ベースのポリシーによる
KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。
方法 2:リソースベースのポリシーによる
KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
STS トークン
STS サービスを使用することにより、RAM ユーザーまたは RAM ロールに一時的なアクセス認証情報を発行できます。これにより、有効期間が制限されたポリシーで指定されたアクセス許可で KMS にアクセスできます。有効期限が過ぎると、認証情報は自動的に無効になります。
Alibaba Cloud アカウントまたは管理権限を持つ RAM ユーザーを使用して、RAM コンソール にログオンします。
RAM ユーザーに AliyunSTSAssumeRoleAccess 権限を付与するか、RAM ロールに AliyunSTSAssumeRoleAccess 権限を付与する。

RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。
方法 1:ID ベースのポリシーによる
KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。
方法 2:リソースベースのポリシーによる
KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
RAM ユーザーまたは RAM ロールを使用して、STS サービスの AssumeRole インターフェースを呼び出し、一時的なアクセス認証情報を取得します。
RamRoleArn
RAM ユーザーまたはクラウドサービスは、長期アクセスキーを直接使用する代わりにロールをアサインすることで一時的なアクセス許可を取得できるため、キー漏洩のリスクを軽減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスは特定の RamRoleArn を持つロールを一時的にアサインできます。 RamRoleArn は、RAM ロールの ARN 情報です。タスクが完了すると、ロールのアクセス許可が取り消され、公開のリスクがさらに軽減されます。
Alibaba Cloud アカウントまたは管理権限を持つ RAM ユーザーを使用して、RAM コンソール にログオンします。
RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。
方法 1:ID ベースのポリシーによる
KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。
方法 2:リソースベースのポリシーによる
KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
RamRoleArn は acs:ram::$accountID:role/$roleName の形式に従います。ここで、$accountID は Alibaba Cloud アカウント、$roleName は RAM ロールの名前です。

ECS インスタンス RAM ロールRAM ロール
ECS インスタンス RAM ロールは、ECS インスタンスにアタッチされる通常のサービスロールであり、インスタンス RAM ロールの信頼できるエンティティは ECS です。インスタンス RAM ロールを使用すると、AccessKey ペアを提供することなく、ECS インスタンス内から Security Token Service (STS) トークンを一時的なアクセス認証情報として取得できます。その後、一時的なアクセス認証情報を使用して、KMS の OpenAPI 操作を呼び出すことができます。
RAM コンソール にログオンし、プリンシパルタイプが Alibaba Cloud サービスであるインスタンス RAM ロールを作成します。
プリンシパルタイプ:[クラウドサービス] を選択します。
プリンシパル名:[elastic Compute Service/ecs] を選択します。
RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。
方法 1:ID ベースのポリシーによる
KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。
方法 2:リソースベースのポリシーによる
KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
ECS コンソール にログオンし、インスタンス RAM ロールを ECS インスタンスにアタッチします。

サポートされているプログラミング言語
次の表に、サポートされている言語と、それぞれの SDK ダウンロードリンクおよびリファレンスドキュメントを示します。
サポートされているプログラミング言語 | V2.0 SDK(推奨) | V1.0 SDK(非推奨) |
Java |
|
|
Python |
| |
C++ |
|
|
PHP |
| |
.NET (C#) | ||
Go |
|
|
TypeScript |
| なし |
Swift |
| なし |
