

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建对称加密 KMS 密钥
<a name="create-symmetric-cmk"></a>

本主题介绍如何创建基本 KMS 密钥，这是针对单个区域的[对称加密 KMS 密钥](symm-asymm-choose-key-spec.md#symmetric-cmks)，密钥材料来自 AWS KMS于。您可以在 AWS 服务中使用此 KMS 密钥保护您的资源。

您可以在 AWS KMS 控制台、使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)API 或使用[AWS::KMS::Key CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)创建对称加密 KMS 密钥。

默认密钥规范 [SYMMETRIC\_DEFAULT](symm-asymm-choose-key-spec.md#symmetric-cmks) 是对称加密 KMS 密钥的密钥规范。当您在 AWS KMS 控制台中选择 **Symmetric** 密钥类型**以及加密和解密密**钥用法时，它会选择密钥规范。`SYMMETRIC_DEFAULT`在[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作中，如果您未指定`KeySpec`值，则会选择 SYMMETRIC\_DEFAULT。如果您没有理由使用其他密钥规范，SymMETIC\_DEFAULT 是个不错的选择。

有关应用于 KMS 密钥的配额的信息，请参阅 [配额](limits.md)。

## 使用控制 AWS KMS 台
<a name="create-keys-console"></a>

您可以使用创建 AWS KMS keys （KMS 密钥）。 AWS 管理控制台 

**重要**  
不要在别名、描述或标签中包含机密或敏感信息。这些字段可能以纯文本形式出现在 CloudTrail 日志和其他输出中。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 AWS Key Management Service (AWS KMS) 控制台。

1. 要更改 AWS 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择**客户托管密钥**。

1. 选择**创建密钥**。

1. 要创建对称加密 KMS 密钥，请为 **Key type**（密钥类型）选择 **Symmetric**（对称）。

1. 在**密钥用法**中，系统已为您选择**加密和解密**选项。

1. 选择**下一步**。

1. 键入 KMS 密钥的别名。别名名称不能以 **aws/** 开头。该**aws/**前缀由 Amazon Web Services 保留，用于 AWS 托管式密钥 在您的账户中表示。
**注意**  
添加、删除或更新别名可以允许或拒绝对 KMS 密钥的权限。有关详细信息，请参阅 [ABAC for AWS KMS](abac.md) 和 [使用别名控制对 KMS 密钥的访问](alias-authorization.md)。

    别名是一个显示名称，您可以使用它来标识 KMS 密钥。我们建议您选择一个别名，用来指示您计划保护的数据类型或计划与 KMS 密钥搭配使用的应用程序。

    

    在 AWS 管理控制台中创建 KMS 密钥时需要别名。当您使用[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作时，它们是可选的。

1. （可选）为 KMS 密钥键入描述。

   现在，除非[密钥状态](key-state.md)为 `Pending Deletion` 或 `Pending Replica Deletion`，否则您可以随时添加描述或更新描述。要添加、更改或删除现有客户托管密钥的描述，请在 AWS 管理控制台 或使用[UpdateKeyDescription](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html)操作中编辑 KMS 密钥的详细信息页面上的描述。

1. （可选）键入标签键和一个可选标签值。要向 KMS 密钥添加多个标签，请选择 **Add tag**（添加标签）。
**注意**  
标记或取消标记 KMS 密钥可以允许或拒绝对 KMS 密钥的权限。有关详细信息，请参阅 [ABAC for AWS KMS](abac.md) 和 [使用标签控制对 KMS 密钥的访问](tag-authorization.md)。

   向 AWS 资源添加标签时， AWS 会生成一份成本分配报告，其中包含按标签汇总的使用量和成本。标签还可以用来控制对 KMS 密钥的访问。有关轮换 KMS 密钥的信息，请参阅 [标签在 AWS KMS](tagging-keys.md) 和 [ABAC for AWS KMS](abac.md)。

1. 选择**下一步**。

1. 选择可管理 KMS 密钥的 IAM 用户和角色。
**注意**  
此密钥策略赋予了对此 KMS 密钥的 AWS 账户 完全控制权。此控制权允许账户管理员使用 IAM policy 授予其他主体管理 KMS 密钥的权限。有关更多信息，请参阅 [默认密钥策略](key-policy-default.md)。  
IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息，请参阅《IAM 用户指南》中的 [IAM 安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)**。  
 AWS KMS 控制台在语句标识符下将密钥管理员添加到密钥策略中`"Allow access for Key Administrators"`。如果修改此语句标识符，则可能会影响控制台显示您对该语句所做修改的方式。

1. （可选）要阻止选定 IAM 用户和角色删除此 KMS 密钥，请在页面底部的**密钥删除**部分中，清除**允许密钥管理员删除此密钥**复选框。

1. 选择**下一步**。

1. 选择可在[加密操作](kms-cryptography.md#cryptographic-operations)中使用密钥的 IAM 用户和角色
**注意**  
IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息，请参阅《IAM 用户指南》中的 [IAM 安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)**。  
 AWS KMS 控制台在语句标识符`"Allow use of the key"`和下将密钥用户添加到密钥策略中`"Allow attachment of persistent resources"`。如果修改这些语句标识符，则可能会影响控制台显示您对该语句所做修改的方式。

1. （可选）您可以允许其他人使用 AWS 账户 此 KMS 密钥进行加密操作。为此，请在页面底部的 AWS 账户“**其他**” 部分中，选择 “**添加另一个**”， AWS 账户然后输入外部账户的 AWS 账户 标识号。要添加多个外部账户，请重复此步骤。
**注意**  
要允许外部账户中的委托人使用 KMS 密钥，外部账户的管理员必须创建提供这些权限的 IAM policy。有关更多信息，请参阅 [允许其他账户中的用户使用 KMS 密钥](key-policy-modifying-external-accounts.md)。

1. 选择**下一步**。

1. 检查密钥的密钥策略语句。要对密钥策略进行更改，请选择**编辑**。

1. 选择**下一步**。

1. 检视您选择的密钥设置。您仍然可以返回并更改所有设置。

1. 选择 **Finish**（完成）以创建 KMS 密钥。

## 使用 AWS KMS API
<a name="create-keys-api"></a>

您可以使用该[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作来创建 AWS KMS keys 所有类型。这些示例使用 [AWS Command Line Interface （AWS CLI）](https://aws.amazon.com/cli/)。有关使用多种编程语言的示例，请参阅[`CreateKey`与 AWS SDK 或 CLI 配合使用](example_kms_CreateKey_section.md)。

**重要**  
不要在 `Description` 或 `Tags` 字段中包含机密或敏感信息。这些字段可能以纯文本形式出现在 CloudTrail 日志和其他输出中。

以下操作会在由 AWS KMS生成的密钥材料提供支持的单个区域中创建对称加密密钥。该操作没有必需参数。不过，您可能还希望使用 `Policy` 参数指定密钥策略。您可以随时更改密钥策略 ([PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)) 并添加可选元素，例如[描述](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)和[标签](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html)。您还可以创建[非对称密钥](asymm-create-key.md#create-asymmetric-keys-api)、[多区域密钥](create-primary-keys.md)、具有[导入密钥材料](importing-keys-create-cmk.md#importing-keys-create-cmk-api)的密钥以及[自定义密钥存储](create-cmk-keystore.md#create-cmk-keystore-api)中的密钥。要创建用于客户端加密的数据密钥，请使用[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)操作。

该`CreateKey`操作不允许您指定别名，但您可以使用该[CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)操作为新 KMS 密钥创建别名。

以下示例显示的是在没有任何参数的情况下调用 `CreateKey` 操作。此命令使用所有默认值。它将创建一个具有 AWS KMS生成的密钥材料的对称加密 KMS 密钥。

```
$ aws kms create-key
{
    "KeyMetadata": {
        "Origin": "AWS_KMS",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Description": "",
        "KeyManager": "CUSTOMER",
        "Enabled": true,
        "KeySpec": "SYMMETRIC_DEFAULT",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "CreationDate": 1502910355.475,
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "AWSAccountId": "111122223333",
        "MultiRegion": false
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
    }
}
```

如果您不为新 KMS 密钥指定密钥策略，则 `CreateKey` 应用的[默认密钥策略](key-policy-default.md)会不同于在您使用控制台创建新 KMS 密钥时控制台应用的默认密钥策略。

例如，对[GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)操作的此调用将返回`CreateKey`适用的密钥策略。它授予对 KMS 密钥的 AWS 账户 访问权限，并允许其为 KMS 密钥创建 AWS Identity and Access Management (IAM) 策略。有关 KMS 密钥的 IAM policy 和密钥策略的详细信息，请参阅 [KMS 密钥访问权限和权限](control-access.md)

```
$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text
```

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "key-default-1",
  "Statement" : [ {
    "Sid" : "EnableIAMUserPermissions",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::{{111122223333}}:root"
    },
    "Action" : "kms:*",
    "Resource" : "*"
  } ]
}
```

------