シークレットポリシーはリソースベースのポリシーであり、どの Alibaba Cloud アカウント、RAM ユーザー、RAM ロールが Key Management Service (KMS) シークレットを管理または使用できるかを制御します。KMS インスタンス内の各シークレットには、シークレットポリシーが 1 つだけ必要です。本トピックでは、シークレットポリシーについて詳しく説明します。
シークレットポリシーと RAM ポリシーの関係
ポリシーの説明
シークレットポリシーと RAM ポリシーは、さまざまな側面から KMS シークレットへのアクセスを制御します。シークレットポリシーに RAM ユーザーまたは RAM ロールを追加した後、RAM ポリシーを設定して、これらの RAM ユーザーまたは RAM ロールの KMS シークレットの操作権限を管理することもできます。
シークレットポリシー:特定のシークレットにアタッチされるリソースベースのポリシーです。どのアイデンティティ (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 ユーザーまたはロールを承認すると、KMS インスタンスの [Access Management Quota] が消費されます。クォータは Alibaba Cloud アカウントの数に基づいて計算されます。クロスアカウント承認を取り消し、インスタンスがそのアカウントとリソースを共有しなくなった場合、消費されたクォータがそれに応じて減少するまで約 5 分間お待ちください。
シークレットポリシーは、KMS サービスエンドポイント経由でシークレットにアクセスする場合のアクセス制御にのみ適用されます。KMS インスタンスエンドポイント経由でシークレットにアクセスする場合、アクセスはアプリケーションアクセスポイント (AAP) で設定された権限ポリシーに依存します。
シークレットポリシーは JSON 形式である必要があり、サイズは 32,768 バイトを超えることはできません。
シークレットポリシーの構造
完全なシークレットポリシーには、次の要素が含まれます:
Version:シークレットポリシーのバージョン。バージョン 1 のみがサポートされています。Statement:シークレットポリシーには 1 つ以上のステートメントが含まれます。各ステートメントには、次のパラメーターが含まれます:Sidオプション。カスタムのステートメント識別子です。識別子の長さは最大 128 文字で、大文字 (A~Z) 、小文字 (a~z) 、数字 (0~9) 、および次の特殊文字を含めることができます:
_ / + = . @ -Effect必須。ステートメント内のアクションを許可するか拒否するかを指定します。有効な値は
AllowとDenyです。Principal必須。ポリシーが適用されるアイデンティティ。次のいずれかを指定できます:
現在の Alibaba Cloud アカウント (シークレットを所有するアカウント) 。
現在の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロール。
別の Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロール。
重要別の Alibaba Cloud アカウントの RAM ユーザーまたはロールを承認した後、その Alibaba Cloud アカウントを使用して、RAM サービスでシークレットを使用する権限を RAM ユーザーまたはロールに付与する必要もあります。そうしないと、RAM アイデンティティはシークレットを使用できません。
詳細については、「KMS のカスタムポリシーリファレンス」、「RAM ユーザー権限の管理」、および「RAM ロールの権限管理」をご参照ください。
Action必須。許可または拒否する API 操作。値は
kms:で始まる必要があります。次の操作のみが有効です。このリスト以外の操作は有効になりません。Resource必須。ポリシーが適用されるターゲットリソース。
Resourceの値は、現在の KMS シークレットを示す*のみです。条件
任意。ポリシーが有効になる条件です。条件要素 (条件ブロックとも呼ばれます) は、1 つ以上の条件句で構成されます。各句には、条件演算子、条件キー、条件値が含まれます。詳細については、「アクセス許可ポリシー要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。
よくある質問
シークレット作成者を表示するにはどうすればよいですか。
コンソール: KMS コンソールにログオンします。資格情報管理 ページで、シークレット詳細ページを開き、Created By フィールドを表示します。
OpenAPI :DescribeSecret API を呼び出します。レスポンスの
Creatorフィールドは、シークレットの作成者を示します。