キーポリシーは、KMS キーにアタッチされるリソースベースのポリシーであり、すべての KMS キーには必ず 1 つのキーポリシーが設定されている必要があります。キーポリシーは、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールが KMS キーを管理または使用するための権限を制御します。
キーポリシーは、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールに対してアクセス権を付与します。現在のアカウント内では、プリンシパルをキー管理者またはキー使用者として指定できます。他の Alibaba Cloud アカウントからのプリンシパルは、キー使用者としてのみ指定可能です。
このドキュメントの内容:
キーポリシーと RAM ポリシーの連携動作
キーポリシーは、ID ベースの RAM ポリシーと併存します。両者は連携して、KMS キーへのアクセス要求が許可されるかどうかを判断します。
評価結果は、リクエストの発信元によって異なります:
同一アカウントアクセス:キー所有者アカウントのプリンシパルは、結果 A または結果 B のいずれかで Allow が返され、Explicit Deny が返されない場合に、キーを管理または使用できます。KMS のキーポリシーまたは RAM ポリシーのいずれかがあれば十分で、両方とも必要ではありません。
クロスアカウントアクセス:他のアカウントからのプリンシパルがキーを使用できるのは、Result A および Result B の両方で「Allow」が返される場合のみです。この場合、KMS 内のキーポリシーと外部アカウント内の RAM ポリシーの両方が必須となります。
キー所有アカウントとは、そのキーを作成した Alibaba Cloud アカウントのことです。作成者を確認するには、KMS コンソールを開き、キーの詳細ページに移動して 作成者 を確認してください。あるいは、DescribeKey を呼び出して Creator フィールドを確認してください。Explicit Deny および Implicit Deny の詳細については、「ポリシー評価プロセス」をご参照ください。
クロスアカウントアクセスの付与
クロスアカウントアクセスの付与には、以下の 2 つの手順が必要であり、どちらも必須です:
KMS 内で実行:キーポリシー内のプリンシパルとして外部の RAM ユーザーまたは RAM ロールを追加し、必要な使用権限を付与します。
外部アカウント内で実行:当該アカウントを使用して、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"
}