

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

# 安全性和权限
<a name="mes-security"></a>

托管的外部密钥不需要您与之共享第三方应用程序帐户的管理员级别权限。 AWS相反，轮换过程使用您提供的证书和元数据向第三方应用程序进行授权的 API 调用，以进行凭据更新和验证。

托管的外部密钥与其他 Secrets Manager 密钥类型保持相同的安全标准。密钥值使用您的 KMS 密钥进行静态加密，在传输过程中使用 TLS 进行加密。密钥的访问通过 IAM 策略和基于资源的策略进行控制。使用客户管理的密钥加密您的密钥时，您需要更新轮换角色的 IAM 策略和 CMK 信任策略，以提供所需的权限，确保成功轮换。

为了使轮换正常运行，您必须向凭据管理器提供管理密钥生命周期的特定权限。这些权限可以限定为单个机密信息，并遵循最小权限原则。您提供的轮换角色在设置过程中经过验证，专门用于轮换操作。

您可以通过仅允许密钥所在区域的 Secrets Manager 管理的外部密钥[AWS管理前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)来限制 IP 进入外部资源。前缀列表已命名`com.amazonaws.{{region}}.secretsmanager-managed-external-secrets`，其中{{region}}是您的机密 AWS 区域。使用托管前缀列表可确保您的入口规则随着底层 IP 范围的变化自动保持最新状态。

如果您更愿意以编程方式引用前缀列表，则可以使用 [ GetManagedPrefixListEntries ](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetManagedPrefixListEntries.html) API 列出需要列入许可名单的 IP。您应该使用此前缀列表定期刷新您的入口规则，以使其保持最新状态。

 AWS Secrets Manager 还提供一键式解决方案，用于创建 IAM 策略，该策略具有在通过 Secrets Manager 控制台创建密钥时管理密钥所需的权限。该角色的权限适用于每个地区的每个集成合作伙伴。

**权限策略示例：**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowRotationAccess",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "secretsmanager:UpdateSecretVersionStage"
      ],
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "secretsmanager:resource/Type": "{{SalesforceClientSecret}}"
        }
      }
    },
    {
      "Sid": "AllowPasswordGenerationAccess",
      "Action": [
        "secretsmanager:GetRandomPassword"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

注意：secretsmanager: 可用的密钥类型列表resource/Type 可以在[集成合作伙伴中找到。](mes-partners.md)

**信任政策示例：**

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