キーポリシーは、どの Alibaba Cloud アカウント、RAM (Resource Access Management) ユーザー、RAM ロールが KMS キーを管理または使用できるかを制御するリソースベースのポリシーです。KMS インスタンス内の各キーには、厳密に 1 つのキーポリシーが必要です。このトピックでは、キーポリシーについて詳しく説明します。
キーポリシーと RAM ポリシーの関係
キーポリシーを使用すると、現在の Alibaba Cloud アカウント (キーを所有するアカウント) 内の RAM ユーザーおよび RAM ロールを管理者またはキーユーザーとして指定できます。また、他の Alibaba Cloud アカウントの RAM ユーザーおよび RAM ロールをキーユーザーとして指定することもできます。
KMS でキーポリシーを設定するだけでなく、RAM でアイデンティティベースのポリシーを設定して、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが特定のキーを管理または使用できるかを指定することもできます。詳細については、「RAM ユーザー権限の管理」、「RAM ロールの権限管理」、「カスタムポリシー」をご参照ください。
Alibaba Cloud アカウントまたは RAM アイデンティティ (RAM ユーザーまたは RAM ロール) が Alibaba Cloud コンソール、OpenAPI、CLI を通じて KMS リソースへのアクセスをリクエストすると、システムは適用可能なポリシーを評価して、リクエストを許可するか拒否するかを決定します。次のフローチャートは、評価プロセスを示しています。
評価結果は、次の原則に従います。
現在の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールの場合:評価結果 A または評価結果 B のいずれかに許可が含まれ、明示的な拒否がない場合、アクセスが許可されます。
説明現在の Alibaba Cloud アカウントは、キーを作成したアカウントです。キー作成者は、次のいずれかの方法で確認できます:
コンソール: KMS コンソールにログインします。 キー管理 ページで、キー詳細ページを開き、Created By フィールドを表示します。
API:DescribeKey API を呼び出します。レスポンスの
Creatorフィールドがキー作成者を示します。
明示的な拒否と暗黙的な拒否の詳細については、「ポリシーの評価論理」をご参照ください。
別の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールの場合:評価結果 A と評価結果 B の両方が許可である場合にのみ、アクセスが許可されます。
評価プロセスに基づいて、さまざまなシナリオに必要な設定を決定できます。
現在の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールにキーの管理または使用を許可するには、KMS でキーポリシーを設定するか、RAM ポリシーを設定して必要な権限を付与する必要があります。
別の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールにキーの使用を許可するには、KMS でキーポリシーを設定し、かつ RAM ポリシーを設定して権限を付与する必要があります。
注意事項
キーポリシーは、KMS インスタンス内のキーにのみ適用されます。キーポリシーは、キー作成時に設定することも、作成後に変更することもできます。詳細については、「キーの作成」および「キーポリシーの設定」をご参照ください。
他の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールに権限を付与すると、KMS インスタンスの Accounts in Use クォータが消費されます。クォータは Alibaba Cloud アカウントの数に基づいて計算されます。アカウント間の権限付与を取り消し、インスタンスがそのアカウントとリソースを共有しなくなった場合、約 5 分後にクォータが返却されます。
キーポリシーは、KMS サービスエンドポイント経由でキーにアクセスする場合にのみ、アクセス制御に適用されます。KMS インスタンスエンドポイント経由でキーにアクセスする場合、アクセスはアプリケーションアクセスポイント (AAP) で設定されたアクセス許可ポリシーに従います。
キーポリシーは JSON 形式である必要があり、サイズは 32,768 バイトを超えることはできません。
キーポリシーの構造
完全なキーポリシーには、次の要素が含まれます。
Version:キーポリシーのバージョン。バージョン 1 のみサポートされています。
Statement:キーポリシーには、1 つ以上のステートメントが含まれます。各ステートメントには、次のパラメーターが含まれます。
Sid
オプション。カスタムステートメント識別子。識別子は最大 128 文字で、大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、および次の特殊文字を含めることができます:_ / + = . @ -
Effect
必須。ステートメント内のアクションを許可するか拒否するかを指定します。有効な値:
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
必須。ポリシーが適用される対象リソース。値には
*またはキーの ARN を設定します。値*は現在の KMS キーを示します。特定のキー ARN を指定して、ポリシーのスコープを絞り込むこともできます。条件
オプション。ポリシーが有効になる条件。条件要素 (条件ブロックとも呼ばれます) は、1 つ以上の条件句で構成されます。各句には、条件演算子、条件キー、条件値が含まれます。詳細については、「権限ポリシー要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。