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

Key Management Service:Alibaba Cloud SDK

最終更新日:Apr 10, 2025

Alibaba Cloud SDK を統合すると、インスタンスやキーの作成などの管理操作の OpenAPI を呼び出すことができます。また、暗号化、復号、シークレット値の取得などのビジネス操作を実行することもできます。このトピックは、Alibaba Cloud SDK を統合することで Key Management Service (KMS) を使用する方法について説明します。

アクセスの概要

KMS 用の Alibaba Cloud SDK を統合する場合は、管理操作は共有ゲートウェイからのみアクセスできるのに対し、ビジネス操作は共有ゲートウェイと専用ゲートウェイの両方からアクセスできることに注意してください。次の図は、これらのアクセス方法を示しています。

image

KMS にアクセスするための共有ゲートウェイと専用ゲートウェイの違い

次の表に、Alibaba Cloud SDK を使用してビジネス操作のために KMS にアクセスする場合の、共有ゲートウェイと専用ゲートウェイへのアクセスの主な違いを示します。

項目

共有ゲートウェイ

専用ゲートウェイ

ネットワーク

パブリックネットワークまたは VPC ネットワーク。

KMS プライベートネットワーク。

パフォーマンス

KMS には、1 秒あたりの API リクエスト数を制限するクォータがあります。

たとえば、暗号化と復号の QPS は 1000 に固定されています。

KMS は、API リクエスト数を制限する代わりに、ベストエフォートモードで処理します。処理中は、使用可能な最大のコンピューティングリソースとストレージリソースが使用されます。 KMS インスタンスを購入する際に、ビジネス要件に基づいて適切な QPS を選択できます。

サポートされている API

暗号操作とシークレット値の取得のためのすべての OpenAPI

すべての OpenAPIReEncrypt を除く)が暗号操作とシークレット値の取得のためにサポートされています。

ネットワークアクセス制御

ネットワークアクセス制御には、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 構成

エンドポイント

クライアントの初期化中に、共有ゲートウェイエンドポイントを次のいずれかの形式で構成する必要があります。

  • パブリックネットワークドメイン名:kms.<REGION_ID>.aliyuncs.com

  • VPC ドメイン名:kms-vpc.<REGION_ID>.aliyuncs.com

クライアントの初期化中に、専用ゲートウェイエンドポイント<KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com の形式で構成する必要があります。

CA 証明書

必須ではありません。

  • Alibaba Cloud SDK V2.0:CA 証明書の設定が必要です。

  • Alibaba Cloud SDK V1.0:証明書はサポートしていません。代わりに、HTTPSInsecure ランタイムパラメータを true に設定する必要があります:client.SetHTTPSInsecure(true)

サポートされている OpenAPI

管理操作は共有ゲートウェイからのみアクセスできますが、ビジネス操作は共有ゲートウェイと専用ゲートウェイの両方からアクセスできます。

管理操作

サービス管理

API

説明

DescribeRegions

現在の Alibaba Cloud アカウントで使用可能なリージョンのリストを照会します。

OpenKmsService

現在の Alibaba Cloud アカウントで KMS を有効にします。

DescribeAccountKmsStatus

現在の Alibaba Cloud アカウントの KMS のステータスを照会します。

インスタンス管理

API

説明

ConnectKmsInstance

KMS インスタンスを有効にします。

GetKmsInstance

KMS インスタンスの詳細を照会します。

ListKmsInstances

KMS インスタンスのリストを照会します。

UpdateKmsInstanceBindVpc

KMS インスタンスに関連付けられている仮想プライベートクラウド (VPC) を更新します。

キー管理

キーの作成や削除、エイリアスの作成や削除など、以下の API 操作を呼び出すことでキーを管理します。

API

説明

CreateKey

キーを作成します。 KMS によって生成されたキーマテリアルを使用するか、独自のキーマテリアルをインポートできます。独自のキーマテリアルをインポートすることは、Bring Your Own Key (BYOK) と呼ばれます。

GetParametersForImport

キーマテリアルをキーにインポートするために使用されるパラメータを照会します。

ImportKeyMaterial

キーマテリアルをキーにインポートします。

EnableKey

キーのステータスを Enabled に変更します。

DisableKey

キーのステータスを Disabled に変更します。

DescribeKey

キーに関する情報を照会します。

ListKeys

リージョン内の Alibaba Cloud アカウント内のすべてのキーを照会します。

UpdateKeyDescription

キーの説明を更新します。

CreateAlias

エイリアスを作成し、キーにバインドします。

UpdateAlias

エイリアスにバインドされているキーの ID を更新します。

DeleteAlias

エイリアスを削除します。

ListAliases

リージョン内の Alibaba Cloud アカウント内のすべてのエイリアスを照会します。

ListAliasesByKeyId

キーにバインドされているエイリアスを照会します。

SetDeletionProtection

削除保護を有効または無効にします。

ScheduleKeyDeletion

キーの削除をスケジュールします。この操作を呼び出すと、キーは Pending Deletion 状態になります。キーは、指定された待機期間が経過すると自動的に削除されます。

CancelKeyDeletion

キーのスケジュールされた削除をキャンセルします。指定された待機期間が経過する前に、キーのスケジュールされた削除をキャンセルできます。スケジュールされた削除がキャンセルされると、キーは Enabled 状態に戻ります。

DeleteKeyMaterial

キーマテリアルを削除します。

重要

デフォルトキーとして使用されるカスタマーマスターキー (CMK) の外部キーマテリアルのみを削除できます。

CreateKeyVersion

バージョンを作成します。ソフトウェアキー管理タイプの KMS インスタンスの対称キーは、この操作をサポートしています。 KMS 外の非対称キーは、この操作をサポートしています。

DescribeKeyVersion

キーバージョンの情報を照会します。

ListKeyVersions

キーのすべてのバージョンを照会します。

UpdateRotationPolicy

キーのローテーションポリシーを更新します。キーに対して自動ローテーションが有効になっている場合、KMS は定期的にキーバージョンを自動的に生成します。

シークレット管理

API 操作を呼び出すことで、シークレットを管理、保護、配布、およびローテーションします。

API

説明

CreateSecret

シークレットを作成し、初期バージョンにシークレット値を保存します。

ListSecrets

リージョン内の Alibaba Cloud アカウント内のすべてのシークレットを照会します。

DescribeSecret

シークレットのメタデータを照会します。

UpdateSecret

シークレットのメタデータを更新します。

PutSecretValue

シークレットに新しいバージョンのシークレット値を保存します。

説明

汎用シークレットのみがこの操作をサポートしています。

UpdateSecretVersionStage

シークレットバージョンをマークするステージラベルを更新します。

説明

汎用シークレットのみがこの操作をサポートしています。

DeleteSecret

シークレットを削除するか、削除をスケジュールします。

RestoreSecret

削除がスケジュールされているシークレットを復元します。

ListSecretVersionIds

シークレットのすべてのバージョンを照会します。

GetRandomPassword

ランダムなパスワード文字列を照会します。

RotateSecret

シークレットを手動でローテーションします。

UpdateSecretRotationPolicy

シークレットのローテーションポリシーを更新します。

タグ管理

キーまたはシークレットに複数のタグを追加します。各タグはタグキーとタグ値で構成されます。

説明

TagResourceUntagResource、およびListResourceTags は、単一のリソースに対する操作を許可します。 TagResourcesUntagResources、およびListTagResources は、複数リソースに対するバッチ操作を有効にします。

API

説明

TagResource

キーまたはシークレットにタグを追加します。

UntagResource

キーまたはシークレットからタグを削除します。

ListResourceTags

キーのすべてのタグを照会します。

TagResources

複数のキーまたはシークレットにタグを追加します。

UntagResources

一度に複数のキーまたはシークレットからタグを削除します。

ListTagResources

一度に複数のキーまたはシークレットのすべてのタグまたは特定のタグを照会します。

アプリケーション管理

API

説明

CreateNetworkRule

KMS インスタンスへのアクセスを許可されているプライベート IP アドレスまたは CIDR ブロックを構成するためのアクセス制御ルールを作成します。

DeleteNetworkRule

ネットワークアクセスルールを削除します。

DescribeNetworkRule

ネットワークアクセスルールの詳細を照会します。

ListNetworkRules

ネットワークアクセスルールのリストを照会します。

UpdateNetworkRule

ネットワークアクセスルールを更新します。

CreatePolicy

アプリケーションがアクセスできるキーとシークレットを構成するためのアクセス許可ポリシーを作成します。

DeletePolicy

アクセス許可ポリシーを削除します。

DescribePolicy

アクセス許可ポリシーの詳細を照会します。

UpdatePolicy

アクセス許可ポリシーを更新します。

ListPolicies

アクセス許可ポリシーを照会します。

CreateApplicationAccessPoint

アプリケーションアクセスポイント (AAP) を作成します。

DeleteApplicationAccessPoint

AAP を削除します。

DescribeApplicationAccessPoint

AAP の詳細を照会します。

ListApplicationAccessPoints

AAP のリストを照会します。

UpdateApplicationAccessPoint

AAP に関する情報を更新します。

CreateClientKey

クライアントキーを作成します。

DeleteClientKey

クライアントキーを削除します。

ListClientKeys

クライアントキーのリストを照会します

GetClientKey

クライアントキーに関する情報を照会します。

ビジネス操作

重要

共有ゲートウェイを介して暗号操作を実行するには、最初にパブリックアクセスを有効にする必要があります。

暗号操作

对 はサポートされていることを示し、× はサポートされていないことを示します。

API 操作

説明

共有ゲートウェイ

専用ゲートウェイ

Encrypt

対称キーを使用してプレーンテキストを暗号化します。

对

对

GenerateDataKey

オンプレミスデータを暗号化するために使用されるランダムなデータキーを生成します。

对

对

GenerateDataKeyWithoutPlaintext

オンプレミスデータを暗号化するために使用できるランダムなデータキーを生成します。

对

对

ExportDataKey

特定の公開鍵を使用してデータキーを暗号化し、データキーをエクスポートします。

对

对

GenerateAndExportDataKey

データキーをランダムに生成し、KMS キーと公開鍵を使用してデータキーを暗号化します。この操作は、データキーと公開鍵の両方を使用して暗号化されたデータキーの暗号文を返します。

对

对

Decrypt

暗号文を復号します。

对

对

ReEncrypt

暗号文を再暗号化します。この操作を呼び出すと、KMS は別のキーを使用して、生成されたプレーンテキストまたはデータキーを再暗号化し、新しい暗号文を返します。

对

×

AsymmetricSign

非対称キーを使用して署名を生成します。

对

对

AsymmetricVerify

非対称キーを使用して署名を検証します。

对

对

AsymmetricDecrypt

非対称キーを使用してデータを復号します。

对

对

AsymmetricEncrypt

非対称キーを使用してデータを暗号化します。

对

对

GetPublicKey

非対称キーペアの公開鍵を取得します。公開鍵を使用して、ローカルデータを暗号化し、署名を検証できます。

对

对

シークレット値の取得

对 はサポートされていることを示し、× はサポートされていないことを示します。

API 操作

説明

共有ゲートウェイ

専用ゲートウェイ

GetSecretValue

シークレット値を取得します。

对

对

エンドポイント

共有ゲートウェイエンドポイント (KMS サービスエンドポイントとも呼ばれます)

  • 中国のリージョン

    リージョン名

    リージョン ID

    パブリックエンドポイント

    VPC アドレス

    中国 (杭州)

    cn-hangzhou

    kms.cn-hangzhou.aliyuncs.com

    kms-vpc.cn-hangzhou.aliyuncs.com

    中国 (上海)

    cn-shanghai

    kms.cn-shanghai.aliyuncs.com

    kms-vpc.cn-shanghai.aliyuncs.com

    中国 (深圳)

    cn-shenzhen

    kms.cn-shenzhen.aliyuncs.com

    kms-vpc.cn-shenzhen.aliyuncs.com

    中国 (河源)

    cn-heyuan

    kms.cn-heyuan.aliyuncs.com

    kms-vpc.cn-heyuan.aliyuncs.com

    中国 (広州)

    cn-guangzhou

    kms.cn-guangzhou.aliyuncs.com

    kms-vpc.cn-guangzhou.aliyuncs.com

    中国 (青島)

    cn-qingdao

    kms.cn-qingdao.aliyuncs.com

    kms-vpc.cn-qingdao.aliyuncs.com

    中国 (北京)

    cn-beijing

    kms.cn-beijing.aliyuncs.com

    kms-vpc.cn-beijing.aliyuncs.com

    中国 (張家口)

    cn-zhangjiakou

    kms.cn-zhangjiakou.aliyuncs.com

    kms-vpc.cn-zhangjiakou.aliyuncs.com

    中国 (フフホト)

    cn-huhehaote

    kms.cn-huhehaote.aliyuncs.com

    kms-vpc.cn-huhehaote.aliyuncs.com

    中国 (ウランチャブ)

    cn-wulanchabu

    kms.cn-wulanchabu.aliyuncs.com

    kms-vpc.cn-wulanchabu.aliyuncs.com

    中国 (成都)

    cn-chengdu

    kms.cn-chengdu.aliyuncs.com

    kms-vpc.cn-chengdu.aliyuncs.com

    中国 (香港)

    cn-hongkong

    kms.cn-hongkong.aliyuncs.com

    kms-vpc.cn-hongkong.aliyuncs.com

  • 中国以外のリージョン

    リージョン名

    リージョン ID

    パブリックエンドポイント

    VPC アドレス

    シンガポール

    ap-southeast-1

    kms.ap-southeast-1.aliyuncs.com

    kms-vpc.ap-southeast-1.aliyuncs.com

    マレーシア (クアラルンプール)

    ap-southeast-3

    kms.ap-southeast-3.aliyuncs.com

    kms-vpc.ap-southeast-3.aliyuncs.com

    インドネシア (ジャカルタ)

    ap-southeast-5

    kms.ap-southeast-5.aliyuncs.com

    kms-vpc.ap-southeast-5.aliyuncs.com

    フィリピン (マニラ)

    重要

    このリージョンにはゾーンが 1 つしか存在せず、サービスレベルアグリーメント (SLA) は保証されません。

    ap-southeast-6

    kms.ap-southeast-6.aliyuncs.com

    kms-vpc.ap-southeast-6.aliyuncs.com

    タイ (バンコク)

    重要

    このリージョンにはゾーンが 1 つしか存在せず、SLA は保証されません。

    ap-southeast-7

    kms.ap-southeast-7.aliyuncs.com

    kms-vpc.ap-southeast-7.aliyuncs.com

    日本 (東京)

    ap-northeast-1

    kms.ap-northeast-1.aliyuncs.com

    kms-vpc.ap-northeast-1.aliyuncs.com

    ドイツ (フランクフルト)

    eu-central-1

    kms.eu-central-1.aliyuncs.com

    kms-vpc.eu-central-1.aliyuncs.com

    英国 (ロンドン)

    eu-west-1

    kms.eu-west-1.aliyuncs.com

    kms-vpc.eu-west-1.aliyuncs.com

    米国 (シリコンバレー)

    us-west-1

    kms.us-west-1.aliyuncs.com

    kms-vpc.us-west-1.aliyuncs.com

    米国 (バージニア)

    us-east-1

    kms.us-east-1.aliyuncs.com

    kms-vpc.us-east-1.aliyuncs.com

    UAE (ドバイ)

    me-east-1

    kms.me-east-1.aliyuncs.com

    kms-vpc.me-east-1.aliyuncs.com

専用ゲートウェイエンドポイント (KMS インスタンスエンドポイントとも呼ばれます)

<KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com

<KMS_INSTANCE_ID> を実際の KMS インスタンス ID に置き換えます。

image

認証方式

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 ペアを作成する」をご参照ください。

  1. Alibaba Cloud アカウント、AliyunRAMFullAccess ポリシーがアタッチされた RAM 管理者、または AccessKey ペアを管理する権限が付与された RAM ユーザーを使用して、RAM コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[ID] > [ユーザー] を選択し、目的の RAM ユーザーをクリックします。

  3. [認証] タブで、[accesskey の作成] をクリックし、指示に従って作成を完了します。

    image

  4. RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。

    • 方法 1:ID ベースのポリシーによる

      KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。

    • 方法 2:リソースベースのポリシーによる

      KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

STS トークン

STS サービスを使用することにより、RAM ユーザーまたは RAM ロールに一時的なアクセス認証情報を発行できます。これにより、有効期間が制限されたポリシーで指定されたアクセス許可で KMS にアクセスできます。有効期限が過ぎると、認証情報は自動的に無効になります。

  1. Alibaba Cloud アカウントまたは管理権限を持つ RAM ユーザーを使用して、RAM コンソール にログオンします。

  2. RAM ユーザーを作成するか、RAM ロールを作成する

  3. RAM ユーザーに AliyunSTSAssumeRoleAccess 権限を付与するか、RAM ロールに AliyunSTSAssumeRoleAccess 権限を付与する

    image

  4. RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。

    • 方法 1:ID ベースのポリシーによる

      KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。

    • 方法 2:リソースベースのポリシーによる

      KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  1. RAM ユーザーまたは RAM ロールを使用して、STS サービスの AssumeRole インターフェースを呼び出し、一時的なアクセス認証情報を取得します。

RamRoleArn

RAM ユーザーまたはクラウドサービスは、長期アクセスキーを直接使用する代わりにロールをアサインすることで一時的なアクセス許可を取得できるため、キー漏洩のリスクを軽減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスは特定の RamRoleArn を持つロールを一時的にアサインできます。 RamRoleArn は、RAM ロールの ARN 情報です。タスクが完了すると、ロールのアクセス許可が取り消され、公開のリスクがさらに軽減されます。

  1. Alibaba Cloud アカウントまたは管理権限を持つ RAM ユーザーを使用して、RAM コンソール にログオンします。

  2. RAM ロールを作成する

  3. RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。

    • 方法 1:ID ベースのポリシーによる

      KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。

    • 方法 2:リソースベースのポリシーによる

      KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  4. RAM ロールの RamRoleArn を表示する

    RamRoleArn は acs:ram::$accountID:role/$roleName の形式に従います。ここで、$accountID は Alibaba Cloud アカウント、$roleName は RAM ロールの名前です。

    image

ECS インスタンス RAM ロールRAM ロール

ECS インスタンス RAM ロールは、ECS インスタンスにアタッチされる通常のサービスロールであり、インスタンス RAM ロールの信頼できるエンティティは ECS です。インスタンス RAM ロールを使用すると、AccessKey ペアを提供することなく、ECS インスタンス内から Security Token Service (STS) トークンを一時的なアクセス認証情報として取得できます。その後、一時的なアクセス認証情報を使用して、KMS の OpenAPI 操作を呼び出すことができます。

  1. RAM コンソール にログオンし、プリンシパルタイプが Alibaba Cloud サービスであるインスタンス RAM ロールを作成します。

    • プリンシパルタイプ:[クラウドサービス] を選択します。

    • プリンシパル名:[elastic Compute Service/ecs] を選択します。

  2. RAM ユーザーに KMS へのアクセス権を付与します。付与を完了するには、2 つの方法があります。

    • 方法 1:ID ベースのポリシーによる

      KMS は、RAM ユーザーにアタッチできるシステム定義のアクセス許可ポリシーを提供します。詳細については、「KMS のシステムポリシー」をご参照ください。 カスタムポリシーも作成できます。

    • 方法 2:リソースベースのポリシーによる

      KMS はリソースベースのポリシーをサポートしており、キーとシークレットへのアクセス許可を設定できます。これにより、KMS キーとシークレットの管理または使用を許可する Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

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

サポートされているプログラミング言語

次の表に、サポートされている言語と、それぞれの SDK ダウンロードリンクおよびリファレンスドキュメントを示します。

サポートされているプログラミング言語

V2.0 SDK(推奨)

V1.0 SDK(非推奨)

Java

Python

C++

  • ダウンロード:kms-20160120

  • ドキュメント:なし

PHP

.NET (C#)

Go

TypeScript

  • ダウンロード:kms20160120

  • ドキュメント:なし

なし

Swift

  • ダウンロード:kms-20160120

  • ドキュメント:なし

なし