Resource Access Management (RAM) は、KMS API オペレーションを呼び出すことができるユーザーと、アクセスできるリソースを制御します。RAM ユーザーに KMS へのアクセスを付与するには、許可される正確なオペレーションとリソースを指定するカスタム RAM ポリシーを作成し、そのポリシーをユーザーにアタッチします。
RAM には、ビジュアル編集とドキュメント編集の 2 つの編集モードがあります。KMS の場合は、ドキュメント編集モードを使用します。ビジュアル編集では、すべての KMS リソースとすべてのオペレーションを選択することしかできず、最小権限構成をサポートしていません。
前提条件
開始する前に、次のことを確認してください。
RAM コンソールへの管理者アクセス権を持つ Alibaba Cloud アカウント (root ユーザー)
権限を付与する RAM ユーザー
ポリシー構造
KMS RAM ポリシーステートメントには、最大 4 つの要素が含まれています。
| 要素 | 必須 | 説明 |
|---|---|---|
| エフェクト | はい | Allow または Deny |
| アクション | はい | kms:<api-name> フォーマットの 1 つ以上の KMS API オペレーション |
| リソース | はい | ターゲットリソースの Alibaba Cloud Resource Name (ARN) |
| 条件 | いいえ | 時間ベースの制限などの追加の制約 |
付録では、サポートされているすべてのアクション、リソース ARN フォーマット、および条件キーをリストしています。
RAM ユーザーに KMS へのアクセスを付与する
ステップ 1: カスタムポリシーの作成
Alibaba Cloud アカウントを使用して RAM コンソールにログインします。
左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
「ポリシーの作成」ページで、「JSON」タブをクリックします。
デフォルトポリシーコンテンツをカスタムポリシードキュメントに置き換えます。次の例では、特定のキーを使用して暗号化および復号する権限を RAM ユーザーに付与しますが、そのキーを管理または削除する権限は付与しません。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", // キーを使用してデータを暗号化する "kms:Decrypt", // キーを使用してデータを復号する "kms:GenerateDataKey" // エンベロープ暗号化用のデータキーを生成する ], "Resource": "acs:kms:${region}:${account}:key/${key-id}" } ] }「
${region}」、「${account}」、および「${key-id}」を実際の値に置き換えます。アカウント内のすべてのキーを対象とするには、acs:kms:*:${account}:key/*を使用します。[最適化]をクリックして、ポリシードキュメントを検証し、フォーマットします。(任意)
[OK] をクリックします。
ポリシー名と説明を入力し、[OK] をクリックします。
ステップ 2: ポリシーを RAM ユーザーにアタッチする
左側のナビゲーションウィンドウで、[アイデンティティ] > [ユーザー] を選択します。
[ユーザー] ページで、対象の RAM ユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。
「[権限の付与]」パネルで、以下のパラメーターを設定し、[権限を付与] をクリックします。
パラメーター 説明 リソーススコープ [アカウント] を選択します。KMS はリソースグループ機能をサポートしていません。 プリンシパル 権限を付与する RAM ユーザー。選択したユーザーがデフォルトで表示されます。必要に応じて変更します。 ポリシー ステップ 1 で作成したカスタムポリシーを選択します。
付録: サポートされているリソース、アクション、および条件
リソース
KMS は 6 つのリソースタイプを定義します。ターゲットリソースの ARN を使用して、RAM ポリシーの Resource 要素を設定します。
キーの ARN を見つけるには:
KMS コンソールにログインします。上部のナビゲーションバーで、リージョンを選択します。左側のナビゲーションウィンドウで、[リソース] > [キー] を選択します。
[キー] タブでキーを見つけ、[操作] 列の [詳細] をクリックします。 詳細ページに ARN が表示されます。

${region}と${account}を、実際のリージョンと Alibaba Cloud アカウント ID に置き換えます。${region}は、アスタリスク (*) ワイルドカードをサポートし、サポートされているすべてのリージョンを対象に指定できます。
| リソースタイプ | ARN |
|---|---|
| キーコンテナ | acs:kms:${region}:${account}:key |
| シークレットコンテナ | acs:kms:${region}:${account}:secret |
| エイリアスコンテナ | acs:kms:${region}:${account}:alias |
| キー | acs:kms:${region}:${account}:key/${key-id} |
| シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| エイリアス | acs:kms:${region}:${account}:alias/${alias-name} |
ワイルドカードの例
キーの場合:
acs:kms:${region}:${account}:key/*— アカウント内の特定のリージョンにあるすべてのキーacs:kms:*:${account}:key/*— アカウント内のすべてのリージョンにあるすべてのキー
シークレットの場合:
acs:kms:${region}:${account}:secret/*— アカウント内の特定のリージョンにあるすべてのシークレットacs:kms:${region}:${account}:secret/prefix*— 名前がprefixで始まるすべてのシークレット
アクション
KMS は、アクセス制御を必要とする各 API オペレーションに対してアクションを定義します。アクションは kms:<api-name> フォーマットに従います。
DescribeRegions オペレーションはアクセス制御を必要としません。RAM 認証に合格した後、任意の Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールによって呼び出すことができます。キー関連の API オペレーション
| オペレーション | アクション | リソースタイプ | ARN フォーマット |
|---|---|---|---|
| ListKeys | kms:ListKeys | キーコンテナ | acs:kms:${region}:${account}:key |
| CreateKey | kms:CreateKey | キーコンテナ | acs:kms:${region}:${account}:key |
| DescribeKey | kms:DescribeKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| UpdateKeyDescription | kms:UpdateKeyDescription | キー | acs:kms:${region}:${account}:key/${key-id} |
| EnableKey | kms:EnableKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| DisableKey | kms:DisableKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| ScheduleKeyDeletion | kms:ScheduleKeyDeletion | キー | acs:kms:${region}:${account}:key/${key-id} |
| CancelKeyDeletion | kms:CancelKeyDeletion | キー | acs:kms:${region}:${account}:key/${key-id} |
| GetParametersForImport | kms:GetParametersForImport | キー | acs:kms:${region}:${account}:key/${key-id} |
| ImportKeyMaterial | kms:ImportKeyMaterial | キー | acs:kms:${region}:${account}:key/${key-id} |
| DeleteKeyMaterial | kms:DeleteKeyMaterial | キー | acs:kms:${region}:${account}:key/${key-id} |
| ListAliasesByKeyId | kms:ListAliasesByKeyId | キー | acs:kms:${region}:${account}:key/${key-id} |
| CreateKeyVersion | kms:CreateKeyVersion | キー | acs:kms:${region}:${account}:key/${key-id} |
| DescribeKeyVersion | kms:DescribeKeyVersion | キー | acs:kms:${region}:${account}:key/${key-id} |
| ListKeyVersions | kms:ListKeyVersions | キー | acs:kms:${region}:${account}:key/${key-id} |
| UpdateRotationPolicy | kms:UpdateRotationPolicy | キー | acs:kms:${region}:${account}:key/${key-id} |
| Encrypt | kms:Encrypt | キー | acs:kms:${region}:${account}:key/${key-id} |
| Decrypt | kms:Decrypt | キー | acs:kms:${region}:${account}:key/${key-id} |
| ReEncrypt | kms:ReEncryptFrom (ソースキー) および kms:ReEncryptTo (送信先キー) | キー | acs:kms:${region}:${account}:key/${key-id} |
| GenerateDataKey | kms:GenerateDataKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| GenerateDataKeyWithoutPlaintext | kms:GenerateDataKeyWithoutPlaintext | キー | acs:kms:${region}:${account}:key/${key-id} |
| ExportDataKey | kms:ExportDataKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| GenerateAndExportDataKey | kms:GenerateAndExportDataKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| AsymmetricSign | kms:AsymmetricSign | キー | acs:kms:${region}:${account}:key/${key-id} |
| AsymmetricVerify | kms:AsymmetricVerify | キー | acs:kms:${region}:${account}:key/${key-id} |
| AsymmetricEncrypt | kms:AsymmetricEncrypt | キー | acs:kms:${region}:${account}:key/${key-id} |
| AsymmetricDecrypt | kms:AsymmetricDecrypt | キー | acs:kms:${region}:${account}:key/${key-id} |
| GetPublicKey | kms:GetPublicKey | キー | acs:kms:${region}:${account}:key/${key-id} |
| ListAliases | kms:ListAliases | エイリアスコンテナ | acs:kms:${region}:${account}:alias |
| CreateAlias | kms:CreateAlias | エイリアスとキー | エイリアス: acs:kms:${region}:${account}:alias/${alias-name} および キー: acs:kms:${region}:${account}:key/${key-id} |
| UpdateAlias | kms:UpdateAlias | エイリアスとキー | エイリアス: acs:kms:${region}:${account}:alias/${alias-name} および キー: acs:kms:${region}:${account}:key/${key-id} |
| DeleteAlias | kms:DeleteAlias | エイリアスとキー | エイリアス: acs:kms:${region}:${account}:alias/${alias-name} および キー: acs:kms:${region}:${account}:key/${key-id} |
シークレット関連の API オペレーション
| オペレーション | アクション | リソースタイプ | ARN |
|---|---|---|---|
| CreateSecret | kms:CreateSecret | シークレットコンテナ | acs:kms:${region}:${account}:secret |
| ListSecrets | kms:ListSecrets | シークレットコンテナ | acs:kms:${region}:${account}:secret |
| DescribeSecret | kms:DescribeSecret | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| DeleteSecret | kms:DeleteSecret | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| UpdateSecret | kms:UpdateSecret | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| RestoreSecret | kms:RestoreSecret | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| GetSecretValue | kms:GetSecretValue (常に) および kms:Decrypt (自己管理キーが暗号鍵として使用されている場合のみ) | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| PutSecretValue | kms:PutSecretValue (常に) および kms:GenerateDataKey (自己管理キーが暗号鍵として使用されている場合のみ) | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| ListSecretVersionIds | kms:ListSecretVersionIds | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| UpdateSecretVersionStage | kms:UpdateSecretVersionStage | シークレット | acs:kms:${region}:${account}:secret/${secret-name} |
| GetRandomPassword | kms:GetRandomPassword | なし | なし |
タグ関連の API オペレーション
| オペレーション | アクション | リソースタイプ | ARN |
|---|---|---|---|
| ListResourceTags | kms:ListResourceTags | キーまたはシークレット | キー: acs:kms:${region}:${account}:key/${key-id} または シークレット: acs:kms:${region}:${account}:secret/${secret-name} |
| UntagResource | kms:UntagResource | キーまたはシークレット | キー: acs:kms:${region}:${account}:key/${key-id} または シークレット: acs:kms:${region}:${account}:secret/${secret-name} |
| TagResource | kms:TagResource | キーまたはシークレット | キー: acs:kms:${region}:${account}:key/${key-id} または シークレット: acs:kms:${region}:${account}:secret/${secret-name} |
条件
Condition 要素はオプションです。追加の制約を適用するために RAM ポリシーに条件キーを追加します。RAM 認証は、指定されたすべての条件が満たされた場合にのみ成功します。
2 種類の条件キーがサポートされています。
acs:<condition-key>フォーマットの共通条件キー — たとえば、acs:CurrentTimeを使用して、ポリシーを特定のタイムウィンドウに制限します。完全なリストについては、「ポリシー要素」をご参照ください。kms:<condition-key>フォーマットのKMS 固有の条件キー — 完全なリストについては、「条件キー」をご参照ください。
RAM ポリシーの構文および構造について詳しくは、「ポリシーの構造および構文」をご参照ください。