AWS 계정 간에 AWS Secrets Manager 보안 정보를 공유하려면 어떻게 해야 하나요?

3분 분량
0

다른 AWS 계정에서 내 AWS Secrets Manager 보안 정보를 공유하고 싶습니다. 어떻게 해야 합니까?

간략한 설명

이 예시에서 Security_Account 사용자는 계정 A의 자격 증명을 관리하고, Dev_Account 사용자는 계정 B의 개발자에 의해 사용됩니다. Dev_Account의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행 중인 AWS Identity and Access Management(IAM) 사용자 또는 애플리케이션은 Security_Account 사용자 계정에서 보안을 검색합니다. 보안 정보에 대해 리소스 기반 정책을 사용할 수 있으며 이를 통해 보안 정보에 권한 정책을 연결할 수 있습니다. 이 정책을 사용하면 Dev_Account의 IAM 엔터티에서 Security_Account의 보안 정보에 액세스하도록 허용할 수 있습니다.

Security_Account(계정 A)에서 DevSecret이라는 보안 정보는 AWS Key Management Service (AWS KMS) 키 DevSecretKMS를 사용하여 암호화됩니다. 그런 다음, 보안 정보는 Dev_Account(계정 B)와 공유됩니다.

참고: 계정의 AWS KMS 기본 키는 사용할 수 없습니다. AWS KMS 기본 키는 AWS Key Management Service에서 실행되는 AWS 서비스에서 자동으로 생성, 관리 및 사용됩니다. AWS KMS 기본 키는 AWS 계정 및 AWS 리전에 고유합니다. AWS 관리형 키를 생성하는 서비스만 해당 기본 키를 사용할 수 있습니다. 자세한 내용은 AWS KMS 키를 참조하세요.

해결 방법

보안 정보가 있는 리전의 Security_Account(계정 A)에서 다음 단계를 따릅니다.

1.    보안 정보가 없는 경우 보안 정보 생성 지침을 따릅니다. 보안 정보에 대한 AWS KMS 키 ID 파라미터에 Amazon 리소스 이름(ARN)을 지정해야 합니다.

2.    별칭을 사용하는 기존 보안이 있는 경우 보안 정보 수정 지침을 따릅니다. 보안 정보에 대해 AWS KMS 키 ID 파라미터에서 AWS KMS 키 ARN을 지정해야 합니다.

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

3.    AWS KMS 키의 키 정책에 권한을 부여합니다. Secrets Manager는 기본적으로 보안을 암호화합니다. 이러한 보안 정보를 검색하는 자격 증명에는 복호화에 대한 액세스 권한이 필요합니다. DevSecret는 DevSecretKMS를 사용하여 암호화되므로 다음 권한을 추가하여 키 정책을 변경해야 합니다.

참고: your-regionAWS 리전으로 대체합니다.

{
  "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를 사용할 수 있는 권한을 부여합니다. 또한 이 정책은 DevSecretKMS에서 decrypt 및 describe-key 명령을 사용하는 기능도 SecretsUser에 부여합니다.

4.    IAM 엔터티에서 보안 정보에 액세스할 수 있는 권한을 허용합니다. Security_Account의 경우 SecretsUser에 대해 DevSecret을 검색할 수 있는 권한을 부여하는 리소스 기반 정책을 연결합니다.

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

Dev_Account(계정 B)에서 다음 단계를 수행합니다.

1.    보안 정보를 검색할 IAM 자격 증명에 권한을 연결합니다. 다음과 비슷한 신뢰 정책을 사용합니다.

참고: your-regionAWS 리전으로 대체합니다.

{
  "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 복호화 권한이 필요합니다.

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


관련 정보

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

암호화된 AWS Secrets Manager 보안 정보에 액세스하는 문제를 해결하려면 어떻게 해야 하나요?

다른 계정의 사용자에 대한 권한

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