ACL 비활성화를 위한 사전 요구 사항

ACL 비활성화를 위한 사전 요구 사항

기존 버킷에서 ACL을 비활성화하기(Bucket owner enforced 설정) 전에 먼저 완료해야 하는 사전 요구 사항이 있어요. 이 과정은 ACL로 부여된 권한이 손실되지 않도록 정책으로 마이그레이션했는지 확인하는 것을 목표로 해요.

참고

이 사전 요구 사항을 완료하기 전에 ACL을 비활성화하면, ACL을 통해 부여되었던 권한이 더 이상 적용되지 않아 예상치 못한 접근 중단이 발생할 수 있어요.

1단계: 버킷 및 객체 ACL을 검토하고 ACL 권한을 마이그레이션

먼저 버킷과 객체에 설정된 ACL을 검토해 어떤 계정이나 그룹에 어떤 권한이 부여되어 있는지 파악해요.

  1. 버킷 및 객체의 ACL을 나열하여 현재 부여된 모든 권한을 기록합니다. get-bucket-acl 및 get-object-acl AWS CLI 명령을 사용할 수 있어요.
aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket
aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key example.txt
  1. ACL이 부여하는 접근을 버킷 정책으로 재현합니다. 예를 들어 다른 AWS 계정에 특정 접두사에 대한 READ 권한을 부여하던 ACL이 있었다면, 버킷 정책의 s3:GetObject 권한으로 같은 접근을 표현해요.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"]
    }
  ]
}
  1. 권한을 버킷 정책으로 옮긴 뒤에는 더 이상 필요 없는 ACL을 제거합니다(선택 사항). ACL을 비활성화하면 기존 ACL은 접근 평가에서 제외되므로, 나중에 ACL을 다시 활성화하기 전까지는 접근에 영향을 주지 않아요.

2단계: 인증에 ACL이 필요했던 요청 식별

ACL로만 권한을 부여받던 요청이 있는지 식별해요. 예를 들어:

  • 다른 계정이 객체를 업로드하고 그 객체에 대한 권한을 객체 ACL로 관리하던 방식인 경우.
  • x-amz-grant-* 또는 x-amz-acl 헤더를 사용해 업로드 시 ACL을 지정하던 애플리케이션.

이런 요청은 ACL을 비활성화하면 실패할 수 있으므로, 애플리케이션이 버킷 정책이나 IAM 정책으로 동일한 접근을 얻게 되는지 확인하고, 필요한 경우 애플리케이션 구성을 업데이트해요.

3단계: ACL 관련 조건 키를 사용하는 버킷 정책 검토 및 업데이트

버킷 정책과 객체 정책에 ACL 관련 조건 키가 사용되는지 검토해요. 예를 들어:

  • s3:x-amz-acl – 요청에 포함된 canned ACL을 검사하는 조건 키.
  • s3:x-amz-grant-read, s3:x-amz-grant-write, s3:x-amz-grant-full-control 등 s3:x-amz-grant-* – 요청에 포함된 ACL 권한 헤더를 검사하는 조건 키.

이런 조건 키가 있는 버킷 정책은 ACL을 비활성화하면 기대대로 동작하지 않을 수 있어요. ACL 비활성화 후에도 정책이 의도한 접근 제어를 제공하도록 조건을 업데이트하거나 제거해요.

참고

Bucket owner enforced로 설정하면 s3:x-amz-acl이나 s3:x-amz-grant-* 조건 키를 사용해 ACL 지정을 요구하는 요청은 더 이상 bucket-owner-full-control 외의 ACL을 포함할 수 없어요. 이 조건 키들을 사용하는 정책이 있으면 요구 사항에 맞게 조정해야 해요.

사전 요구 사항을 완료한 뒤에는 기존 버킷에 Object Ownership 설정을 참고해 ACL을 비활성화하세요.

출처: 문서

본문

Prerequisites for disabling ACLs (ACL 비활성화 사전 요구 사항)

ACL을 비활성화하기 전에 완료해야 할 세 가지 사전 요구 사항 — ACL 권한 검토·마이그레이션, ACL 인증 요청 식별, ACL 관련 조건 키가 있는 정책 검토·업데이트 — 을 설명했어요.

더 알아보기 (Learn more)