如何在 AWS 帳戶之間共用 AWS Secrets Manager 機密?
我想要與另一個 AWS 帳戶共用我的 AWS Secrets Manager 機密。
簡短描述
在此範例中,Security_Account 使用者管理帳戶 A 中的憑證,帳戶 B 中的開發人員會使用 Dev\ _Account 使用者。AWS Identity and Access Management (IAM) 使用者或應用程式在 Dev_Account 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體中執行。此使用者或應用程式會擷取 Security_Account 使用者帳戶中的機密。
對機密使用以資源為基礎的政策可讓您將許可政策連接至機密。使用此政策可允許來自您 Dev_Account 中的 IAM 實體存取 Security_Account 中的機密。
使用 AWS Key Management Service (KMS) 金鑰 DevSecretKMS 對 Security_Account (帳戶 A) 中名為 DevSecret 的機密進行加密。然後,機密會與您的 Dev_Account (帳戶 B) 共用。
**注意:**您無法對該帳戶使用 AWS KMS 預設金鑰。AWS KMS 預設金鑰由在 AWS Key Management Service 上執行的 AWS 服務代表您建立、管理及使用。AWS KMS 預設金鑰對您的 AWS 帳戶和 AWS 區域而言是唯一。只有建立 AWS 受管金鑰的服務才能使用它。如需詳細資訊,請參閱 AWS KMS key。
解決方法
設定 Security_Account (帳戶 A)
在您的機密所在區域的 Security_Account (帳戶 A) 中執行下列步驟。
1. 如果您沒有機密,請遵循建立機密的指示進行操作。在機密的 AWS KMS key ID 參數中指定 Amazon Resource Name (ARN)。
2. 如果您具有使用別名的現有機密,請遵循修改密碼的指示進行操作。在機密的 AWS KMS key ID 參數中指定 AWS KMS key ARN。
**注意:**您必須使用完整的 AWS KMS key ARN,才能從另一個 AWS 帳戶存取機密。
3. 在 AWS KMS key 的金鑰政策中授與許可。Secrets Manager 預設會對機密進行加密。擷取這些機密的身分識別需要存取權才能解密。由於 DevSecret 是使用 DevSecretKMS 加密的,因此您必須變更金鑰政策。為此,請新增下列許可
**注意:**將 your-region 取代為您的 AWS 區域。
{ "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.your-region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????" } } }
此政策授與 Dev_Account (帳戶 B) 中的 SecretsUser 使用 Security_Account (帳戶 A) 中的 DevSecretKMS 許可。
4. 允許 IAM 實體許可存取機密。從 Security_Account,連接以資源為基礎的政策,該政策授與 SecretsUser 擷取 DevSecret 的許可。
注意: 將主體 ARN 取代為 IAM 使用者或角色的 ARN。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ]
設定 Dev_Account (帳戶 B)
在 Dev_Account (帳戶 B) 中完成下列步驟。
1. 將許可連接至您要擷取機密的 IAM 身分。使用類似下列內容的政策:
**注意:**將 your-region 取代為您的 AWS 區域。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????" ] }, { "Sid": "AllowKMSDecrypt", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:your-region:Security_Account:key/DevSecretKMS_id" ] } ] }
若要讓 IAM 使用者 SecretsUser 在 Dev_Account 中擷取機密,SecretsUser 必須擁有 secretsmanager:GetSecretValue 的許可。SecretsUser 需要 AWS decrypt 許可,因為 DevSecret 使用 DevSecretKey 進行加密。
2. 以 SecretsUser 身分擷取機密,類似以下內容:
$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret --version-stage AWSCURRENT --region your-region
**注意:**將 your-region 取代為機密所在的 AWS 區域。
將這些指示用於所有 IAM 實體。例如,對於 Amazon EC2 執行個體設定檔或角色,請在資源政策中取代或新增 ARN。然後,編輯連接至 IAM 實體的許可。
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 10 個月前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前