从其他账户访问 AWS Secrets Manager 密钥 - AWS Secrets Manager

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

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

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

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

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
步骤 2:在 A ccoun t1 中为密钥的KMS密钥策略添加声明
  • 以下密钥策略声明允许使用ApplicationRole中的Account2KMS密钥Account1来解密中的密钥。Account1要使用此语句,请将其添加到密钥的密KMS钥策略中。有关更多信息,请参阅更改密钥政策

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

    { "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:Account1:key/EncryptionKey" } ] }