S3 Access Grants의 개념
S3 Access Grants 워크플로
S3 Access Grants 워크플로는 다음과 같습니다.
S3 Access Grants 인스턴스를 생성합니다. S3 Access Grants 인스턴스 사용 섹션을 참조하세요.
S3 Access Grants 인스턴스 내에서 Amazon S3 데이터에 위치를 등록하고 이 위치를 AWS Identity and Access Management(IAM) 역할에 매핑합니다. 위치 등록 섹션을 참조하세요.
피부여자를 위한 권한 부여를 생성하여 피부여자에게 S3 리소스에 대한 액세스 권한을 부여합니다. S3 Access Grants에서 권한 부여 사용 섹션을 참조하세요.
피부여자는 S3 Access Grants로부터 임시 자격 증명을 요청합니다. S3 Access Grants를 통해 Amazon S3 데이터에 대한 액세스 요청 섹션을 참조하세요.
피부여자는 이러한 임시 자격 증명을 사용하여 S3 데이터에 액세스합니다. S3 Access Grants에서 제공하는 자격 증명을 사용하여 S3 데이터에 액세스 섹션을 참조하세요.
자세한 내용은 S3 Access Grants 시작하기 단원을 참조하십시오.
- S3 Access Grants 인스턴스
-
S3 Access Grants 인스턴스는 개별 권한 부여의 논리적 컨테이너입니다. S3 Access Grants 인스턴스를 생성할 때 AWS 리전을 지정해야 합니다. AWS 계정의 각 AWS 리전은 하나의 S3 Access Grants 인스턴스를 보유할 수 있습니다. 자세한 내용은 S3 Access Grants 인스턴스 사용 단원을 참조하십시오.
S3 Access Grants를 사용하여 회사 디렉터리의 사용자 및 그룹 ID에 대한 액세스 권한을 부여하려면 S3 Access Grants 인스턴스를 AWS IAM Identity Center 인스턴스와도 연결해야 합니다. 자세한 내용은 S3 Access Grants 및 기업 디렉터리 ID 단원을 참조하십시오.
새로 생성된 S3 Access Grants 인스턴스가 비어 있습니다. 인스턴스에 위치를 등록해야 합니다. 위치는 S3 기본 경로(
s3://
), 버킷 또는 버킷 내 접두사일 수 있습니다. 위치를 하나 이상 등록하면 등록된 이 위치의 데이터에 액세스할 수 있도록 액세스 권한 부여를 생성할 수 있습니다. - 위치
-
S3 Access Grants 위치는 버킷 또는 접두사를 AWS Identity and Access Management(IAM) 역할에 매핑합니다. S3 Access Grants는 이 IAM 역할을 맡아 해당 특정 위치에 액세스하는 피부여자에게 임시 자격 증명을 제공합니다. 액세스 권한 부여를 생성하려면 먼저 S3 Access Grants 인스턴스에 위치를 하나 이상 등록해야 합니다.
기본 위치(
s3://
)를 등록하고 이를 IAM 역할에 매핑하는 것이 좋습니다. 기본 S3 경로(s3://
)의 위치는 계정의 AWS 리전에 있는 모든 S3 버킷에 대한 액세스를 포함합니다. 액세스 권한 부여를 생성할 때 기본 위치 내의 버킷, 접두사 또는 객체로 권한 부여 범위를 좁힐 수 있습니다.더 복잡한 액세스 관리 사용 사례에서는 기본 위치보다 더 많이 등록해야 할 수도 있습니다. 이러한 사용 사례의 몇 가지 예는 다음과 같습니다.
-
amzn-s3-demo-bucket
은 S3 Access Grants 인스턴스의 등록된 위치로서 IAM 역할이 매핑되어 있지만 이 IAM 역할은 버킷 내 특정 접두사에 대한 액세스가 거부되었다고 가정해 보겠습니다. 이 경우 IAM 역할이 액세스할 수 없는 접두사를 별도의 위치로 등록하고 필요한 액세스 권한이 있는 다른 IAM 역할에 해당 위치를 매핑할 수 있습니다. -
Virtual Private Cloud(VPC) 엔드포인트 내 사용자로만 액세스 권한을 제한하는 권한 부여를 생성한다고 가정해 보겠습니다. 이 경우, IAM 역할이 VPC 엔드포인트에 대한 액세스를 제한하는 버킷 위치를 등록할 수 있습니다. 나중에 피부여자가 S3 Access Grants에 자격 증명을 요청하면 S3 Access Grants는 해당 위치의 IAM 역할을 맡아 임시 자격 증명을 제공합니다. 이 자격 증명은 호출자가 VPC 엔드포인트 내에 있지 않는 한 특정 버킷에 대한 액세스를 거부합니다. 이 거부 권한은 권한 부여에 지정된 일반 READ, WRITE 또는 READWRITE 권한에 추가로 적용됩니다.
사용 사례에서 S3 Access Grants 인스턴스에 여러 위치를 등록해야 하는 경우 다음 중 하나를 등록할 수 있습니다.
기본 S3 위치(
s3://
)하나의 버킷(예:
amzn-s3-demo-bucket
) 또는 여러 버킷하나의 버킷과 접두사(예:
) 또는 여러 접두사amzn-s3-demo-bucket
/prefix*
S3 Access Grants 인스턴스에 등록할 수 있는 최대 위치 수는 S3 Access Grants 한도 섹션을 참조하세요. S3 Access Grants 위치 등록에 대한 자세한 내용은 위치 등록 섹션을 참조하세요.
S3 Access Grants 인스턴스에서 첫 번째 위치를 등록한 후에도 인스턴스에는 여전히 개별 액세스 권한이 부여되지 않습니다. 따라서 S3 데이터에 대한 액세스 권한은 아직 부여되지 않았습니다. 이제 액세스 권한 부여를 생성하여 액세스 권한을 부여할 수 있습니다. 권한 부여 생성에 대한 자세한 내용은 S3 Access Grants에서 권한 부여 사용 섹션을 참조하세요.
-
- 권한 부여
-
S3 Access Grants 인스턴스 내 개별 권한 부여를 통해 특정 자격 증명(IAM 보안 주체나 기업 디렉터리의 사용자 또는 그룹)이 S3 Access Grants 인스턴스에 등록된 위치 내에서 액세스 권한을 부여받을 수 있습니다.
권한 부여를 생성할 때 등록된 위치 전체에 대한 액세스 권한을 부여할 필요는 없습니다. 특정 위치 내에서 권한 부여의 액세스 범위를 좁힐 수 있습니다. 등록된 위치가 기본 S3 경로(
s3://
)인 경우 권한 부여 범위를 버킷, 버킷 내 접두사 또는 특정 객체로 좁혀야 합니다. 권한 부여의 등록 위치가 버킷 또는 접두사인 경우 전체 버킷 또는 접두사에 대한 액세스 권한을 부여하거나 선택적으로 접두사, 하위 접두사 또는 객체로 권한 부여 범위를 좁힐 수 있습니다.또한 권한 부여에서 권한 부여의 액세스 수준을 READ, WRITE 또는 READWRITE로 설정합니다. 기업 디렉터리 그룹
01234567-89ab-cdef-0123-456789abcdef
에 버킷s3://
에 대한 READ 액세스 권한을 부여하는 권한 부여가 있다고 가정해 보겠습니다. 이 그룹의 사용자는 이름이 지정된 버킷amzn-s3-demo-bucket
/projects/items/*amzn-s3-demo-bucket
에서 접두사projects/items/
로 시작하는 객체 키 이름을 가진 모든 객체에 대해 READ 액세스 권한을 가질 수 있습니다.S3 Access Grants 인스턴스에서 생성할 수 있는 최대 권한 부여 수는 S3 Access Grants 한도 섹션을 참조하세요. 권한 부여 생성에 대한 자세한 내용은 권한 부여 생성 섹션을 참조하세요.
- S3 Access Grants 임시 보안 인증 정보
-
권한 부여를 생성한 후, 권한 부여에 지정된 자격 증명을 사용하는 승인된 애플리케이션은 적시 액세스 자격 증명을 요청할 수 있습니다. 이를 위해 애플리케이션은 GetDataAccess S3 API 작업을 직접적으로 호출합니다. 피부여자는 이 API 작업을 사용하여 공유한 S3 데이터에 대한 액세스를 요청할 수 있습니다.
S3 Access Grants 인스턴스는 보유한 권한 부여와 비교하여
GetDataAccess
요청을 평가합니다. 요청자에 대한 일치하는 권한 부여가 있는 경우 S3 Access Grants는 일치하는 권한 부여의 등록된 위치와 연결된 IAM 역할을 맡습니다. S3 Access Grants는 권한 부여 범위에 지정된 S3 버킷, 접두사 또는 객체에만 액세스할 수 있도록 임시 자격 증명의 권한 범위를 지정합니다.임시 액세스 보안 인증 정보의 만료 시간은 기본적으로 1시간이지만 15분에서 12시간 사이의 값으로 설정할 수 있습니다. AssumeRole API 참조에서 최대 지속 시간 세션을 참조하세요.
작동 방식
다음 다이어그램에서는 범위가 s3://
인 기본 Amazon S3 위치가 s3ag-location-role
IAM 역할과 함께 등록되어 있습니다. 이 IAM 역할에는 S3 Access Grants를 통해 보안 인증 정보를 획득하면 계정 내에서 Amazon S3 작업을 수행할 권한이 있습니다.
이 위치 내에서 2명의 IAM 사용자에 대해 두 개의 개별 액세스 권한 부여가 생성되어 있습니다. IAM 사용자 Bob에게는 버킷의 DOC-BUCKET-EXAMPLE
버킷에서 bob/
접두사에 대한 READ
및 WRITE
액세스 권한이 모두 부여되었습니다. 또 다른 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 버킷 정책을 편집하는 대신 개별 권한을 추가하고 제거할 수 있습니다.