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 に固定されています。 | API リクエスト数を制限する代わりに、KMS はベストエフォートモードでリクエストを処理します。処理中には、利用可能な最大のコンピューティングリソースとストレージリソースが使用されます。KMS インスタンスを購入する際に、ビジネス要件に基づいて適切な QPS を選択できます。 | |
サポートされる API | 暗号操作とシークレット値取得のためのすべての OpenAPI。 | ReEncrypt を除く、暗号操作とシークレット値取得のためのすべての OpenAPI。 | |
ネットワークアクセス制御 | ネットワークアクセス制御では、VPC ID (条件キー: acs:SourceVpc) と VPC 内の IP アドレス (条件キー: acs:VpcSourceIp) がサポートされています。 | VPC ID (条件キー: acs:SourceVpc) と VPC 内のソース IP アドレス (条件キー: acs:VpcSourceIp) はネットワークアクセス制御でサポートされていません。ネットワークアクセス制御が必要な場合は、アカウントマネージャーにお問い合わせください。 | |
権限付与 | STS 認証を使用してシークレットを取得する場合、権限付与は GetSecretValue 操作にのみ適用され、Decrypt 操作には適用されません。他の認証方式では、両方の操作に権限付与が適用されます。 |
シークレット取得プロセス中、GetSecretValue と Decrypt の両方の操作が権限付与されます。 | |
ログ監査 | ActionTrail | Simple Log Service (SLS) | |
SDK 構成 | エンドポイント | クライアントの初期化中に、共有ゲートウェイエンドポイントを次のいずれかのフォーマットで設定する必要があります:
| クライアントの初期化中に、専用ゲートウェイエンドポイントを次のフォーマットで設定する必要があります: |
CA 証明書 | 不要です。 |
| |
サポートされる OpenAPI
管理操作は共有ゲートウェイ経由でのみアクセス可能ですが、ビジネス運用は共有ゲートウェイと専用ゲートウェイの両方からアクセスできます。
管理操作
サービス管理
API | タイトル | 説明 |
DescribeAccountKmsStatus | ご利用の Alibaba Cloud アカウント内の KMS のステータスを照会します。 | |
OpenKmsService | ご利用の Alibaba Cloud アカウントで KMS をアクティベートします。 |
インスタンス管理
API | タイトル | 説明 |
ListKmsInstances | 現在のリージョンにあるすべての KMS インスタンスを照会します。 | |
ConnectKmsInstance | KMS インスタンスを有効にします。 | |
GetKmsInstance | KMS インスタンスの詳細を取得します。 | |
UpdateKmsInstanceBindVpc | KMS インスタンスの VPC バインディングを更新します。 | |
ReleaseKmsInstance | 従量課金制の KMS インスタンスをリリースします。 | |
GetDefaultKmsInstance | 指定されたリージョンのデフォルトの KMS インスタンスを照会します。 |
キー管理
API | タイトル | 説明 |
CreateKey | エンベロープ暗号化、デジタル署名、またはその他の暗号操作のためにカスタマーマスターキー (CMK) を作成します。 | |
ListKeys | 現在のリージョンにあるすべての CMK の ID と ARN を照会します。 | |
DescribeKey | キーの状態、使用量、ローテーション設定など、CMK のメタデータを照会します。 | |
UpdateKeyDescription | CMK の説明を更新します。 | |
EnableKey | データの暗号化と復号のためにキーを有効にします。 | |
DisableKey | キーを無効にします。 | |
CreateAlias | キーのエイリアスを作成します。 | |
ListAliases | 現在のアカウントの現在のリージョンにあるすべてのエイリアスを照会します。 | |
ListAliasesByKeyId | キーにバインドされているすべてのエイリアスを照会します。 | |
DeleteAlias | エイリアスを削除します。 | |
UpdateAlias | 既存のエイリアスを別の CMK ID にバインドします。 | |
GetParametersForImport | CMK のキーマテリアルをインポートするために使用されるパラメーターを照会します。 | |
ImportKeyMaterial | 外部で生成されたキーマテリアルを、オリジンが EXTERNAL の CMK にインポートします。 | |
DeleteKeyMaterial | インポートされたキーマテリアルを CMK から削除します。削除後、CMK はキーマテリアルを再インポートするまで PendingImport 状態になります。 | |
ScheduleKeyDeletion | 指定された CMK を削除します。 | |
CancelKeyDeletion | CMK の削除タスクをキャンセルします。 | |
SetDeletionProtection | CMK の削除保護を有効または無効にします。 | |
UpdateRotationPolicy | CMK の自動ローテーションポリシーを更新します。 | |
DescribeKeyVersion | 特定の CMK バージョンのメタデータを照会します。 | |
CreateKeyVersion | CMK のバージョンを作成します。 | |
ListKeyVersions | 指定された CMK のすべてのバージョンを照会します。 | |
SetKeyPolicy | KMS インスタンス内の CMK のキーポリシーを設定します。 | |
GetKeyPolicy | KMS インスタンス内の CMK のキーポリシーを照会します。 |
シークレット管理
API | タイトル | 説明 |
ListSecrets | 現在のリージョンにあるすべてのシークレットを照会します。 | |
DeleteSecret | シークレットを削除します。 | |
CreateSecret | シークレットを作成し、その初期バージョンを保存します。 | |
UpdateSecret | シークレットのメタデータを更新します。 | |
UpdateSecretVersionStage | バージョンステージラベルをシークレットの別のバージョンに移動します。 | |
UpdateSecretRotationPolicy | シークレットのローテーションポリシーを更新します。 | |
DescribeSecret | シークレットのメタデータを照会します。 | |
ListSecretVersionIds | 指定されたシークレットのすべてのバージョン ID とステージラベルを照会します。 | |
GetRandomPassword | ランダムなパスワード文字列を生成します。 | |
PutSecretValue | 汎用シークレットの新しいバージョンのシークレット値を保存します。 | |
RestoreSecret | 削除されたシークレットを復元します。 | |
RotateSecret | シークレットを直ちにローテーションします。 | |
SetSecretPolicy | KMS インスタンス内のシークレットのアクセスポリシーを設定します。 | |
GetSecretPolicy | KMS インスタンス内の指定されたシークレットのアクセスポリシーを照会します。 |
タグ管理
API | タイトル | 説明 |
GetKmsInstanceQuotaInfos | KMS インスタンスのクォータ使用量と制限を照会します。 | |
ListResourceTags | CMK のタグを照会します。 | |
TagResource | CMK、シークレット、または証明書にタグを追加します。 | |
UntagResource | CMK、シークレット、または証明書からタグを削除します。 |
アプリケーション管理
API | タイトル | 説明 |
CreateNetworkRule | KMS インスタンスへのアクセスを許可するプライベート IP アドレスまたはプライベート CIDR ブロックを設定するためのネットワークアクセスルールを作成します。 | |
ListNetworkRules | 現在のリージョンにあるすべてのネットワークアクセスルールを照会します。 | |
DescribeNetworkRule | ネットワークアクセスルールの詳細を取得します。 | |
UpdateNetworkRule | ネットワークアクセスルールを更新します。 | |
DeleteNetworkRule | ネットワークアクセスルールを削除します。 | |
CreatePolicy | アクセスを許可するキーとシークレットを設定するための権限ポリシーを作成します。 | |
ListPolicies | 現在のリージョンにあるすべての権限ポリシーを照会します。 | |
DescribePolicy | 権限ポリシーの詳細を取得します。 | |
UpdatePolicy | 権限ポリシーを更新します。 | |
DeletePolicy | 権限ポリシーを削除します。 | |
CreateApplicationAccessPoint | アプリケーションアクセスポイント (AAP) を作成します。 | |
ListApplicationAccessPoints | 現在のリージョンにあるすべてのアプリケーションアクセスポイント (AAP) を照会します。 | |
DescribeApplicationAccessPoint | AAP の詳細を取得します。 | |
UpdateApplicationAccessPoint | AAP に関する情報を更新します。 | |
DeleteApplicationAccessPoint | AAP を削除します。 | |
CreateClientKey | クライアントキーを作成します。 | |
ListClientKeys | AAP 内のすべてのクライアントキーを照会します。 | |
GetClientKey | クライアントキーに関する情報を取得します。 | |
DeleteClientKey | クライアントキーを削除します。 |
ビジネス運用 - 暗号操作
共有ゲートウェイ経由で暗号操作を実行するには、まずパブリックアクセスを有効にする必要があります。
API | 説明 | 共有ゲートウェイ | 専用ゲートウェイ |
エンベロープ暗号化のためにランダムなデータキーを生成します。データキーはプレーンテキストと暗号文の両方の形式で返されます。 | |||
ランダムなデータキーを生成し、指定した CMK と公開キーを使用して暗号化し、両方の暗号文を返します。 | |||
対称 CMK を使用してプレーンテキストを暗号化します。 | |||
CMK を使用して暗号化された暗号文を復号します。 | |||
プレーンテキストを公開せずに、異なる CMK で暗号文を再暗号化します。 | |||
CMK で暗号化されたデータキーをエクスポートします。データキーは、安全な伝送のために指定した公開キーで再暗号化されます。 | |||
プレーンテキストのコピーなしで、暗号文形式のみのランダムなデータキーを生成します。 | |||
非対称 CMK を使用してデジタル署名を生成します。 | |||
非対称 CMK の公開キーを使用してデジタル署名を検証します。 | |||
非対称 CMK の公開キーを使用してデータを暗号化します。 | |||
非対称 CMK の秘密キーを使用してデータを復号します。 | |||
非対称キーの公開キーを取得します。公開キーを使用して、デバイス上でデータを暗号化したり、署名を検証したりできます。 |
ビジネス運用 - シークレット値の取得
API | 説明 | 共有ゲートウェイ | 専用ゲートウェイ |
シークレット値を取得します。 |
サポートされるプログラミング言語
以下の表は、サポートされている言語とその SDK のダウンロードリンクおよびリファレンスドキュメントの一覧です。
サポートされるプログラミング言語 | V2.0 SDK | V1.0 SDK (非推奨) |
Java |
|
|
Python |
| |
C++ |
|
|
PHP |
|
|
.NET (C#) |
| |
Go |
|
|
TypeScript |
| なし |
Swift |
| なし |