

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

# 从其他账户访问 AWS Secrets Manager 密钥
<a name="auth-and-access_examples_cross"></a>

一个账户中的用户可以访问另一个账户中的密钥（*跨账户访问*），您必须允许在资源策略和身份策略中进行访问。这与授予密钥所在账户中的身份访问权限不同。

Cross-account 权限仅对以下操作有效：
+ [CancelRotateSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_CancelRotateSecret.html)
+ [DeleteResourcePolicy](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_DeleteResourcePolicy.html)
+ [DeleteSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_DeleteSecret.html)
+ [DescribeSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_DescribeSecret.html)
+ [GetRandomPassword](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_GetRandomPassword.html)
+ [GetResourcePolicy](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_GetResourcePolicy.html)
+ [GetSecretValue](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_GetSecretValue.html)
+ [ListSecretVersionIds](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_ListSecretVersionIds.html)
+ [PutResourcePolicy](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_PutResourcePolicy.html)
+ [PutSecretValue](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_PutSecretValue.html)
+ [RemoveRegionsFromReplication](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_RemoveRegionsFromReplication.html)
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html)
+ [RestoreSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_RestoreSecret.html)
+ [RotateSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_RotateSecret.html)
+ [StopReplicationToReplica](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_StopReplicationToReplica.html)
+ [TagResource](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_TagResource.html)
+ [UntagResource](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_UntagResource.html)
+ [UpdateSecret](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_UpdateSecret.html)
+ [UpdateSecretVersionStage](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_UpdateSecretVersionStage.html)
+ [ValidateResourcePolicy](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_ValidateResourcePolicy.html)

您可以将`BlockPublicPolicy`参数与[PutResourcePolicy](https://docs.aws.amazon.com//secretsmanager/latest/apireference/API_PutResourcePolicy.html)操作配合使用，防止通过直接附加到您的密钥的资源策略授予公共访问权限，从而帮助保护您的资源。您也可以使用 [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-preview-access) 验证跨账户访问权限。

您还必须允许身份使用密钥加密的 KMS 密钥。这是因为您不能使用 AWS 托管式密钥 (`aws/secretsmanager`) 进行跨账户访问。相反，您必须使用您创建的 KMS 密钥加密密钥，然后随附密钥策略。创建 KMS 密钥需支付费用。要更改密钥的加密密钥，请参阅 [修改密 AWS Secrets Manager 钥](manage_update-secret.md)。

**重要**  
Resource-based 授予`secretsmanager:PutResourcePolicy`权限的策略使委托人（即使是其他账户中的委托人）也能够修改基于资源的策略。此权限可让主体升级现有权限，例如获得对密钥的完全管理访问权限。我们建议您对策略应用[最低权限访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)的原则。有关更多信息，请参阅 [Resource-based 政策](auth-and-access_resource-policies.md)。

下列示例策略假定您在 *Account1* 中有密钥和加密密钥，而在 *Account2* 的身份希望有访问密钥值的权限。

**步骤 1：将资源策略附加到 *Account1* 中的密钥**
+ 以下策略允许用户{{Account2}}访问{{ApplicationRole}}中的密钥{{Account1}}。要使用该策略，请参阅 [Resource-based 政策](auth-and-access_resource-policies.md)。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::{{111122223333}}:role/{{ApplicationRole}}"
              },
              "Action": "secretsmanager:GetSecretValue",
              "Resource": "*"
          }
      ]
  }
  ```

------

**步骤 2：将语句添加到 *Account1* 中 KMS 密钥的密钥策略中**
+ 以下密钥政策语句允许 {{Account2}} 中的 {{ApplicationRole}} 使用 {{Account1}} 中的 KMS 密钥来解密 {{Account1}} 中的密钥。要使用此语句，请将其添加到 KMS 密钥的密钥策略中。有关更多信息，请参阅[更改密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

  ```
  {
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::{{Account2}}:role/{{ApplicationRole}}"
    },
    "Action": [
      "kms:Decrypt",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
  ```

**步骤 3：将身份策略附加到 *Account2* 中的身份**
+ 以下策略允许 {{Account2}} 中的 {{ApplicationRole}} 访问 {{Account1}} 中的密钥，并通过使用同样位于 {{Account1}} 中的加密密钥来解密密钥值。要使用该策略，请参阅 [Identity-based 政策](auth-and-access_iam-policies.md)。您可以在 Secrets Manager 控制台的密钥详细信息页面的**密钥 ARN** 下方找到您的密钥 ARN。此外，您也可以调用 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/describe-secret.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/describe-secret.html)。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "secretsmanager:GetSecretValue",
              "Resource": "arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{secretName-AbCdEf}}"
          },
          {
              "Effect": "Allow",
              "Action": "kms:Decrypt",
              "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{EncryptionKey}}"
          }
      ]
  }
  ```

------