Amazon S3에서 KMS로 암호화된 개체를 다운로드할 때 AWS KMS 키를 지정해야 하나요?

2분 분량
0

AWS 키 관리 서비스 관리 키(SSE-KMS)로 서버 측 암호화를 사용하는 Amazon Simple Storage Service(S3)에서 저장된 개체를 다운로드하고 싶습니다.

해결 방법

S3 버킷에서 SSE-KMS로 암호화된 개체를 다운로드할 때 AWS KMS(AWS 키 관리 서비스) 키 ID를 지정할 필요가 없습니다. 대신 AWS KMS 키 암호를 해독할 수 있는 권한이 필요합니다.

사용자가 GET 요청을 보내면 Amazon S3에서는 적절한 권한이 있는지 확인해야 합니다. Amazon S3에서 요청을 전송한 AWS ID 및 액세스 관리(IAM) 사용자 또는 역할이 개체 키의 암호를 해독할 권한이 있는지 확인합니다. IAM 사용자 또는 역할과 키가 동일한 AWS 계정에 속하는 경우 키 정책에 암호 해독 권한이 부여되어야 합니다.

참고: IAM 사용자 또는 역할과 KMS 키가 동일한 계정에 있는 경우 IAM 정책을 사용해 키에 대한 액세스를 제어할 수 있습니다. 그러나 명시적으로 IAM 정책을 통해 키에 액세스할 수 있도록 키 정책을 수정해야 합니다. 자세한 내용은 AWS KMS로 IAM 정책 사용하기를 참고하세요.

IAM 사용자 또는 역할과 키가 서로 다른 계정에 속하는 경우 IAM 사용자의 정책과 키 정책에 암호 해독 권한을 부여해야 합니다.

다음은 사용자가 AWS KMS 키를 해독하고 S3 버킷에서 다운로드할 수 있도록 허용하는 IAM 정책의 예입니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:kms:example-region-1:123456789012:key/example-key-id",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

다음은 사용자가 키의 암호를 해독할 수 있도록 허용하는 예제 키 정책 문입니다.

{
  "Sid": "Allow decryption of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::123456789012:user/Bob"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}

참고: 버킷과 다른 계정에 속하는 IAM 사용자 또는 역할의 경우, 버킷 정책도 사용자에게 개체에 대한 액세스 권한을 부여해야 합니다. 예를 들어 사용자가 버킷에서 다운로드해야 하는 경우, 사용자에게 버킷 정책에서 s3:GetObject 작업에 대한 권한이 있어야 합니다.

키 암호 해독 권한이 있으면 AWS Command Line Interface(AWS CLI)를 사용해 키로 암호화된 S3 개체를 다운로드할 수 있습니다. 다음과 같은 명령을 실행하세요.

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key dir/example-object-name example-object-name

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

관련 정보

GetObject

get-object

SSE-KMS(AWS 키 관리 서비스)에 저장된 CMK로 서버 측 암호화를 사용해 데이터 보호

AWS 공식
AWS 공식업데이트됨 일 년 전