シークレットポリシーは、どの Alibaba Cloud アカウント、RAM ユーザー、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 のいずれかが Allow であり、かつ明示的に拒否されていない場合にアクセスが許可されます。
説明現在の Alibaba Cloud アカウントとは、シークレットを作成したアカウントです。シークレットの作成者は、次のいずれかの方法で確認できます:
コンソール: KMS コンソールにログオンします。資格情報管理 ページで、シークレット詳細ページを開き、Created By フィールドを表示します。
API:DescribeSecret API を呼び出します。レスポンスの
Creatorフィールドがシークレットの作成者を示します。
別の Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロールの場合:評価結果 A と評価結果 B の両方が Allow の場合にのみアクセスが許可されます。
評価プロセスに基づいて、さまざまなシナリオで必要な設定を判断できます:
現在の Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロールにシークレットの管理または使用を許可するには、KMS のシークレットポリシーまたは RAM 権限ポリシーのいずれかを設定して、必要な権限を付与します。
別の Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロールにシークレットの使用を許可するには、KMS のシークレットポリシーと RAM 権限ポリシーの両方を設定して権限を付与する必要があります。
注意事項
シークレットポリシーは、KMS インスタンス内のシークレットにのみ適用されます。シークレットポリシーは、シークレットの作成時に設定することも、後で変更することもできます。詳細については、「シークレットの管理と使用」および「シークレットポリシーの設定」をご参照ください。
他の Alibaba Cloud アカウントの RAM ユーザーまたはロールを認可すると、KMS インスタンスの アクセス管理クォータ が消費されます。クォータは Alibaba Cloud アカウントの数に基づいて計算されます。クロスアカウント認可を取り消し、インスタンスがそのアカウントとリソースを共有しなくなった場合、消費されたクォータがそれに応じて減少するまでに約 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 ユーザーまたはロールを認可した後、その Alibaba Cloud アカウントを使用して、RAM でシークレットを使用する権限を RAM ユーザーまたはロールに付与する必要もあります。そうしないと、RAM アイデンティティはシークレットを使用できません。
詳細については、「KMS のカスタムポリシーリファレンス」、「RAM ユーザーの権限管理」、および「RAM ロールの権限管理」をご参照ください。
アクション
必須。許可または拒否する API 操作。値は "kms:" で始まる必要があります。次の操作のみが有効です。このリスト以外の操作は無効です。
リソース
必須。ポリシーが適用される対象リソースです。値を
*またはシークレットの ARN に設定します。値*は、現在の KMS シークレットを示します。特定のシークレット ARN を指定して、ポリシースコープを絞り込むこともできます。条件
オプション。ポリシーが有効になる条件。条件要素 (条件ブロックとも呼ばれます) は、1 つ以上の条件句で構成されます。各句には、条件演算子、条件キー、条件値が含まれます。詳細については、「権限ポリシー要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。