キーポリシーは、Key Management Service (KMS) のキーを管理または使用できる Alibaba Cloud アカウント、RAM ユーザー、RAM ロールを制御するリソースベースのポリシーです。KMS インスタンス内の各キーには、必ず 1 つのキーポリシーが必要です。このトピックでは、キーポリシーの詳細を説明します。
キーポリシーと RAM ポリシーの関係
ポリシーの説明
キーポリシーと RAM ポリシーは、異なる観点から KMS キーへのアクセスを制御します。RAM ユーザーまたは RAM ロールをキーポリシーに追加した後、それらの RAM ユーザーまたは RAM ロールに対する KMS の操作権限を管理するために、RAM ポリシーも設定できます。
[Key Policy]: 特定のキーにアタッチされたリソースベースのポリシーです。キーを管理または使用できるアイデンティティ (RAM ユーザー、RAM ロール、または Alibaba Cloud アカウント) を指定します。詳細については、「キーポリシーの設定」をご参照ください。
RAM ポリシー: RAM ユーザーまたは RAM ロールにアタッチされたアイデンティティベースのポリシーです。アイデンティティが実行できる KMS 操作を指定します。詳細については、「RAM ユーザー権限の管理」、「RAM ロールの権限管理」、および「カスタムポリシー」をご参照ください。
権限評価の優先順位
現在のアカウント (キー作成者アカウント) 配下の RAM ユーザーまたは RAM ロール:
評価原則:「いずれかの許可で十分」(OR ロジック)。次のいずれかの条件を満たし、かつ明示的な拒否がない場合にアクセスが許可されます。
説明明示的な拒否と暗黙的な拒否の詳細については、「RAM によるポリシーの評価方法」をご参照ください。
KMS のキーポリシーで、ユーザーまたはロールが明示的に許可されています。
RAM ポリシーで、ユーザーまたはロールが明示的に許可されています。
詳細ルール:
KMS のキーポリシー (リソースベース)
RAM ポリシー (アイデンティティベース)
評価結果
許可
未設定
許可
未設定
許可
許可
許可
許可
許可
許可
拒否
拒否
拒否
許可
拒否
未設定
未設定
拒否
別アカウント (クロスアカウント) 配下の RAM ユーザーまたは RAM ロール:
評価原則:「両方での許可が必要」(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:" で始まる必要があります。有効なのは次の操作のみです。このリストにない操作は無効です。
Resource
必須。ポリシーが適用されるターゲットリソースです。
Resourceの値は*のみ指定でき、現在の KMS キーを示します。条件
任意。ポリシーが有効になる条件です。条件要素 (条件ブロックとも呼ばれます) は、1 つ以上の条件句で構成されます。各句には、条件演算子、条件キー、条件値が含まれます。詳細については、「アクセス許可ポリシー要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。
よくある質問
キー作成者を確認するにはどうすればよいですか?
コンソール: KMS コンソールにログオンし、キー管理 ページでキーの詳細ページを開き、Created By を表示します。
API: DescribeKey API を呼び出します。レスポンス内の
Creatorフィールドがキー作成者を示します。