Amazon S3가 버킷 작업에 대한 요청을 승인하는 방식
Amazon S3가 버킷 작업에 대한 요청을 승인하는 방식 (How Amazon S3 authorizes a request for a bucket operation)
Amazon S3가 버킷 작업에 대한 요청을 받으면 Amazon S3는 모든 관련 권한을 런타임에 평가할 정책 집합으로 변환해요. 관련 권한에는 리소스 기반 권한(예: 버킷 정책과 버킷 액세스 제어 목록)과 요청이 IAM 보안 주체로부터 온 경우 사용자 정책이 포함돼요. 그런 다음 Amazon S3는 특정 컨텍스트(사용자 컨텍스트 또는 버킷 컨텍스트)에 따라 일련의 단계로 결과 정책 집합을 평가해요.
- 사용자 컨텍스트 – 요청자가 IAM 보안 주체라면 보안 주체는 자신이 속한 상위 AWS 계정으로부터 권한이 있어야 해요. 이 단계에서 Amazon S3는 상위 계정(컨텍스트 권한이라고도 함)이 소유한 정책 하위 집합을 평가해요. 이 정책 하위 집합에는 상위 계정이 보안 주체에 연결한 사용자 정책이 포함돼요. 상위 계정이 요청의 리소스(이 경우 버킷)도 소유하면 Amazon S3는 동시에 해당 리소스 정책(버킷 정책과 버킷 ACL)도 평가해요. 버킷 작업에 대한 요청이 이루어질 때마다 서버 액세스 로그는 요청자의 캐노니컬 ID를 기록해요. 자세한 내용은 서버 액세스 로깅으로 요청 로깅을 참고하세요.
- 버킷 컨텍스트 – 요청자는 특정 버킷 작업을 수행하기 위해 버킷 소유자로부터 권한이 있어야 해요. 이 단계에서 Amazon S3는 버킷을 소유한 AWS 계정이 소유한 정책 하위 집합을 평가해요. 버킷 소유자는 버킷 정책 또는 버킷 ACL을 사용해 권한을 부여할 수 있어요. 버킷을 소유한 AWS 계정이 IAM 보안 주체의 상위 계정이기도 하다면 사용자 정책에서 버킷 권한을 구성할 수 있어요.
다음 예시는 평가 논리를 보여줘요.
예시 1: 버킷 소유자가 요청한 버킷 작업. 이 예시에서 버킷 소유자는 AWS 계정의 루트 자격 증명을 사용해 버킷 작업에 대한 요청을 보내요. Amazon S3는 다음과 같이 컨텍스트 평가를 수행해요.
- 요청이 AWS 계정의 루트 사용자 자격 증명으로 이루어졌으므로 사용자 컨텍스트는 평가되지 않아요.
- 버킷 컨텍스트에서 Amazon S3는 버킷 정책을 검토해 요청자가 작업을 수행할 권한이 있는지 확인해요. Amazon S3는 요청을 승인해요.
예시 2: 버킷 소유자가 아닌 AWS 계정이 요청한 버킷 작업. 이 예시에서 AWS 계정 1111-1111-1111의 루트 사용자 자격 증명을 사용해 AWS 계정 2222-2222-2222가 소유한 버킷 작업에 대한 요청이 이루어져요. 이 요청에는 IAM 사용자가 개입하지 않아요. Amazon S3는 다음과 같이 컨텍스트를 평가해요.
- 요청이 AWS 계정의 루트 사용자 자격 증명으로 이루어졌으므로 사용자 컨텍스트는 평가되지 않아요.
- 버킷 컨텍스트에서 Amazon S3는 버킷 정책을 검사해요. 버킷 소유자(AWS 계정 2222-2222-2222)가 AWS 계정 1111-1111-1111에 요청된 작업을 수행할 권한을 부여하지 않았다면 Amazon S3는 요청을 거부해요. 그렇지 않으면 Amazon S3는 요청을 승인하고 작업을 수행해요.
예시 3: 상위 AWS 계정이 버킷 소유자이기도 한 IAM 보안 주체가 요청한 버킷 작업. 이 예시에서 요청은 버킷도 소유한 AWS 계정 1111-1111-1111의 IAM 사용자인 Jill이 보내요. Amazon S3는 다음 컨텍스트 평가를 수행해요.
- 요청이 IAM 보안 주체로부터 왔으므로 사용자 컨텍스트에서 Amazon S3는 상위 AWS 계정에 속한 모든 정책을 평가해 Jill이 작업을 수행할 권한이 있는지 확인해요.
- 이 예시에서 보안 주체가 속한 상위 AWS 계정 1111-1111-1111은 버킷 소유자이기도 해요. 결과적으로 사용자 정책 외에도 Amazon S3는 같은 컨텍스트에서 버킷 정책과 버킷 ACL도 평가해요. 이는 같은 계정에 속하기 때문이에요.
- Amazon S3는 사용자 컨텍스트의 일부로 버킷 정책과 버킷 ACL을 평가했으므로 버킷 컨텍스트를 평가하지 않아요.
예시 4: 상위 AWS 계정이 버킷 소유자가 아닌 IAM 보안 주체가 요청한 버킷 작업. 이 예시에서 요청은 상위 AWS 계정이 1111-1111-1111인 IAM 사용자 Jill이 보내지만 버킷은 다른 AWS 계정인 2222-2222-2222가 소유해요. Jill은 상위 AWS 계정과 버킷 소유자 모두로부터 권한이 필요해요. Amazon S3는 다음과 같이 컨텍스트를 평가해요.
- 요청이 IAM 보안 주체로부터 왔으므로 Amazon S3는 계정이 작성한 정책을 검토해 Jill이 필요한 권한을 가지고 있는지 확인하기 위해 사용자 컨텍스트를 평가해요. Jill에게 권한이 있다면 Amazon S3는 버킷 컨텍스트 평가로 이동해요. Jill에게 권한이 없다면 요청을 거부해요.
- 버킷 컨텍스트에서 Amazon S3는 버킷 소유자 2222-2222-2222가 Jill(또는 그녀의 상위 AWS 계정)에게 요청된 작업을 수행할 권한을 부여했는지 확인해요. 권한이 있다면 Amazon S3는 요청을 승인하고 작업을 수행해요. 그렇지 않으면 요청을 거부해요.