AWS 계정 간에 AWS Secrets Manager 비밀을 공유하려면 어떻게 해야 하나요?

3분 분량
0

내 AWS Secrets Manager 비밀을 다른 AWS 계정과 공유하고 싶습니다.

간략한 설명


이 예시에서 Security_Account 사용자는 계정 A의 보안 인증 정보 관리자이고, Dev_Account 사용자는 계정 B의 개발자입니다. 애플리케이션이나 AWS Identity and Access Management(AWS IAM) 사용자는 Dev_Account의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 작업합니다. 사용자나 애플리케이션은 Security_Account 사용자 계정에서 비밀을 가져옵니다.

비밀에 권한 정책을 연결할 수 있는 비밀에는 리소스 기반 정책을 사용합니다. 이 정책을 사용하면 개발자 계정의 IAM 엔터티가 Dev_Account 비밀에 액세스하도록 허용할 수 있습니다.

Security_Account(계정 A)에 있는 DevSecret 비밀은 AWS Key Management Service(AWS KMS) 키 DevSecretKMS로 암호화됩니다. 그러면 비밀을 Dev_Account(계정 B)와 공유할 수 있습니다.

참고: 계정에 AWS KMS 기본 키를 사용할 수 없습니다. AWS KMS 기본 키는 사용자를 대신해 AWS Key Management Service(AWS KMS)에서 생성, 관리, 사용합니다. AWS 계정과 AWS 리전별로 고유한 AWS KMS 기본 키가 생성됩니다. AWS 관리형 키를 생성한 서비스에서만 해당 키를 사용할 수 있습니다. 자세한 내용은 AWS KMS 키를 참고하세요.

해결 방법

Security_Account(계정 A) 구성

비밀이 있는 리전의 Security_Account(계정 A)에서 다음 단계를 실행합니다.

  1. 비밀이 없는 경우 비밀 생성 지침에 따라 비밀을 생성하세요. AWS KMS 키 ID 파라미터에 비밀과 관련한 Amazon 리소스 이름(ARN)을 지정합니다.

  2. 별칭을 사용하는 기존 비밀이 있는 경우 비밀 수정 지침을 따르세요. AWS KMS 키 ID 파라미터에 비밀과 관련한 AWS KMS 키 ARN을 지정합니다.

참고: 다른 AWS 계정에서 비밀에 액세스하려면 전체 AWS KMS 키 ARN을 사용해야 합니다.

  1. AWS KMS 키의 키 정책에서 권한을 부여합니다. Secrets Manager에서는 기본적으로 비밀을 암호화합니다. 이 비밀을 검색하는 ID에는 비밀을 암호 해독할 수 있는 액세스 권한이 필요합니다. 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를 사용할 수 있는 권한을 부여합니다.

  1. 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 ID에 권한을 연결합니다. 다음과 유사한 정책을 사용하세요.

참고: 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"
      ]
    }
  ]
}

Dev_Account에서 비밀을 가져오려면 IAM 사용자 SecretsUser가 secretsmanager:GetSecretValue에 권한이 있어야 합니다. DevSecret이 DevSecretKey로 암호화되기 때문에 SecretsUser에게 AWS 암호 해독 권한이 필요합니다.

  1. 다음과 같이 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 엔터티에 연결된 권한을 편집합니다.

관련 정보

리소스 기반 정책을 연결해 여러 AWS 계정에서 비밀에 액세스하는 방법

암호화된 AWS Secrets Manager 비밀에 액세스할 때 생기는 문제를 해결하려면 어떻게 해야 하나요?

다른 계정 사용자에게 AWS Secrets Manager 비밀 권한 부여

AWS 공식
AWS 공식업데이트됨 8달 전