

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

# 使用 Secrets Manager 保护存储位置凭证
保护存储位置凭证

DataSync 使用[位置](https://docs.amazonaws.cn/datasync/latest/userguide/how-datasync-transfer-works.html#sync-locations)来访问位于本地、其他云端或内部的存储资源 Amazon。某些位置类型要求您提供凭据（例如，访问密钥和私有密钥、用户名和密码、Kerberos keytab、SAS 令牌等），以便在存储系统中进行身份验证。当您创建需要凭据进行身份验证的 DataSync 位置时，可以使用 Amazon Secrets Manager (Secrets Manager) 来存储您的凭据的密钥。有以下选项可用：
+ [ManagedSecretConfig](https://docs.amazonaws.cn/datasync/latest/userguide/API_ManagedSecretConfig.html): DataSync-托管密钥配置。使用使用默认密钥加密的 DataSync 服务管理密钥将密钥存储在 Secrets Manager 中。
+ [CmkSecretConfig](https://docs.amazonaws.cn/datasync/latest/userguide/API_CmkSecretConfig.html): DataSync-使用客户管理密钥 (CMK) 配置的托管密钥。使用使用您管理的密钥加密的 DataSync 服务管理密钥将密 Amazon KMS 钥存储在 Secrets Manager 中。
+ [CustomSecretConfig](https://docs.amazonaws.cn/datasync/latest/userguide/API_CustomSecretConfig.html)：客户管理的密钥配置。使用您创建和管理的密钥和密钥将密钥存储在 Secrets Manager 中。 DataSync 使用您提供的 IAM 角色访问此密钥。

在所有情况下，Secrets Manager 密钥都存储在您的账户中，允许您根据需要独立于 DataSync 服务更新密钥。由创建和管理的密钥 DataSync 具有前缀`aws-datasync`。

只有当您在以外的服务之外创建机密 DataSync 或从服务管理的密钥发出 API 调用时，才需要支付使用密钥的费用。 DataSync

## 使用通过默认密钥加密的服务托管密钥


创建 DataSync 位置时，您只需提供密钥字符串即可。 DataSync在 Secrets Manager 中创建密钥资源来存储你提供的密钥，并使用你账户的默认 Secrets Manager KMS 密钥对密钥进行加密。你可以直接在 Secrets Manager 中更改密钥值，也可以使用 DataSync 控制台 Amazon CLI、或 SDK 更新位置。当您删除位置资源或将其更新为使用自定义密钥时， DataSync会自动删除该密钥资源。

**注意**  
要在 Secrets Manager 中创建、修改和删除机密资源， DataSync 必须具有相应的权限。有关更多信息，请参阅[适用于 DataSync 的Amazon 托管策略](https://docs.amazonaws.cn/datasync/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-awsdatasyncfullaccess)。

## 使用使用自定义 Amazon KMS 密钥加密的服务管理密钥


创建 DataSync 位置时，您需要提供密钥的密钥和 ARN。 Amazon KMS DataSync 自动在 Secrets Manager 中创建密钥资源来存储您提供的密钥，并使用您的密 Amazon KMS 钥对其进行加密。你可以直接在 Secrets Manager 中更改密钥值，也可以使用 DataSync 控制台 Amazon CLI、或 SDK 更新位置。当您删除位置资源或将其更新为使用自定义密钥时， DataSync 会自动删除该密钥资源。

**注意**  
您的 Amazon KMS 密钥必须使用密`ENCRYPT_DECRYPT`钥类型的对称加密。有关更多信息，请参阅《Amazon Secrets Manager 用户指南》**中的[选择 Amazon Key Management Service 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/create_secret.html)。

要在 Secrets Manager 中创建、修改和删除机密资源， DataSync 必须具有相应的权限。有关更多信息，请参阅 [Amazon 托管策略：AWSDataSyncFullAccess](https://docs.amazonaws.cn/datasync/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-awsdatasyncfullaccess)。

除了使用正确的 DataSync 托管策略外，您还需要以下权限：

```
{
    "Sid": "DataSyncKmsPermissions",
    "Effect": "Allow",
    "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "your-kms-key-arn",
    "Condition": {
        "StringLike": {
            "kms:ViaService": "secretsmanager.*.amazonaws.com"
        }
    }
}
```

*your-kms-key-arn*替换为您的 KMS 密钥 ARN。

要检索和解密密密钥值，请 DataSync 使用服务关联角色 (SLR) 访问您的密钥。 Amazon KMS 为确保 DataSync 可以使用您的 KMS 密钥，请在密钥的政策声明中添加以下内容：

```
{
    "Sid": "Allow DataSync to use the key for decryption",
    "Effect": "Allow",
    "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/aws-service-role/datasync.amazonaws.com/AWSServiceRoleForDataSync"
    },
    "Action": "kms:Decrypt",
    "Resource": "*"
}
```

*111122223333*用您的 Amazon Web Services 账户 身份证替换。

## 使用您管理的密钥


在创建 DataSync 位置之前，请在 Secrets [Manager 中创建一个密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/create_secret.html)。密钥值只能包含明文形式的密钥字符串本身。创建 DataSync 位置时，您需要提供密钥的 ARN 以及用于访问您的密钥和用于加密您的密 Amazon KMS 钥的 IAM 角色。 DataSync 要创建具有适当权限的 IAM 角色，请执行以下操作：

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格的**访问管理**下，选择**角色**，然后选择**创建角色**。

1. 在**选择可信实体**页面中，在**可信实体类型**下选择**Amazon 服务**。

1. 对于 “**用例**”，请**DataSync**从下拉列表中进行选择。选择**下一步**。

1. 在**添加权限**页面上，选择**下一步**。输入角色的名称，然后选择**创建角色**。

1. 在**角色**页面上，搜索您刚刚创建的角色并选择其名称。

1. 在角色的**详细信息**页面上，选择**权限**选项卡。选择**添加权限**，然后选择**创建内联策略**。

1. 选择 **JSON** 选项卡，然后将以下权限添加到策略编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:your-secret-name"
           }
       ]
   }
   ```

------

   *your-secret-name*替换为你的 Secrets Manager 密钥的名称。

1. 选择**下一步**。输入策略名称，然后选择**创建策略**。

1. （推荐）为防止出现[跨服务混淆代理问题](https://docs.amazonaws.cn/datasync/latest/userguide/cross-service-confused-deputy-prevention.html)，请执行以下操作：

   1. 在角色的**详细信息**页面上，选择**信任关系**选项卡。选择**编辑信任策略**。

   1. 使用以下示例更新信任策略，其中包括 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "datasync.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                      "aws:SourceAccount": "111122223333"
                      },
                      "ArnLike": {
                      "aws:SourceArn": "arn:aws:datasync:us-east-1:111122223333:*"
                      }
                  }
              }
          ]
      }
      ```

------

   1. 选择**更新策略**。

您可以在创建位置时指定此角色。如果您的密钥使用客户管理的密 Amazon KMS 钥进行加密，则您还需要更新密钥的策略，以允许您在上一个过程中创建的角色进行访问。要更新政策，请在 Amazon KMS 密钥的政策声明中添加以下内容：

```
{
    "Sid": "Allow DataSync use of the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam:111122223333:role/your-role-name”
    },
    "Action": "kms:Decrypt",
    "Resource": "*"
}
```

*111122223333*替换为您的 Amazon Web Services 账户 ID，*your-role-name*以及您在上一个过程中创建的 IAM 角色的名称。

**注意**  
当你在 Secret Amazon Web Services 账户 s Manager 中存储密钥时，会产生费用。有关定价的信息，请参阅 [Amazon Secrets Manager 定价](https://www.amazonaws.cn/secrets-manager/pricing/)。