액세스 정책 지침 - Amazon Simple Storage Service

액세스 정책 지침

Amazon S3에서는 Amazon S3 리소스에 대한 액세스를 관리하기 위해 리소스 기반 정책 및 사용자 정책이 지원됩니다. 자세한 내용은 리소스 액세스 관리 단원을 참조하십시오. 리소스 기반 정책에는 버킷 정책, 버킷 ACL(액세스 제어 목록) 및 객체 ACL이 포함됩니다. 이 섹션에서는 Amazon S3 리소스에 대한 액세스를 관리하기 위해 리소스 기반 액세스 정책을 사용하기 위한 특정 시나리오에 대해 설명합니다.

ACL 기반 액세스 정책(버킷 및 객체 ACL)을 사용하는 경우

버킷과 객체 모두에 권한을 부여하는 데 사용할 수 있는 ACL이 연결되어 있습니다.

S3 객체 소유권은 버킷에 업로드되는 객체의 소유권을 제어하고 ACL을 비활성화 또는 활성화하는 데 사용할 수 있는 Amazon S3 버킷 수준 설정입니다. 기본적으로 객체 소유권은 버킷 소유자 적용 설정으로 설정되며 모든 ACL이 비활성화되어 있습니다. ACL이 비활성화되면 버킷 소유자는 버킷의 모든 객체를 소유하고 액세스 관리 정책을 사용하여 객체에 대한 액세스를 독점적으로 관리합니다.

Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없습니다. 각 객체에 대해 액세스를 개별적으로 제어할 필요가 있는 드문 상황을 제외하고는 ACL을 비활성화한 채로 두는 것이 좋습니다. ACL을 비활성화하면 누가 객체를 버킷에 업로드했는지에 관계없이 정책을 사용하여 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.

중요

버킷이 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하는 경우 정책을 사용하여 버킷과 버킷의 객체에 대한 액세스 권한을 부여해야 합니다. 버킷 소유자 적용 설정이 활성화된 상태에서 액세스 제어 목록(ACL) 설정 또는 ACL 업데이트 요청은 실패하고 AccessControlListNotSupported 오류 코드를 반환합니다. ACL 읽기 요청은 계속 지원됩니다.

객체 ACL을 사용하는 경우

다음은 객체 ACL을 사용하여 권한을 관리하는 시나리오입니다.

버킷 소유자가 객체를 소유하지 않습니다.

버킷 소유자가 소유하지 않은 객체에 대한 액세스를 관리하는 유일한 방법은 객체 ACL입니다. 버킷을 소유한 AWS 계정은 다른 AWS 계정에 객체 업로드 권한을 부여할 수 있습니다. 버킷 소유자는 이러한 객체를 소유하지 않습니다. 객체를 만든 AWS 계정은 객체 ACL을 사용하여 권한을 부여해야 합니다.

참고

버킷 소유자는 자신이 소유하지 않는 객체에 대한 권한을 부여할 수 없습니다. 예를 들어, 객체 권한을 부여하는 버킷 정책은 버킷 소유자가 소유하는 객체에만 적용됩니다. 그러나 요금을 지불하는 버킷 소유자는 소유자와 관계없이 버킷의 모든 객체에 대한 액세스를 거부하는 버킷 정책을 작성할 수 있습니다. 또한 버킷 소유자는 버킷의 모든 객체를 삭제할 수 있습니다.

객체 수준에서 권한을 관리해야 합니다.

권한은 객체별로 다르며 객체 수준에서 사용 권한을 관리해야 한다고 가정합니다. 특정 키 이름 접두사가 지정된 수백만 개의 객체에서 AWS 계정 읽기 권한을 부여하는 단일 정책 설명을 작성할 수 있습니다. 예를 들어, 키 이름 접두사 logs로 시작하는 객체에 대해 읽기 권한을 부여할 수 있습니다. 그러나 액세스 권한이 객체별로 다른 경우 버킷 정책을 사용하여 개별 객체에 권한을 부여하는 것은 실용적이지 않을 수 있습니다. 또한 버킷 정책은 크기가 20KB로 제한됩니다.

이 경우 객체 ACL을 사용하는 것이 좋은 대안일 수 있습니다. 그러나 객체 ACL도 최대 100건의 허가로 제한됩니다. 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

객체 ACL이 객체 수준 권한만 제어함

전체 버킷에 대한 단일 버킷 정책이 있지만 객체 ACL은 객체별로 지정됩니다.

버킷을 소유하는 AWS 계정은 액세스 정책을 관리하기 위한 권한을 다른 AWS 계정에 부여할 수 있습니다. 이를 통해 해당 계정은 정책의 모든 사항을 변경할 수 있게 됩니다. 권한을 보다 효과적으로 관리하기 위해 광범위한 권한을 부여하는 대신 객체의 하위 집합에 대한 READ-ACPWRITE-ACP 권한만 다른 계정에 부여하도록 선택할 수 있습니다. 이렇게 하면 계정이 개별 객체 ACL을 업데이트하여 특정 객체에 대해서만 권한을 관리하도록 제한됩니다.

ACL을 사용하여 객체 수준에서 권한을 관리하고 버킷에 작성된 새 객체도 소유하려는 경우 객체 소유권에 대해 버킷 소유자 기본 설정을 적용할 수 있습니다. 버킷 소유자 기본 설정이 있는 버킷은 버킷 및 객체 ACL을 계속 수락하고 준수합니다. 이 설정을 사용하면 bucket-owner-full-control 미리 제공 ACL로 작성된 새 객체는 객체 작성자가 아닌 버킷 소유자가 자동으로 소유합니다. 다른 모든 ACL 동작은 그대로 유지됩니다. 모든 Amazon S3 PUT 작업에 bucket-owner-full-control 미리 제공 ACL을 포함하도록 하려면 이 ACL을 사용하여 객체 업로드만 허용하는 버킷 정책을 추가할 수 있습니다.

ACL 사용에 대한 대안

객체 ACL 외에 다른 방법으로도 객체 소유자가 객체 권한을 관리할 수 있습니다.

  • 객체를 소유하는 AWS 계정이 버킷도 소유하는 경우 객체 권한을 관리하기 위해 버킷 정책을 작성할 수 있습니다.

  • 객체를 소유하는 AWS 계정이 자신의 계정에 속한 사용자에게 권한을 부여하려는 경우에는 사용자 정책을 사용할 수 있습니다.

  • 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어하려는 경우 객체 소유권에 대해 버킷 소유자 시행 설정을 적용하여 ACL을 사용 중지할 수 있습니다. 결과적으로 데이터에 대한 액세스 제어는 정책을 기반으로 합니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.

버킷 ACL을 사용하는 경우

버킷 ACL에 권장되는 유일한 사용 사례는 Amazon CloudFront awslogsdelivery 계정과 같은 특정 AWS 서비스에 권한을 부여하는 것입니다. 배포를 생성 또는 업데이트하고 CloudFront 로깅을 사용 설정하면 CloudFront는 버킷 ACL을 업데이트하여 awslogsdelivery 계정에 버킷에 로그를 쓸 수 있는 FULL_CONTROL 권한을 부여합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서표준 로깅 구성 및 로그 파일 액세스에 필요한 권한을 참조하십시오. 로그를 저장하는 버킷이 S3 객체 소유권에 대해 버킷 소유자 시행 설정을 사용하여 ACL을 사용 중지하면 CloudFront에서 버킷에 로그를 쓸 수 없습니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.

버킷 정책을 사용하는 경우

버킷을 소유하는 AWS 계정이 자신의 계정에 속한 사용자에게 권한을 부여하려는 경우 버킷 정책 또는 사용자 정책을 사용할 수 있습니다. 그러나 다음 시나리오에서는 버킷 정책을 사용해야 합니다.

모든 Amazon S3 권한에 대한 교차 계정 권한을 관리하려는 경우

ACL을 사용하여 다른 계정에 교차 계정 권한을 부여할 수 있습니다. 그러나 ACL은 한정된 권한 세트만 지원하며 일부 Amazon S3 권한은 포함되지 않습니다. 자세한 내용은 부여할 수 있는 권한 섹션을 참조하십시오. 예를 들어 버킷 하위 리소스에 대한 권한을 부여할 수 없습니다. 자세한 내용은 Amazon S3의 Identity and Access Management 단원을 참조하십시오.

버킷 정책과 사용자 정책 모두 모든 Amazon S3 작업에 대한 권한 부여를 지원합니다. (자세한 내용은 Amazon S3 작업 섹션을 참조하십시오.) 그러나 사용자 정책은 계정의 사용자에 대한 권한을 관리하기 위한 것입니다. 다른 AWS 계정 또는 다른 계정에 속한 사용자에 대한 교차 계정 권한의 경우 버킷 정책을 사용해야 합니다.

사용자 정책을 사용하는 경우

일반적으로, 사용자 정책 또는 버킷 정책을 사용하여 권한을 관리할 수 있습니다. 사용자를 생성하고 정책을 사용자(또는 사용자 그룹)에 연결하여 개별적으로 권한을 관리하는 방법으로 권한을 관리하도록 선택할 수 있습니다. 또는 버킷 정책과 같은 리소스 기반 정책이 시나리오에 더 적합할 수도 있습니다.

AWS Identity and Access Management(IAM)를 사용하면 AWS 계정 내에서 다중 사용자를 생성하고 사용자 정책을 통해 해당 권한을 관리할 수 있습니다. IAM 사용자에게는 자신이 속한 상위 계정의 권한과 사용자가 액세스하려는 리소스를 소유하는 AWS 계정의 권한이 있어야 합니다. 권한은 다음과 같이 부여할 수 있습니다.

  • 상위 계정의 권한 – 상위 계정은 사용자 정책을 연결하여 자신의 사용자에게 권한을 부여할 수 있습니다.

  • 리소스 소유자의 권한 – 리소스 소유자는 IAM 사용자(버킷 정책 사용) 또는 상위 계정(버킷 정책, 버킷 ACL 또는 객체 ACL 사용)에 권한을 부여할 수 있습니다.

이는 다른 아이 소유의 장난감을 가지고 놀고 싶어하는 아이와 유사합니다. 장난감을 가지고 놀려면 아이는 부모와 장난감 주인으로부터 허락을 받아야 합니다.

자세한 내용은 버킷 정책 및 사용자 정책 단원을 참조하십시오.

권한 위임

AWS 계정이 리소스를 소유하는 경우 다른 AWS 계정에 해당 권한을 부여할 수 있습니다. 그런 다음 해당 계정은 권한 또는 권한의 하위 세트를 계정에 속한 사용자에게 위임할 수 있습니다. 이를 권한 위임이라고 합니다. 그러나 다른 계정으로부터 권한을 받는 계정은 다른 AWS 계정에 교차 계정 권한을 위임할 수 없습니다.

먼저 Amazon S3 리소스에 대한 액세스를 관리하는 방법을 설명하는 모든 소개 주제와 관련 지침을 검토하는 것이 좋습니다. 자세한 내용은 Amazon S3의 Identity and Access Management 단원을 참조하십시오. 그 후, 다음과 같이 주제별로 특정 액세스 정책 옵션에 대한 자세한 정보를 얻을 수 있습니다.