從不同帳戶存取 AWS Secrets Manager 秘密 - AWS Secrets Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從不同帳戶存取 AWS Secrets Manager 秘密

若要允許一個帳戶中的使用者存取另一個帳戶中的秘密 (跨帳戶存取),您必須同時允許在資源政策和身分政策中的存取權。這與授予和秘密所在的同一帳戶中的身分存取權不同。

您還必須允許身分使用密碼加密所用的KMS金鑰。這是因為您無法將 AWS 受管金鑰 (aws/secretsmanager) 用於跨帳戶存取。相反地,您必須使用您建立的KMS金鑰來加密秘密,然後將金鑰政策連接至該金鑰。建立KMS金鑰需要付費。若要變更秘密的加密金鑰,請參閱 修改 AWS Secrets Manager 密碼

下列範例政策假設您在 Account1 中有秘密和加密金鑰,在 Account2 中有想要允許存取秘密值的身分。

步驟 1:將資源政策連接至 Account1 中的秘密
  • 下列政策允許 ApplicationRole in Account2 在 中存取秘密 Account1。 若要使用此政策,請參閱 資源型政策

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
步驟 2:將陳述式新增至 Account1 中金鑰的KMS金鑰政策
  • 下列金鑰政策陳述式允許 ApplicationRole in Account2 在 中使用 KMS 金鑰 Account1 在 中解密秘密 Account1。 若要使用此陳述式,請將其新增至金鑰的KMS金鑰政策。如需詳細資訊,請參閱變更金鑰政策

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }
步驟 3:將身分政策連接至 Account2 中的身分
  • 下列政策允許 ApplicationRole in Account2 在 中存取秘密 Account1 並使用 中的加密金鑰解密秘密值 Account1。 若要使用此政策,請參閱 身分型政策。您可以在 Secrets Manager 主控台的秘密詳細資訊頁面中,找到秘密ARN的 。 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" } ] }