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

Key Management Service:概要

最終更新日:Apr 01, 2026

キーポリシーは、KMS キーにアタッチされるリソースベースのポリシーであり、すべての KMS キーには必ず 1 つのキーポリシーが設定されている必要があります。キーポリシーは、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールが KMS キーを管理または使用するための権限を制御します。

キーポリシーは、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールに対してアクセス権を付与します。現在のアカウント内では、プリンシパルをキー管理者またはキー使用者として指定できます。他の Alibaba Cloud アカウントからのプリンシパルは、キー使用者としてのみ指定可能です。

このドキュメントの内容:

キーポリシーと RAM ポリシーの連携動作

キーポリシーは、ID ベースの RAM ポリシーと併存します。両者は連携して、KMS キーへのアクセス要求が許可されるかどうかを判断します。

image

評価結果は、リクエストの発信元によって異なります:

  • 同一アカウントアクセス:キー所有者アカウントのプリンシパルは、結果 A または結果 B のいずれかで Allow が返され、Explicit Deny が返されない場合に、キーを管理または使用できます。KMS のキーポリシーまたは RAM ポリシーのいずれかがあれば十分で、両方とも必要ではありません。

  • クロスアカウントアクセス:他のアカウントからのプリンシパルがキーを使用できるのは、Result A および Result B の両方で「Allow」が返される場合のみです。この場合、KMS 内のキーポリシーと外部アカウント内の RAM ポリシーの両方が必須となります。

説明

キー所有アカウントとは、そのキーを作成した Alibaba Cloud アカウントのことです。作成者を確認するには、KMS コンソールを開き、キーの詳細ページに移動して 作成者 を確認してください。あるいは、DescribeKey を呼び出して Creator フィールドを確認してください。Explicit Deny および Implicit Deny の詳細については、「ポリシー評価プロセス」をご参照ください。

クロスアカウントアクセスの付与

クロスアカウントアクセスの付与には、以下の 2 つの手順が必要であり、どちらも必須です:

  1. KMS 内で実行:キーポリシー内のプリンシパルとして外部の RAM ユーザーまたは RAM ロールを追加し、必要な使用権限を付与します。

  2. 外部アカウント内で実行:当該アカウントを使用して、RAM ユーザーまたは RAM ロールに KMS キーへのアクセスを許可する RAM ポリシーを付与します。

重要

いずれかのステップが欠落している場合、クロスアカウントリクエストは拒否されます。詳細については、「カスタムポリシー」、「RAM ユーザーへの権限付与」、および「RAM ロールへの権限付与」をご参照ください。

使用制限と制約

  • キーポリシーは、KMS インスタンス内のキーにのみ適用されます。キー作成時にキーポリシーを設定するか、その後で変更してください。詳細については、「キーの管理」および「キーポリシーの設定」をご参照ください。

  • キーポリシーは、KMS エンドポイントを経由してキーにアクセスする場合にのみ適用されます。KMS インスタンスのエンドポイントを使用する場合は、関連付けられたアプリケーションアクセスポイント(AAP)に設定された権限ポリシーが適用されます。

  • クロスアカウントアクセスの付与は、KMS インスタンスの アクセス管理クォータ を消費します。これは、外部の Alibaba Cloud アカウント数に基づいて計算されます。クロスアカウントアクセス権限を取り消した後、KMS インスタンスのリソースが他の Alibaba Cloud アカウントと共有されていない場合、クォータが復元されるまで約 5 分待ちます。

  • キーポリシーは JSON 形式である必要があり、サイズは 32,768 バイトを超えてはなりません。

キーポリシーの構造

キーポリシーには、Version および 1 つ以上の Statement エントリが含まれます。

  • `Version`:値は 1 に設定します。

  • `Statement`:各ステートメントには、以下のフィールドが含まれます。

ステートメントのフィールド

フィールド必須説明
Sidいいえステートメント識別子。最大 128 文字(英字、数字、および _ / + = . @ - のみ使用可能)。
EffectはいAllow または Deny
Principalはいアクセス権を付与するアカウント、RAM ユーザー、または RAM ロール。
Actionはい許可または拒否する KMS API オペレーション。先頭は必ず kms: で始める必要があります。
Resourceはい現在のキーを対象とする場合は * を設定します。
Conditionいいえポリシーが有効となる条件。形式: "Condition": {"condition operator": {"condition key": "condition value"}}。詳細については、「ポリシー要素」および「条件キー」をご参照ください。

サポートされるプリンシパル

Principal フィールドには、以下の値を指定できます:

  • 現在の Alibaba Cloud アカウント(acs:ram::<account-id>:*

  • 現在のアカウント内の RAM ユーザーおよび RAM ロール

  • 他の Alibaba Cloud アカウント内の RAM ユーザーおよび RAM ロール(使用権限のみ)

操作権限の範囲

以下の範囲内の操作のみが有効になります。この範囲外の操作は無視されます。

キー管理操作 — 管理者向け:

"Action": [
    "kms:List*",
    "kms:Describe*",
    "kms:Create*",
    "kms:Enable*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Set*",
    "kms:Update*",
    "kms:Delete*",
    "kms:Cancel*",
    "kms:TagResource",
    "kms:UntagResource",
    "kms:ImportKeyMaterial",
    "kms:ScheduleKeyDeletion"
]

キー使用操作 — 暗号操作を実行するアプリケーションおよびサービス向け:

"Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:GenerateAndExportDataKey",
    "kms:AsymmetricEncrypt",
    "kms:AsymmetricDecrypt",
    "kms:DescribeKey",
    "kms:DescribeKeyVersion",
    "kms:ListKeyVersions",
    "kms:ListAliasesByKeyId",
    "kms:TagResource"
]

キーポリシーの例

以下のポリシーは、119285303511**** アカウント内のキーに適用されます。このポリシーは以下を付与します:

  • 全アカウントに対する完全な権限(kms:*

  • 同一アカウント内の key_ramuser1 に対する管理権限

  • 同一アカウント内の key_ramuser2 および 190325303126**** アカウント内の key_ramuser3 に対する使用権限

{
    "Statement": [
        {
            "Sid": "kms default key policy",
            "Action": [
                "kms:*"
            ],
            "Effect": "Allow",
            "Principal": {
                "RAM": [
                    "acs:ram::119285303511****:*"
                ]
            },
            "Resource": [
                "*"
            ]
        },
        {
            "Action": [
                "kms:List*",
                "kms:Describe*",
                "kms:Create*",
                "kms:Enable*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Set*",
                "kms:Update*",
                "kms:Delete*",
                "kms:Cancel*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ImportKeyMaterial",
                "kms:ScheduleKeyDeletion"
            ],
            "Effect": "Allow",
            "Principal": {
                "RAM": [
                    "acs:ram::119285303511****:user/key_ramuser1"
                ]
            },
            "Resource": [
                "*"
            ]
        },
        {
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:GenerateAndExportDataKey",
                "kms:AsymmetricEncrypt",
                "kms:AsymmetricDecrypt",
                "kms:DescribeKey",
                "kms:DescribeKeyVersion",
                "kms:ListKeyVersions",
                "kms:ListAliasesByKeyId",
                "kms:TagResource"
            ],
            "Effect": "Allow",
            "Principal": {
                "RAM": [
                    "acs:ram::119285303511****:user/key_ramuser2",
                    "acs:ram::190325303126****:user/key_ramuser3"
                ]
            },
            "Resource": [
                "*"
            ]
        }
    ],
    "Version": "1"
}

次のステップ