シークレットポリシーは、Key Management Service (KMS) のシークレットに対するリソースベースのポリシーです。シークレットポリシーは、KMS シークレットへのアクセスを制御し、どの Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールが KMS シークレットを管理または使用する権限を持つかを決定するために使用されます。すべての KMS シークレットには、必ず 1 つのシークレットポリシーが必要です。このトピックでは、シークレットポリシーの詳細について説明します。
シークレットポリシーと RAM ポリシーの関係
シークレットポリシーを使用すると、シークレットが属する現在の Alibaba Cloud アカウント内の RAM ユーザーおよび RAM ロールを、シークレットの管理者またはユーザーとして指定できます。他の Alibaba Cloud アカウント内の RAM ユーザーおよび RAM ロールは、ユーザーとしてのみ指定できます。
RAM で ID ベースのポリシーを設定することもできます。このポリシーは、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが特定のシークレットを管理または使用できるかを決定します。詳細については、「RAM ユーザーへの権限付与」、「RAM ロールへの権限付与」、および「RAM を使用した KMS リソースへのアクセス管理」をご参照ください。
Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールが、Alibaba Cloud CLI、Alibaba Cloud 管理コンソール、または API オペレーションの呼び出しによって KMS リソースへのアクセスリクエストを送信すると、システムはポリシーベースの評価プロセスに基づいてリクエストを許可するかどうかを決定します。次の図に、そのプロセスを示します。
システムは、次の原則に基づいて最終結果を決定します:
結果 A または結果 B で `Allow` が返され、`Explicit Deny` が返されない場合、現在の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールはシークレットを管理または使用できます。
説明シークレットの現在の Alibaba Cloud アカウントとは、シークレットの作成に使用された Alibaba Cloud アカウントです。シークレットの作成者は、次のいずれかの方法で確認できます:
KMS コンソールにログインします。KMS コンソール で、資格情報管理 ページに移動し、シークレットの詳細ページで Created By の値を表示します。
API オペレーション経由: DescribeSecret 操作を呼び出します。 作成者は、応答の
Creatorパラメーターの値です。
結果 A と結果 B の両方で `Allow` が返された場合、他の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールはシークレットを使用できます。
次の情報にご注意ください:
現在の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールにシークレットの管理または使用を許可する場合、KMS でシークレットポリシーを設定するか、RAM でポリシーを設定して、RAM ユーザーまたは RAM ロールにシークレットの管理または使用を許可するだけで済みます。
他の Alibaba Cloud アカウントの RAM ユーザーおよび RAM ロールにシークレットの使用を許可する場合、KMS でシークレットポリシーを設定し、かつ RAM でポリシーを設定して、RAM ユーザーまたは RAM ロールにシークレットの使用を許可する必要があります。
注意事項
KMS インスタンス内のシークレットのみがシークレットポリシーをサポートします。シークレットの作成時にシークレットポリシーを設定するか、シークレットの作成後にシークレットポリシーを変更できます。詳細については、「汎用シークレットの管理と使用」および「シークレットポリシーの設定」をご参照ください。
別の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールに権限を付与すると、ご利用の KMS インスタンスのアクセス管理クォータが消費されます。消費されるクォータの量は、外部の Alibaba Cloud アカウントの数に基づきます。後でこのクロスアカウントアクセスを取り消し、インスタンスの他のリソースがそのアカウントと共有されていない場合、消費されたクォータは約 5 分後にリリースされます。
シークレットポリシーは、KMS のエンドポイントを使用してシークレットにアクセスする場合にのみ適用されます。KMS インスタンスのエンドポイントを使用してシークレットにアクセスする場合、KMS インスタンスに関連付けられているアプリケーションアクセスポイント (AAP) で設定された権限ポリシーが適用されます。
シークレットポリシーのコンテンツは、長さが 32,768 バイトを超えることはできず、JSON 形式である必要があります。
シークレットポリシーの説明
シークレットポリシーには、次の内容が含まれます:
Version:シークレットポリシーのバージョン。値を 1 に設定します。
Statement:シークレットポリシーのステートメント。各シークレットポリシーには 1 つ以上のステートメントが含まれます。各ステートメントには、次のパラメーターが含まれます。
Sid
オプション。カスタムステートメントのステートメント識別子。値は最大 128 文字で、文字、数字、および次の特殊文字を含めることができます: _ / + = . @ -
Effect
必須。ステートメント内の権限を許可するか拒否するかを指定します。有効な値は
AllowとDenyです。Principal
必須。ポリシーの権限付与のプリンシパル。次のプリンシパルがサポートされています:
現在の Alibaba Cloud アカウント。
現在の Alibaba Cloud アカウントの RAM ユーザーおよび RAM ロール。
他の Alibaba Cloud アカウントの RAM ユーザーおよび RAM ロール。
重要他の Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールにシークレットを使用する権限を付与する場合、その RAM ユーザーまたは RAM ロールが属する Alibaba Cloud アカウントを使用して、RAM でシークレットを使用する権限を付与する必要があります。
詳細については、「RAM を使用した KMS リソースへのアクセス管理」、「RAM ユーザーへの権限付与」、および「RAM ロールへの権限付与」をご参照ください。
Action
必須。許可または拒否する API オペレーション。値は `kms:` で始まる必要があります。次の内容は権限の範囲を説明しています。範囲外の権限を指定した場合、その権限は有効になりません。
Resource
必須。値は
*である必要があり、これは現在のシークレットを表します。Condition
オプション。ポリシーが有効になる条件を指定します。Condition 要素は、1 つ以上の条件を含む条件ブロックです。各条件は、条件演算子、条件キー、および条件値で構成されます。詳細については、「ポリシー要素」をご参照ください。
形式は
"Condition": {"condition operator": {"condition key": "condition value"}}です。