

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

# 创建使用具有默认加密的 Amazon EBS 卷的 AWS Cloud9 IDE
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption"></a>

*Janardhan Malyala 和 Dhrubajyoti Mukherjee，Amazon Web Services*

## Summary
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-summary"></a>

**注意**： AWS Cloud9 不再向新客户开放。的现有客户 AWS Cloud9 可以继续照常使用该服务。[了解详情](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

您可以使用[默认加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)来强制加密Amazon Web Services (AWS) 云上的 Amazon Elastic Block Store (Amazon EBS) 卷和快照副本。 

您可以创建默认使用加密的 EBS 卷的 AWS Cloud9 集成式开发环境 (IDE)。但是，AWS Cloud9 的 AWS Identity and Access Management (IAM) [服务相关角色](https://docs.aws.amazon.com/cloud9/latest/user-guide/using-service-linked-roles.html)需要访问这些 EBS 卷的 AWS Key Management Service (AWS KMS) 密钥。如果未提供访问权限，则 AWS Cloud9 IDE 可能无法启动，调试也可能变得困难。 

此模式提供了将 AWS Cloud9 的服务相关角色添加到 EBS 卷所使用的 AWS KMS 密钥的步骤。此模式描述的设置可帮助您成功创建和启动使用默认加密的 EBS 卷的 IDE。

## 先决条件和限制
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account。
+ EBS 卷的默认加密已开启。有关默认加密的更多信息，请参阅[亚马逊弹性计算云 (Amazon EC2) 文档中的 Amazon EBS 加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)。
+ 用于加密 EBS 卷的现有[客户托管 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
您无需为 AWS Cloud9 创建服务相关角色。当您创建 AWS Cloud9 开发环境时，AWS Cloud9 会为你创建服务链接角色。

## 架构
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-architecture"></a>

![使用 AWS Cloud9 IDE 强制加密 EBS 卷和快照。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/dd98fbb4-0949-4299-b701-bc857e13049c/images/6b22b8d1-75d9-4f06-b5d6-5fff7397f22d.png)


**技术堆栈**
+ Amazon Cloud9
+ IAM
+ AWS KMS

## 工具
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-tools"></a>
+ [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 是一种集成式开发环境 (IDE)，可帮助您编写、构建、运行、测试和调试软件。它还可以帮助您将软件发布到 Amazon Web Services Cloud。
+ [亚马逊弹性区块存储 (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) Block Store 提供块级存储卷，用于亚马逊弹性计算云 (Amazon) 实例。 EC2
+ [AWS Identity and Access Management (AWS IAM) ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)通过控制验证和授权使用您 AWS 资源的用户，帮助您安全地管理对您 AWS 资源的访问。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 可帮助您创建和控制加密密钥，以帮助保护您的数据。

## 操作说明
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-epics"></a>

### 查找默认加密密钥值
<a name="find-the-default-encryption-key-value"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 记录 EBS 卷的默认加密密钥值。 | 登录 AWS 管理控制台并打开亚马逊 EC2 控制台。选择 “**EC2 控制面板**”，然后在 “**帐户” 属性中选择 “**数据保护和安全**”**。在 **EBS 加密**部分中，复制并记录**默认加密密钥**中的值。 | 云架构师、 DevOps 工程师 | 

### 提供对 AWS KMS 密钥的访问权限
<a name="provide-access-to-the-aws-kms-key"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为 AWS Cloud9 提供对 EBS 卷的 KMS 密钥的访问权限。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption.html)有关更新密钥政策的更多信息，请参阅[如何更改密钥政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to)（AWS KMS 文档）。AWS Cloud9 的服务相关角色是在您启动第一个 IDE 时自动创建的。有关更多信息，请参阅 AWS Cloud9 文档中的[创建服务链接角色](https://docs.aws.amazon.com/cloud9/latest/user-guide/using-service-linked-roles.html#create-service-linked-role)。  | 云架构师、 DevOps 工程师 | 

### 创建并启动 IDE
<a name="create-and-launch-the-ide"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建并启动 AWS Cloud9 IDE。 | 打开 AWS Cloud9 控制台，然后选择**创建**环境。 ****按照 AWS Cloud9 文档中[创建 EC2 环境](https://docs.aws.amazon.com/cloud9/latest/user-guide/create-environment-main.html)中的步骤根据您的要求配置 IDE。  | 云架构师、 DevOps 工程师 | 

## 相关资源
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-resources"></a>
+ [加密 AWS Cloud9 使用的 EBS 卷](https://docs.aws.amazon.com/cloud9/latest/user-guide/move-environment.html#encrypting-volumes)
+ [为 AWS Cloud9 创建服务链接相关角色](https://docs.aws.amazon.com/cloud9/latest/user-guide/using-service-linked-roles.html#create-service-linked-role)
+ [在 AWS Cloud9 中创建 EC2 环境](https://docs.aws.amazon.com/cloud9/latest/user-guide/create-environment-main.html)

## 附加信息
<a name="create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption-additional"></a>

**AWS KMS 密钥政策更新**

将 `<aws_accountid>` 替换为您的 Amazon Web Services account ID。

```
{
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<aws_accountid>:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<aws_accountid>:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
```

**使用跨账户密钥**

如果您要使用跨账户 KMS 密钥，则必须组合使用授权和 KMS 密钥策略。这样将可以跨账户访问密钥。在用于创建 Cloud9 环境的同一账户中，请在终端种运行以下命令。

```
aws kms create-grant \
 --region <Region where Cloud9 environment is created> \
 --key-id <The cross-account KMS key ARN> \
 --grantee-principal arn:aws:iam::<The account where Cloud9 environment is created>:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9 \
 --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"
```

运行此命令后，您可以使用不同账户中的密钥，通过 EBS 加密来创建 Cloud9 环境。