다른 계정의 AWS Secrets Manager 보안 암호 액세스 - AWS Secrets Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

다른 계정의 AWS Secrets Manager 보안 암호 액세스

하나의 계정에 속한 사용자가 다른 계정의 보안 암호에 액세스하도록 허용하려면(교차 계정 액세스) 리소스 정책 및 ID 정책 모두에서 액세스를 허용해야 합니다. 이는 보안 암호와 동일한 계정의 자격 증명에 액세스를 부여하는 것과 다릅니다.

교차 계정 권한은 다음 작업에만 적용됩니다.

BlockPublicPolicy 파라미터를 PutResourcePolicy 작업과 함께 사용하면 보안 암호에 직접 연결된 리소스 정책을 통해 퍼블릭 액세스가 부여되지 않도록 하여 리소스를 보호할 수 있습니다. IAM Access Analyzer를 사용하여 교차 계정 액세스를 확인할 수도 있습니다.

또한 보안 암호를 암호화하는 KMS 키를 자격 증명에서 사용하도록 허용해야 합니다. 이는 교차 계정 액세스에 AWS 관리형 키 (aws/secretsmanager)를 사용할 수 없기 때문입니다. 대신 생성한 KMS 키로 보안 암호를 암호화한 후 키 정책을 연결해야 합니다. KMS 키를 생성하는 데에는 요금이 부과됩니다. 보안 암호에 대한 암호화 키를 변경하려면 AWS Secrets Manager 보안 암호 수정 단원을 참조하세요.

중요

secretsmanager:PutResourcePolicy 권한을 부여하는 리소스 기반 정책은 보안 주체, 심지어 다른 계정의 보안 주체에게도 리소스 기반 정책을 수정할 수 있는 권한을 부여합니다. 이 권한을 통해 보안 주체는 보안 암호에 대한 전체 관리 액세스 권한을 얻는 것과 같은 기존 권한을 에스컬레이션할 수 있습니다. 정책에 최소 권한 액세스 원칙을 적용하는 것이 좋습니다. 자세한 내용은 리소스 기반 정책 단원을 참조하십시오.

다음 예제 정책에서는 계정1에 보안 암호 및 암호화 키가 있고, 보안 암호 값에 액세스할 수 있도록 허용할 자격 증명이 계정2에 있다고 가정합니다.

1단계: Account1의 보안 암호에 리소스 정책 연결
  • 다음 정책은 계정2ApplicationRole계정1의 보안 암호에 액세스하도록 허용합니다. 이 정책을 사용하려면 리소스 기반 정책 단원을 참조하세요.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
2단계: Account1의 KMS 키에 대한 키 정책에 명령문 추가
  • 다음 키 정책 문은 계정2ApplicationRole계정1의 KMS 키를 사용하여 계정1의 보안 암호를 복호화하도록 허용합니다. 이 명령문을 사용하려면 KMS 키의 키 정책에 추가합니다. 자세한 내용은 키 정책 변경을 참조하세요.

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }
3단계: Account2의 자격 증명에 자격 증명 정책 연결
  • 다음 정책은 계정2ApplicationRole계정1의 보안 암호에 액세스하고 계정1의 암호화 키도 사용하여 보안 암호 값을 복호화하도록 허용합니다. 이 정책을 사용하려면 ID 기반 정책 단원을 참조하세요. Secrets Manager 콘솔의 보안 암호 세부 정보 페이지에 있는 보안 암호 ARN 아래에서 보안 암호에 대한 ARN을 찾을 수 있습니다. 또는 describe-secret을 호출할 수 있습니다.

    JSON
    { "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:Account1:key/EncryptionKey" } ] }