내용으로 건너뛰기

계정 간에 Secrets Manager 비밀을 공유하려면 어떻게 해야 합니까?

2분 분량
0

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

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

계정 간에 암호를 공유하려면 사용자 지정 AWS Key Management Service(AWS KMS) 키를 만들고 지정해야 합니다. 계정 간에 비밀을 공유할 때는 기본 KMS 키를 사용할 수 없습니다. 기본 KMS 키는 AWS KMS에서 실행되는 AWS 서비스에서 자동으로 만들고, 관리하고, 사용합니다. 계정 및 AWS 리전마다 고유하며, 키를 만든 서비스에서만 사용할 수 있습니다. 자세한 내용은 AWS KMS 키를 참고하십시오.

비밀을 소유한 계정 구성

비밀이 없다면 Secrets Manager 비밀을 만드십시오. AWS KMS 키 ID 파라미터에 비밀과 관련한 Amazon 리소스 이름(ARN)을 지정해야 합니다.

별칭을 사용하는 기존 비밀이 있는 경우 비밀을 수정하십시오. 비밀의 KMS 키 ID 파라미터에 KMS 키 ARN을 지정해야 합니다. 다른 계정에서 비밀에 액세스하려면 전체 KMS 키 ARN을 사용해야 합니다.

중요: 다음 정책에서 주체 ARN을 대상 계정의 ARN으로, SecretARN을 소스 계정의 ARN으로, KMS 키 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(AWS IAM) 역할에 비밀에 액세스할 수 있는 권한을 부여합니다.

비밀 리소스 기반 정책의 예:

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

비밀이 필요한 다른 계정의 권한 구성

비밀을 가져오려면 IAM 사용자에게 secretsmanager:GetSecretValue 권한이 있어야 합니다. 또한 비밀이 KMS 키를 사용하여 암호화되는 경우 IAM 사용자에게 암호 해독 권한이 있어야 합니다.

비밀을 가져오려는 IAM ID에 secretsmanager:GetSecretValue 권한을 연결합니다.

정책 예시:

{  "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 키 액세스 오류를 해결하려면 어떻게 해야 합니까?