S3 Access Grants의 개념 - Amazon Simple Storage Service

S3 Access Grants의 개념

S3 Access Grants는 간소화된 액세스 체계를 위해 다음과 같은 개념을 사용합니다.

S3 Access Grants 인스턴스

S3 Access Grants 인스턴스는 누가 어떤 Amazon S3 데이터에 대해 어떤 수준의 액세스 권한을 갖는지를 정의하는 개별 권한 부여의 논리적 컨테이너입니다. AWS 계정당 AWS 리전별로 하나의 S3 Access Grants 인스턴스를 보유할 수 있습니다. 이 S3 Access Grants 인스턴스를 사용하여 동일한 계정 및 AWS 리전에 있는 모든 버킷에 대한 액세스를 제어할 수 있습니다. S3 Access Grants를 사용하여 회사 디렉터리의 사용자 및 그룹 ID에 대한 액세스 권한을 부여하려면 S3 Access Grants 인스턴스를 AWS Identity and Access Management(IAM) Identity Center 인스턴스와도 연결해야 합니다.

위치

위치는 S3 Access Grants 인스턴스가 액세스 권한을 부여할 수 있는 데이터를 정의합니다. S3 Access Grants는 특정 S3 접두사, 버킷 또는 객체에 대한 액세스 범위가 지정된 IAM 보안 인증 정보를 제공하는 방식으로 작동합니다. S3 Access Grants 위치를 IAM 역할과 연결하면 이러한 임시 세션이 생성됩니다. 가장 일반적인 위치 구성은 전체 S3 Access Grants 인스턴스의 단일 위치로 s3://를 사용하는 것이며, 이 위치는 계정 및 AWS 리전의 모든 S3 버킷에 대한 액세스를 포함할 수 있습니다. 또한 S3 Access Grants 인스턴스에 여러 위치를 생성할 수 있습니다. 예를 들어, 이 버킷으로 제한하려는 권한 부여의 위치로 s3://DOC-EXAMPLE-BUCKET1 버킷을 등록하고 기본 위치로 s3://를 등록할 수도 있습니다.

권한 부여

위치 내 액세스 범위를 좁히려면 개별 권한 부여를 생성해야 합니다. S3 Access Grants 인스턴스의 개별 권한 부여를 통해 특정 엔터티(IAM 보안 주체 또는 기업 디렉터리의 사용자 또는 그룹)가 Amazon S3 접두사, 버킷 또는 객체에 액세스할 수 있습니다. 각 권한 부여에 대해 서로 다른 범위(접두사, 버킷 또는 객체)와 액세스 수준(READ, WRITE 또는 READWRITE)을 정의할 수 있습니다. 예를 들어 특정 기업 디렉터리 그룹 01234567-89ab-cdef-0123-456789abcdefs3://DOC-EXAMPLE-BUCKET1/projects/items/*에 대한 READ 액세스를 허용하는 권한이 있을 수 있습니다. 이 권한 부여는 DOC-EXAMPLE-BUCKET1 버킷에서 접두사가 projects/items/로 지정된 키 이름을 가진 모든 객체에 대한 READ 액세스를 해당 그룹의 사용자에게 제공합니다.

S3 Access Grants 임시 보안 인증 정보

애플리케이션은 권한 수준이 READ, WRITE 또는 READWRITE인 단일 객체, 접두사 또는 버킷에 대한 액세스를 요청하기 위해 새 S3 API 작업인 GetDataAccess를 호출하여 적시 액세스 보안 인증 정보를 요청할 수 있습니다. S3 Access Grants 인스턴스는 보유한 권한 부여와 비교하여 GetDataAccess 요청을 평가합니다. 일치하는 권한 부여가 있는 경우 S3 Access Grants는 일치하는 권한 부여의 위치와 연결된 IAM 역할을 맡습니다. 그런 다음 S3 Access Grants는 IAM 세션의 권한 범위를 권한 범위에 지정된 S3 버킷, 접두사 또는 객체로 정확하게 지정합니다. 임시 액세스 보안 인증 정보의 만료 시간은 기본적으로 1시간이지만 15분에서 36시간 사이의 값으로 설정할 수 있습니다.

작동 방식

다음 다이어그램에서는 범위가 s3://인 기본 Amazon S3 위치가 s3ag-location-role IAM 역할과 함께 등록되어 있습니다. 이 IAM 역할에는 S3 Access Grants를 통해 보안 인증 정보를 획득하면 계정 내에서 Amazon S3 작업을 수행할 권한이 있습니다.

이 위치 내에서 2명의 IAM 사용자에 대해 두 개의 개별 액세스 권한 부여가 생성되어 있습니다. IAM 사용자 Bob에게는 버킷의 DOC-BUCKET-EXAMPLE 버킷에서 bob/ 접두사에 대한 READWRITE 액세스 권한이 모두 부여되었습니다. 또 다른 IAM 역할인 Alice에게는 DOC-BUCKET-EXAMPLE 버킷의 alice/ 접두사에 대한 READ 액세스 권한만 부여되었습니다. Bob이 DOC-BUCKET-EXAMPLE 버킷의 bob/ 접두사에 액세스할 수 있는 권한이 파란색으로 표시되어 있습니다. Alice가 DOC-BUCKET-EXAMPLE 버킷의 alice/ 접두사에 액세스할 수 있는 권한은 초록색으로 표시되어 있습니다.

Bob이 데이터에 READ 작업을 수행할 때가 되면 Bob의 권한 부여가 있는 위치와 연결된 IAM 역할이 S3 Access Grants GetDataAccess API 작업을 호출합니다. Bob이 s3://DOC-BUCKET-EXAMPLE/bob/*으로 시작하는 S3 접두사 또는 객체에 READ 작업을 시도하면 GetDataAccess 요청은 s3://DOC-BUCKET-EXAMPLE/bob/*에 대한 권한이 있는 임시 IAM 세션 보안 인증 정보 세트를 반환합니다. 이와 유사하게 Bob은 s3://DOC-BUCKET-EXAMPLE/bob/*으로 시작하는 모든 S3 접두사 또는 객체에 WRITE 작업을 수행할 수 있습니다. 권한 부여가 이 작업도 허용하기 때문입니다.

마찬가지로 Alice는 s3://DOC-BUCKET-EXAMPLE/alice/로 시작하는 모든 것에 대해 READ 작업을 수행할 수 있습니다. 하지만 s3://의 버킷, 접두사 또는 객체에 대해 WRITE 작업을 수행하려고 시도하면 Alice에게 데이터에 대한 WRITE 액세스를 제공하는 권한 부여가 없기 때문에 액세스 거부됨(403 금지됨 오류가 발생합니다. 또한 Alice가 s3://DOC-BUCKET-EXAMPLE/alice/ 외부의 데이터에 대해 어떤 수준의 액세스(READ 또는 WRITE)를 요청해도 액세스 거부됨 오류가 다시 발생합니다.

S3 Access Grants 작동 방식

이 패턴은 많은 사용자 및 버킷으로 확장되며 이러한 권한의 관리를 단순화합니다. 개별 사용자-접두사 액세스 관계를 추가하거나 제거할 때마다 크기가 매우 클 수도 있는 S3 버킷 정책을 편집하는 대신 개별 권한을 추가하고 제거할 수 있습니다.