キーポリシーとは、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーを管理または使用できるかを制御するリソースベースのポリシーです。KMS インスタンス内の各キーには、1 つのキーポリシーを必ず 1 つだけ設定する必要があります。このトピックでは、キーポリシーの詳細情報を説明します。
キーポリシーと RAM ポリシーの関係
ポリシーの説明
キーポリシーと RAM ポリシーは、異なる観点から KMS キーへのアクセスを制御します。RAM ユーザーまたは RAM ロールをキーポリシーに追加した後、これらの RAM ユーザーまたは RAM ロールの KMS 操作権限を管理するために、RAM ポリシーを設定することもできます。
[Key Policy]:特定のキーにアタッチされるリソースベースのポリシーです。どのアイデンティティ (RAM ユーザー、RAM ロール、または Alibaba Cloud アカウント) がキーを管理または使用できるかを指定します。詳細については、「キーポリシーの設定」をご参照ください。
RAM ポリシー:RAM ユーザーまたは RAM ロールにアタッチされるアイデンティティベースのポリシーです。アイデンティティが実行できる KMS 操作を指定します。詳細については、「RAM ユーザー権限の管理」、「RAM ロールの権限管理」、および「カスタムポリシー」をご参照ください。
権限評価の優先順位
現在のアカウント (キー作成者アカウント) 配下の RAM ユーザーまたは RAM ロール:
評価原則:"Any Allow is sufficient" (OR ロジック)。次のいずれかの条件が満たされ、かつ明示的な拒否がない場合にアクセスが許可されます。
説明明示的な拒否および暗黙的な拒否の詳細については、「RAM によるポリシー評価の仕組み」をご参照ください。
KMS キーポリシーで、ユーザーまたはロールが明示的に許可されている。
RAM ポリシーで、ユーザーまたはロールが明示的に許可されている。
詳細ルール:
KMS キーポリシー (リソースベース)
RAM ポリシー (アイデンティティベース)
評価結果
許可
未設定
許可
未設定
許可
許可
許可
許可
許可
許可
拒否
拒否
拒否
許可
拒否
未設定
未設定
拒否
別のアカウント (クロスアカウント) 配下の RAM ユーザーまたは RAM ロール:
評価原則:"Both must allow" (AND ロジック)。次の両方の条件が満たされた場合にのみアクセスが許可されます。
KMS キーポリシーで、外部のユーザーまたはロール (または外部アカウント) が明示的に許可されている。
RAM ポリシーで、外部のユーザーまたはロールによる KMS 操作の呼び出しが明示的に許可されている。
詳細ルール:
KMS キーポリシー (リソースベース)
RAM ポリシー (アイデンティティベース)
評価結果
許可
拒否
拒否
拒否
許可
拒否
許可
許可
許可
未設定
未設定
拒否
使用上の注意
キーポリシーは、KMS インスタンス内のキーにのみ適用されます。キーの作成時にキーポリシーを設定することも、後から変更することもできます。詳細については、「キーの作成」および「キーポリシーの設定」をご参照ください。
他の Alibaba Cloud アカウントの RAM ユーザーまたはロールを承認すると、Alibaba Cloud アカウント数に基づいて算出される KMS インスタンスの 使用中のマルチアカウント数 クォータを使用します。クロスアカウントの承認を取り消し、そのアカウントとインスタンス間でリソース共有がなくなった場合は、クォータを確認する前に約 5 分お待ちください。クォータが解放されます。
キーポリシーは、KMS サービスエンドポイント経由でキーにアクセスする場合のアクセス制御にのみ適用されます。KMS インスタンスエンドポイント経由でキーにアクセスする場合、アクセスはアプリケーションアクセスポイント (AAP) に設定されたアクセス許可ポリシーに依存します。
キーポリシーは JSON 形式で、長さは 32,768 バイトを超えることはできません。
キーポリシーの構造
完全なキーポリシーには、次の要素が含まれます:
Version:キーポリシーのバージョンです。現在、バージョン 1 のみがサポートされています。
ステートメント:キーポリシーのステートメントです。各キーポリシーには、1 つ以上のステートメントが含まれます。各ステートメントには、次のパラメーターが含まれます。
Sid
任意。カスタムのステートメント識別子です。識別子は最大 128 文字で、英大文字 (A-Z)、英小文字 (a-z)、数字 (0-9)、および次の特殊文字を使用できます:_、/、+、=、.、@、-
エフェクト
必須。ステートメント内のアクションを許可するか拒否するかを指定します。有効な値:
AllowまたはDeny。プリンシパル
必須。ポリシーの適用対象となるアイデンティティです。次のいずれかを指定できます:
キーを所有するアカウントである、現在の Alibaba Cloud アカウント。
現在の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロール。
別の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロール。
重要別の Alibaba Cloud アカウントの RAM ユーザーまたはロールを承認した後は、それらの RAM アイデンティティを管理する Alibaba Cloud アカウントを使用して、RAM 側でキーの使用権限を付与する必要があります。そうしないと、RAM アイデンティティはキーを使用できません。
詳細については、「カスタムポリシー」、「RAM ユーザー権限の管理」、および「RAM ロールの権限管理」をご参照ください。
アクション
必須。許可または拒否する API 操作です。値は "kms:" で始まる必要があります。有効な操作は次の操作のみです。このリストにない操作は有効になりません。
リソース
必須。ポリシーの適用対象となるリソースです。値を
*またはキーの ARN に設定します。*は現在の KMS キーを示します。特定のキー ARN を指定して、ポリシーのスコープを絞り込むこともできます。条件
任意。ポリシーが有効になる条件です。条件要素 (条件ブロックとも呼ばれます) は、1 つ以上の条件句で構成されます。各条件句には、条件演算子、条件キー、および条件値が含まれます。詳細については、「アクセス許可ポリシーの要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。
よくある質問
キー作成者を確認するにはどうすればよいですか?
コンソール: KMS コンソールにログオンします。キー管理 ページで、キーの詳細ページを開き、Created By を確認します。
API:DescribeKey API を呼び出します。レスポンス内の
Creatorフィールドがキー作成者を示します。