

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

# 中的別名 AWS KMS
<a name="kms-alias"></a>

*別名*是 AWS KMS key的易記名稱。例如，別名可讓您將 KMS 金鑰稱為 `test-key`，而不是 `1234abcd-12ab-34cd-56ef-1234567890ab`。

您可以使用別名在 AWS KMS 主控台、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作和[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中識別 KMS 金鑰，例如 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 和 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)。別名也可以很容易地識別 [AWS 受管金鑰](concepts.md#aws-managed-key)。這些 KMS 金鑰的別名一律具有 `aws/{{<service-name>}}` 格式。例如， AWS 受管金鑰 適用於 Amazon DynamoDB 的 別名為 `aws/dynamodb`。您可以為專案建立類似的別名標準，例如在別名前面加上專案或品類的名稱。

您也可以根據其別名允許和拒絕存取 KMS 金鑰，而不需編輯政策或管理授權。此功能是[屬性型存取控制](abac.md) (ABAC) AWS KMS 支援的一部分。如需詳細資訊，請參閱[使用別名來控制對 KMS 金鑰的存取](alias-authorization.md)。

別名的大部分功能來自於您隨時變更與別名相關聯之 KMS 金鑰的能力。別名可以讓您的程式碼更容易撰寫和維護。例如，假設您使用別名來指代特定的 KMS 金鑰，而且您想要變更 KMS 金鑰。在這種情況下，只要將別名與不同的 KMS 金鑰建立關聯即可。您不需要變更程式碼。

別名也可以更容易在不同的 AWS 區域中重複使用相同的程式碼。在多個區域中建立具有相同名稱的別名，並將每個別名與其區域中的 KMS 金鑰產生關聯。當程式碼在每個區域中執行時，別名是指該區域中相關聯的 KMS 金鑰。如需範例，請參閱 [了解如何在應用程式中使用別名](alias-using.md)。

您可以在 AWS KMS 主控台中使用 [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) API 或使用 [AWS::KMS::Alias CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)來建立 KMS 金鑰的別名。

 AWS KMS API 可完全控制每個帳戶和區域中的別名。API 包含用於建立別名 ([CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html))、檢視別名名稱和別名 ARN ([ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html))、變更與別名相關聯的 KMS 金鑰 ([UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)) 和刪除別名 ([DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)) 的操作。

## 別名的運作方式
<a name="alias-about"></a>

了解別名如何在 AWS KMS運作。

**別名是獨立的 AWS 資源**  
別名不是 KMS 金鑰的屬性。您對別名所採取的動作不會影響其關聯的 KMS 金鑰。您可以為 KMS 金鑰建立別名，然後更新別名，讓其與不同的 KMS 金鑰相關聯。您甚至可以刪除別名，而不會對相關聯的 KMS 金鑰造成任何影響。不過，如果您刪除 KMS 金鑰，則會刪除與該 KMS 金鑰相關聯的所有別名。  
如果您在 IAM 政策中指定別名作為資源，則政策會指代別名，而不是關聯的 KMS 金鑰。

**每個別名都有兩種格式**  
當您建立別名時，您可以指定別名 name. AWS KMS creates the alias ARN。  
+ [別名 ARN](concepts.md#key-id-alias-ARN) 是唯一可識別別名的 Amazon Resource Name (ARN)。

  ```
  # Alias ARN
  arn:aws:kms:us-west-2:111122223333:alias/{{<alias-name>}}
  ```
+ 在帳戶和區域中，[別名名稱](concepts.md#key-id-alias-name)必須是唯一的。在 AWS KMS API 中，別名名稱一律以 為字首`alias/`。在 AWS KMS 主控台中省略該字首。

  ```
  # Alias name
  alias/{{<alias-name>}}
  ```

**別名並非秘密**  
別名可能在 CloudTrail 日誌與其他輸出中以純文字顯示。請勿在別名名稱包含機密或敏感資訊。

**每個別名一次都與一個 KMS 金鑰相關聯**  
別名及其 KMS 金鑰必須位於相同的帳戶和區域中。  
您可以將別名與相同 AWS 帳戶 和區域中的任何[客戶受管金鑰](concepts.md#customer-mgn-key)建立關聯。不過，您沒有將別名與 [AWS 受管金鑰](concepts.md#aws-managed-key) 相關聯的許可。  
例如，此 [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 輸出顯示 `test-key` 別名僅與一個目標 KMS 金鑰相關聯，這由 `TargetKeyId` 屬性表示。  

```
{
     "AliasName": "alias/test-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1593622000.191,
     "LastUpdatedDate": 1593622000.191
}
```

**多個別名可以與相同的 KMS 金鑰建立關聯**  
例如，您可以將 `test-key` 和 `project-key` 別名與相同的 KMS 金鑰相關聯。  

```
{
     "AliasName": "alias/test-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1593622000.191,
     "LastUpdatedDate": 1593622000.191
},
{
     "AliasName": "alias/project-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1516435200.399,
     "LastUpdatedDate": 1516435200.399
}
```

**別名在帳戶和區域中必須是唯一的。**  
例如，您在每個帳戶和區域只能有一個 `test-key` 別名。別名區分大小寫，但只有大小寫不同的別名很容易出錯。您無法變更別名名稱。但是，您可以刪除別名，並使用所需名稱建立新別名。

**但是，您可以在不同區域中使用相同的名稱建立別名。**  
例如，您可以在美國東部 (維吉尼亞北部) 有一個 `finance-key` 別名和在歐洲 (法蘭克福) 有一個 `finance-key` 別名。每個別名都會與其區域中的 KMS 金鑰相關聯。如果您的程式碼引用了類似 `alias/finance-key` 的別名名稱，則可以在多個區域中執行。在每個區域中，它會使用不同的 KMS 金鑰。如需詳細資訊，請參閱[了解如何在應用程式中使用別名](alias-using.md)。

**您可以變更與別名相關聯的 KMS 金鑰**  
您可以使用 [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html) 操作將別名與不同的 KMS 金鑰相關聯。例如，如果 `finance-key` 別名與 `1234abcd-12ab-34cd-56ef-1234567890ab` KMS 金鑰相關聯，則您可以對其進行更新，使其與 `0987dcba-09fe-87dc-65ba-ab0987654321` KMS 金鑰相關聯。  
不過，目前的和新的 KMS 金鑰必須是相同類型 (兩個皆為對稱或兩個皆為非對稱或兩個皆為 HMAC)，並且必須具有相同的[金鑰使用情形](create-keys.md#key-usage) (ENCRYPT\_DECRYPT 或 SIGN\_VERIFY 或 GENERATE\_VERIFY\_MAC)。此限制可避免使用別名之程式碼中的錯誤。如果您必須將別名與不同類型的金鑰建立關聯，且已降低風險，則可以刪除並重新建立別名。

**某些 KMS 金鑰沒有別名**  
在 AWS KMS 主控台中建立 KMS 金鑰時，您必須為其提供新的別名。但是，當使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作來建立 KMS 金鑰時，不需要別名。此外，您可利用 [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html) 操作來變更關聯別名的 KMS 金鑰，以及 [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html) 操作來刪除別名。因此，某些 KMS 金鑰可能有數個別名，有些金鑰可能沒有。

**AWS 會在您的帳戶中建立別名**  
AWS 會在您的帳戶中為 建立別名[AWS 受管金鑰](concepts.md#aws-managed-key)。這些別名有 `alias/aws/{{<service-name>}}` 格式的名稱，例如 `alias/aws/s3`。  
有些別名沒有 KMS AWS 金鑰。當您開始使用服務 AWS 受管金鑰 時，這些預先定義的別名通常與 相關聯。

**使用別名來識別 KMS 金鑰**  
您可以使用[別名名稱](concepts.md#key-id-alias-name)或[別名 ARN](concepts.md#key-id-alias-ARN) 來識別[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中的 KMS 金鑰、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 和 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)。(如果 [KMS 金鑰位於不同的 AWS 帳戶](key-policy-modifying-external-accounts.md)，您必須使用其[金鑰 ARN](concepts.md#key-id-key-ARN) 或別名 ARN。) 別名在其他 AWS KMS 操作中不是 KMS 金鑰的有效識別符。如需每個 AWS KMS API 操作之有效[金鑰識別符](concepts.md#key-id)的相關資訊，請參閱 *AWS Key Management Service API 參考*中的`KeyId`參數說明。  
您不能使用別名名稱或別名 ARN 來[識別 IAM 政策中的 KMS 金鑰](cmks-in-iam-policies.md)。若要根據其別名控制對 KMS 金鑰的存取權，請使用 [kms:RequestAlias](conditions-kms.md#conditions-kms-request-alias) 或 [kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 條件索引鍵。如需詳細資訊，請參閱[適用於 的 ABAC AWS KMS](abac.md)。