

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 控制對別名的存取
<a name="alias-access"></a>

當您建立或變更別名時，會影響別名及其關聯的 KMS 金鑰。因此，管理別名的委託人必須具有對別名和所有受影響之 KMS 金鑰呼叫別名操作的許可。您可以使用[金鑰政策](key-policies.md)、[IAM 政策](iam-policies.md)和[授權](grants.md)來提供這些許可。

**注意**  
授予委託人管理標籤和別名的許可時，請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊，請參閱 [適用於 的 ABAC AWS KMS](abac.md) 和 [使用別名來控制對 KMS 金鑰的存取](alias-authorization.md)。

如需控制所有 AWS KMS 操作存取的資訊，請參閱 [許可參考](kms-api-permissions-reference.md)。

建立和管理別名的許可如下所示。

## kms:CreateAlias
<a name="alias-access-create"></a>

若要建立別名，委託人需要別名和相關聯的 KMS 金鑰的下列許可。
+ 別名的 `kms:CreateAlias`。在連接至允許建立別名之委託人的 IAM 政策中提供此許可。

  下列範例政策陳述式會指定 `Resource` 元素中的特定別名。但是，您可以列出多個別名 ARN 或指定別名模式，例如 "test\$1"。您也可以指定 `"*"` 的 `Resource` 值以允許委託人在帳戶和區域中建立任何別名。建立別名的許可也可以包含在帳戶和區域中所有資源的 `kms:Create*` 許可中。

  ```
  {
    "Sid": "IAMPolicyForAnAlias",
    "Effect": "Allow",
    "Action": [
      "kms:CreateAlias",
      "kms:UpdateAlias",
      "kms:DeleteAlias"
    ],
    "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"
  }
  ```
+ KMS 金鑰的 `kms:CreateAlias`。必須在金鑰政策或在從金鑰政策委派的 IAM 政策中提供此許可。

  ```
  {
    "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab",
    "Effect": "Allow",
    "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"},
    "Action": [
      "kms:CreateAlias",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
  ```

您可以使用條件索引鍵來限制可與別名建立關聯的 KMS 金鑰。例如，您可使用 [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec) 條件索引鍵，以允許委託人只在非對稱 KMS 金鑰上建立別名。如需您可用於限制 KMS 金鑰資料之 `kms:CreateAlias` 許可的條件索引鍵完整清單，請參閱 [AWS KMS 許可](kms-api-permissions-reference.md)。

## kms:ListAliases
<a name="alias-access-view"></a>

若要列出帳戶和區域中的別名，委託人必須具有 IAM 政策的 `kms:ListAliases` 許可。由於此政策與任何特定 KMS 金鑰或別名資源無關，因此政策中資源元素的值[必須為 `"*"`](iam-policies-best-practices.md#require-resource-star)。

例如，下列 IAM 政策陳述式會授予委託人許可，以列出帳戶和區域中的所有 KMS 金鑰和別名。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases"
    ],
    "Resource": "*"
  }
}
```

------

## kms:UpdateAlias
<a name="alias-access-update"></a>

若要變更與別名相關聯的 KMS 金鑰，委託人需要三個許可元素：一個用於別名、一個用於當前 KMS 金鑰，另一個用於新的 KMS 金鑰。

例如，假設您想要將 `test-key` 別名從金鑰 ID 為 1234abcd-12ab-34cd-56ef-1234567890ab 的 KMS 金鑰變更為金鑰 ID 為 0987dcba-09fe-87dc-65ba-ab0987654321 的 KMS 金鑰。在這種情況下，請包含類似於本節範例的政策陳述式。
+ 別名的 `kms:UpdateAlias`。您可以在連接至委託人的 IAM 政策中提供此許可。下列 IAM 政策會指定特定別名。但是，您可以列出多個別名 ARN 或指定別名模式，例如 `"test*"`。您也可以指定 `"*"` 的 `Resource` 值以允許委託人更新帳戶和區域中的任何別名。

  ```
  {
    "Sid": "IAMPolicyForAnAlias",
    "Effect": "Allow",
    "Action": [
      "kms:UpdateAlias",
      "kms:ListAliases",
      "kms:ListKeys"
    ],
    "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"
  }
  ```
+ 目前與別名相關聯之 KMS 金鑰的 `kms:UpdateAlias`。必須在金鑰政策或在從金鑰政策委派的 IAM 政策中提供此許可。

  ```
  {
    "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab",
    "Effect": "Allow",
    "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"},
    "Action": [
      "kms:UpdateAlias",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
  ```
+ 操作與別名相關聯之 KMS 金鑰的 `kms:UpdateAlias`。必須在金鑰政策或在從金鑰政策委派的 IAM 政策中提供此許可。

  ```
  {
    "Sid": "Key policy for 0987dcba-09fe-87dc-65ba-ab0987654321",
    "Effect": "Allow",
    "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"},
    "Action": [
      "kms:UpdateAlias", 
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
  ```

您可以使用條件索引鍵來限制 `UpdateAlias` 操作中的其中一個 KMS 金鑰，或者兩個金鑰皆限制。例如，您可以使用 [kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 條件索引鍵，以允許委託人只在目標 KMS 金鑰已經有特定別名時更新別名。如需您可用於限制 KMS 金鑰資源之 `kms:UpdateAlias` 許可的條件索引鍵完整清單，請參閱 [AWS KMS 許可](kms-api-permissions-reference.md)。

## kms:DeleteAlias
<a name="alias-access-delete"></a>

若要刪除別名，委託人需要別名和相關聯的 KMS 金鑰的許可。

一如往常，在授予委託人刪除資源的許可時，您應該小心謹慎。不過，刪除別名並不會影響相關聯的 KMS 金鑰。雖然這可能會在依賴別名的應用程式中造成故障，但是如果錯誤地刪除了別名，則您可以重新建立別名。
+ 別名的 `kms:DeleteAlias`。在連接至允許刪除別名之委託人的 IAM 政策中提供此許可。

  下列範例政策陳述式會指定 `Resource` 元素中的別名。但是，您可以列出多個別名 ARN 或指定別名模式，例如 `"test*"`，您也可以指定 `"*"` 的 `Resource` 值以允許委託人刪除帳戶和區域中的任何別名。

  ```
  {
    "Sid": "IAMPolicyForAnAlias",
    "Effect": "Allow",
    "Action": [
      "kms:CreateAlias",
      "kms:UpdateAlias",
      "kms:DeleteAlias"
    ],
    "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key"
  }
  ```
+ 相關聯 KMS 金鑰的 `kms:DeleteAlias`。必須在金鑰政策或在從金鑰政策委派的 IAM 政策中提供此許可。

  ```
  {
    "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"
    },
    "Action": [
      "kms:CreateAlias",
      "kms:UpdateAlias",
      "kms:DeleteAlias",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
  ```

## 限制別名許可
<a name="alias-access-limiting"></a>

當資源為 KMS 金鑰時，您可以使用條件索引鍵來限制別名許可。例如，以下 IAM 政策允許在特定帳戶和區域中對 KMS 金鑰執行別名操作。不過，它會使用 [kms:KeyOrigin](conditions-kms.md#conditions-kms-key-origin) 條件金鑰，進一步限制 KMS 金鑰的許可與金鑰材料 AWS KMS。

如需可用來限制 KMS 金鑰資源別名許可的條件索引鍵完整清單，請參閱 [AWS KMS 許可](kms-api-permissions-reference.md)。

```
{
  "Sid": "IAMPolicyKeyPermissions",
  "Effect": "Allow",
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Action": [
    "kms:CreateAlias",
    "kms:UpdateAlias",
    "kms:DeleteAlias"
  ],
  "Condition": {
    "StringEquals": {
      "kms:KeyOrigin": "AWS_KMS"
    }
  }  
}
```

您無法在資源為別名的政策陳述式中使用條件索引鍵。若要限制委託人可以管理的別名，請使用 IAM 政策陳述式 (可控制對別名的存取) 之 `Resource` 元素的值。例如，下列政策陳述式允許主體在 AWS 帳戶 和 區域中建立、更新或刪除任何別名，除非別名以 開頭`Restricted`。

```
{
  "Sid": "IAMPolicyForAnAliasAllow",
  "Effect": "Allow",
  "Action": [
    "kms:CreateAlias",
    "kms:UpdateAlias",
    "kms:DeleteAlias"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:alias/*"
},
{
  "Sid": "IAMPolicyForAnAliasDeny",
  "Effect": "Deny",
  "Action": [
    "kms:CreateAlias",
    "kms:UpdateAlias",
    "kms:DeleteAlias"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:alias/Restricted*"
}
```