

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# エイリアスを使用して KMS キーへのアクセスを制御する
<a name="alias-authorization"></a>

KMS キーに関連付けられたエイリアスに基づいて、KMS キーへのアクセスを制御できます。これを行うには、[kms:RequestAlias](conditions-kms.md#conditions-kms-request-alias) および [kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 条件キーを使用します。この機能は、[属性ベースのアクセスコントロール](abac.md) (ABAC) AWS KMS のサポートの一部です。

`kms:RequestAlias` 条件キーは、リクエスト内のエイリアスに基づいて、KMS キーへのアクセスを許可または拒否します。`kms:ResourceAliases` 条件キーは、KMS キーに関連付けられたエイリアスに基づいて、KMS キーへのアクセスを許可または拒否します。

これらの機能では、ポリシーステートメントの `resource` 要素のエイリアスを使用して KMS キーを識別することはできません。エイリアスが `resource` 要素の値の場合、ポリシーは関連付けられている KMS キーではなく、エイリアスリソースに適用されます。

**注記**  
タグとエイリアスの変更が KMS キーの認可に影響を及ぼすまでに最長 5 分かかることがあります。最近の変更は、認可に影響を与える前に API オペレーションで表示される場合があります。

エイリアスを使用して KMS キーへのアクセスを制御する際は、次の点を考慮してください。
+ エイリアスを使用して、[最小特権アクセス](iam-policies-best-practices.md)のベストプラクティスを強化します。IAM プリンシパルでは、使用または管理する必要がある KMS キーのみに対して、必要なアクセス許可のみを付与します。例えば、エイリアスを使用してプロジェクトに使用される KMS キーを識別します。次に、プロジェクトエイリアスを持つ KMS キーのみを使用する許可をプロジェクトチームに付与します。
+ プリンシパルにエイリアスを追加、編集、削除できる `kms:CreateAlias`、`kms:UpdateAlias`、`kms:DeleteAlias` 許可を付与する際は注意してください。エイリアスを使用して KMS キーへのアクセスを制御する際、タグを変更することで、使用許可のない KMS キーに対する使用許可をプリンシパルに付与してしまう可能性があります。他のプリンシパルがジョブを実行するために必要な KMS キーへのアクセスを拒否することもできます。
+ エイリアスを管理し、必要に応じてアクセス許可を調整するアクセス許可を現在持ってい AWS アカウント る のプリンシパルを確認します。キーポリシーを変更したり、権限を作成したりする許可のないキー管理者も、エイリアスを管理する許可があれば、KMS キーへのアクセスを制御できます。

  例えば、コンソールの[キー管理者のデフォルトキーポリシー](key-policy-default.md#key-policy-default-allow-administrators)には、`kms:CreateAlias`、`kms:DeleteAlias`、`kms:UpdateAlias` アクセス許可があります。IAM ポリシーでは、 AWS アカウントのすべての KMS キーに対するエイリアスのアクセス許可を付与する可能性があります。例えば、[AWSKeyManagementServicePowerUser](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser) マネージドポリシーでは、プリンシパルはすべての KMS キーのエイリアスを作成、削除、一覧表示できますが、更新はできません。
+ エイリアスに依存するポリシーを設定する前に、 の KMS キーのエイリアスを確認してください AWS アカウント。含めるエイリアスにのみポリシーが適用されることを確認します。[CloudTrail ログ](alias-ct.md)および [CloudWatch アラーム](monitoring-cloudwatch.md)を使用して、KMS キーへのアクセスに影響する可能性のあるエイリアス変更をアラートさせます。[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) レスポンスには、各エイリアスの作成日と最終更新日が含まれます。
+ エイリアスポリシー条件はパターンマッチングを使用します。エイリアスの特定のインスタンスには関連付けられません。エイリアスベースの条件キーを使用するポリシーは、パターンに一致するすべての新規および既存のエイリアスに影響します。ポリシー条件に一致するエイリアスを削除して再作成すると、古いエイリアスの場合と同様に、新しいエイリアスに条件が適用されます。

`kms:RequestAlias` 条件キーは、オペレーションリクエストで明示的に指定されたエイリアスに依存します。`kms:ResourceAliases` 条件キーは、リクエストに表示されない場合でも、KMS キーに関連付けられているエイリアスに依存します。

## kms:RequestAlias
<a name="alias-auth-request-alias"></a>

リクエスト内の KMS キーを識別するエイリアスに基づいて、KMS キーへのアクセスを許可または拒否します。[キーポリシー](key-policies.md)または IAM ポリシーで、[kms:RequestAlias](conditions-kms.md#conditions-kms-request-alias) 条件キーを使用できます。これは、エイリアスを使用してリクエスト内の KMS キーを識別するオペレーション、つまり [暗号化オペレーション](kms-cryptography.md#cryptographic-operations)、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)、[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) に適用されます。[CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) または [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html) のようなエイリアスオペレーションには無効です。

**重要**  
呼び出し元はキー [ID、キー](concepts.md#key-id-key-id) [ARN](concepts.md#key-id-key-ARN)、または別のエイリアスを使用してリクエスト内の KMS キーを識別できるため、 `kms:RequestAlias`条件の`Deny`ポリシーステートメントはお勧めしません。KMS キーに関連付けられたエイリアスに基づいてアクセスを拒否するには、代わりに [kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 条件キーを使用します。

条件キーで、[エイリアス名](concepts.md#key-id-alias-name)またはエイリアス名パターンを指定します。[エイリアス ARN](concepts.md#key-id-alias-ARN) を指定することはできません。

例えば、次のポリシーステートメントでは、プリンシパルが KMS キーに対して、指定されたオペレーションを使用できるようにします。アクセス許可は、KMS キーを識別する `alpha` を含むエイリアスをリクエストが使用する場合にのみ有効です。

```
{
  "Sid": "Key policy using a request alias condition",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/alpha-developer"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:RequestAlias": "alias/*alpha*"
    }
  }
}
```

次の認可済みプリンシパルからのサンプルリクエストは条件を満たします。ただし、これらの値が同じ KMS キーを識別したとしても、[キー ID](concepts.md#key-id-key-id)、[キー ARN](concepts.md#key-id-key-ARN)、別のエイリアスが条件を満たさない可能性があります。

```
$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"
```

## kms:ResourceAliases
<a name="alias-auth-resource-aliases"></a>

KMS キーに関連付けられたエイリアスに基づいて、エイリアスがリクエストで使用されていない場合でも、KMS キーへのアクセスを許可または拒否します。[kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 条件キーを使用すると、`alias/test*` のようなエイリアスまたはエイリアスパターンを指定できるため、この条件キーを IAM ポリシーで使用して、同じリージョン内の複数の KMS キーへのアクセスを制御できます。これは、KMS キーを使用するすべての AWS KMS オペレーションで有効です。

たとえば、次の IAM ポリシーでは、プリンシパルが 2 つの KMS キーで指定されたオペレーションを呼び出すことができます AWS アカウント。ただし、アクセス許可は `restricted` で始まるエイリアスに関連付けられた KMS キーにのみ適用されます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": [
        "arn:aws:kms:*:111122223333:key/*",
        "arn:aws:kms:*:444455556666:key/*"
      ],
      "Condition": {
        "ForAnyValue:StringLike": {
          "kms:ResourceAliases": "alias/restricted*"
        }
      }
    }
  ]
}
```

------

`kms:ResourceAliases` 条件はリクエストではなく、リソースの条件です。したがって、エイリアスを指定しないリクエストは、引き続き条件を満たすことができます。

次のリクエスト例は一致するエイリアスを指定し、条件を満たしています。

```
$ aws kms enable-key-rotation --key-id "alias/restricted-project"
```

ただし、次のリクエスト例では、指定された KMS キーに `restricted` で始まるエイリアスがあれば、そのエイリアスがリクエストで使用されなくても、条件を満たします。

```
$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"
```