跳至內容

如何在不同帳戶之間共用 Secrets Manager 密碼?

2 分的閱讀內容
0

我想要與另一個 AWS 帳戶共用我的 AWS Secrets Manager 密碼。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

您必須建立並指定自訂 AWS Key Management Service (AWS KMS) Key,才能在不同帳戶之間共用密碼。當您在不同帳戶之間共用密碼時,不能使用預設的 KMS key。預設 KMS key 是由在 AWS KMS 上執行的 AWS 服務代表您建立、管理和使用的。它專屬於您的帳戶和 AWS 區域,且只能將其用於建立它的服務。如需詳細資訊,請參閱 AWS KMS keys

設定擁有密碼的帳戶

如果您沒有密碼,請建立 Secrets Manager 密碼。確保在密碼的 KMS key ID 參數中指定 Amazon Resource Name (ARN)。

如果您有使用別名的現有密碼,請修改該密碼。確保在密碼的 KMS key ID 參數中指定 KMS key ARN。您必須使用完整的 KMS key ARN 才能從另一個帳戶存取密碼。

**重要:**在以下政策中,將 Principal ARN 替換為目標帳戶的 ARN,將 SecretARN 替換為來源帳戶的 ARN,並將 KMS Key ARN 替換為來源帳戶的 ARN。另外,請將 YOUR-REGION 替換為您的地區。

將以下陳述式新增至金鑰政策,然後將範例值替換為您的值:

{  "Sid": "AllowUseOfTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::444455556666:user/username"
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "secretsmanager.YOUR-REGION.amazonaws.com"
    },
    "StringLike": {
      "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:YOUR-REGION:111122223333:secret:secretname??????"
    }
  }
}

接著附加資源型政策,以授予 AWS Identity and Access Management (IAM) 角色存取該密碼的權限。

密碼資源型政策範例:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::444455556666:user/username"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }
  ]
  }

在需要密碼的另一個帳戶中設定權限

IAM 使用者必須具有 secretsmanager:GetSecretValue 權限才能擷取密碼。此外,當使用 KMS key 加密密碼資訊時,IAM 使用者必須擁有解密權限

secretsmanager:GetSecretValue 權限附加到您想擷取密碼的 IAM 身分。

政策範例:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGetSecretValue",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "arn:aws:secretsmanager:your-region:777788889999:secret:secretname-??????"
      ]
    },
    {
      "Sid": "AllowKMSDecrypt",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:YOUR-REGION:777788889999:key/secretnameKMS_id"
      ]
    }
  ]
}

然後,執行以下 get-secret-value 命令來擷取該密碼作為來源密碼值:

aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:YOUR-REGION:777788889999:secret:secretname --version-stage AWSCURRENT --region YOUR-REGION

相關資訊

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

如何透過附加資源型政策跨 AWS 帳戶存取密碼

如何解決在嘗試擷取加密 Secrets Manager 密碼後,出現的 AWS KMS key 存取錯誤?