메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

제공되는 액세스 정책 옵션 사용 지침

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

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

버킷과 객체 모두에 권한을 부여하는 데 사용할 수 있는 ACL이 연결되어 있습니다. 다음 단원에서는 객체 ACL 및 버킷 ACL을 사용하기 위한 시나리오에 대해 설명합니다.

객체 ACL을 사용하는 경우

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

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

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

그러면 객체 ACL을 사용하여 객체 권한을 관리하는 것은 어떤 경우일까요? 다음은 객체 ACL을 사용하여 객체 권한을 관리하는 시나리오입니다.

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

    참고

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

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

    이 경우 객체 ACL을 사용하는 것이 적절한 대안이 될 수 있습니다. 그러나 객체 ACL도 최대 100건의 허가로 제한됩니다(ACL(액세스 제어 목록) 개요 참조).

  • 객체 ACL이 객체 수준 권한만 제어함 - 전체 버킷에 대한 단일 버킷 정책이 있지만 객체 ACL은 객체별로 지정됩니다.

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

버킷 ACL을 사용하는 경우

버킷 ACL에 대해 유일하게 권장되는 사용 사례는 Amazon S3 Log Delivery 그룹에 액세스 로그 객체를 버킷에 작성하기 위한 쓰기 권한을 부여하는 것입니다(서버 액세스 로깅 참조). Amazon S3에서 액세스 로그를 버킷으로 전송하게 하려는 경우 Log Delivery 그룹에 버킷에 대한 쓰기 권한을 부여해야 합니다. Log Delivery 그룹에 필요한 권한을 부여할 수 있는 유일한 방법은 다음 버킷 ACL 조각에 나와 있듯이 버킷 ACL을 통하는 것 뿐입니다.

Copy
<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> ... </Owner> <AccessControlList> <Grant> ... </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

버킷 정책을 사용하는 경우

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

  • 모든 Amazon S3 권한에 대한 교차 계정 권한을 관리하려고 함 - ACL을 사용하여 다른 계정에 교차 계정 권한을 부여할 수 있지만 ACL은 한정된 권한 세트(부여할 수 있는 권한)만 지원하며 여기에 모든 Amazon S3 권한이 포함되는 것은 아닙니다. 예를 들어, ACL을 사용하여 버킷 하위 리소스에 대한 권한을 부여할 수 없습니다(Amazon S3 리소스에 대한 액세스 권한 관리 참조).

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

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

일반적으로, 사용자 정책 또는 버킷 정책을 사용하여 권한을 관리할 수 있습니다. 사용자를 만들고 사용자에게 정책을 연결하여 권한을 개별적으로 관리하는 방법으로 권한을 관리하도록 선택하거나 버킷 정책과 같은 리소스 기반 정책이 현재 시나리오에 더 적합하다고 판단할 수도 있습니다.

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

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

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

이는 다른 아이 소유의 장난감을 가지고 놀고 싶어하는 아이와 같습니다. 이 경우 아이는 부모와 장난감 주인으로부터 허락을 받아야 그 장난감을 가지고 놀 수 있습니다.

권한 위임

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

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