从其他账户访问 Amazon Secrets Manager 密钥 - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从其他账户访问 Amazon Secrets Manager 密钥

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

跨账户权限仅对以下操作有效:

您可以结合使用 BlockPublicPolicy 参数和 PutResourcePolicy 操作,通过阻止利用直接附加到您密钥的资源策略授予公共访问权限来帮助保护自己的资源。您也可以使用 IAM Access Analyzer 验证跨账户访问权限。

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

重要

授予 secretsmanager:PutResourcePolicy 权限的基于资源的策略使主体(即使是其他账户中的主体)能够修改基于资源的策略。此权限可让主体升级现有权限,例如获得对密钥的完全管理访问权限。我们建议您对策略应用最低权限访问的原则。有关更多信息,请参阅 基于资源的策略

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

步骤 1:将资源策略附加到 Account1 中的密钥
  • 下列策略允许 Account2 中的 ApplicationRole 访问 Account1 中的密钥。要查看该策略,请参阅 基于资源的策略

    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 密钥的密钥策略中。有关更多信息,请参阅更改密钥策略

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }
步骤 3:将身份策略附加到 Account2 中的身份
  • 以下策略允许 Account2 中的 ApplicationRole 访问 Account1 中 密钥,并通过使用 Account1 中的加密密钥来解密密钥。要使用该策略,请参阅 基于身份的策略。您可以在 Secrets Manager 控制台的密钥详细信息页面的密钥 ARN 下方找到您的密钥 ARN。此外,您也可以调用 describe-secret

    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" } ] }