Amazon S3가 객체 작업에 대한 요청을 승인하는 방식

Amazon S3가 객체 작업에 대한 요청을 승인하는 방식 (How Amazon S3 authorizes a request for an object operation)

Amazon S3가 객체 작업에 대한 요청을 받으면 모든 관련 권한(리소스 기반 권한: 객체 액세스 제어 목록(ACL), 버킷 정책, 버킷 ACL, IAM 사용자 정책)을 런타임에 평가할 정책 집합으로 변환해요. 그런 다음 일련의 단계로 결과 정책 집합을 평가해요. 각 단계에서 세 가지 특정 컨텍스트(사용자 컨텍스트, 버킷 컨텍스트, 객체 컨텍스트)로 정책 하위 집합을 평가해요.

  • 사용자 컨텍스트 – 요청자가 IAM 보안 주체라면 보안 주체는 자신이 속한 상위 AWS 계정으로부터 권한이 있어야 해요. 이 단계에서 Amazon S3는 상위 계정(컨텍스트 권한이라고도 함)이 소유한 정책 하위 집합을 평가해요. 이 정책 하위 집합에는 상위 계정이 보안 주체에 연결한 사용자 정책이 포함돼요. 상위 계정이 요청의 리소스(버킷 또는 객체)도 소유하면 Amazon S3는 동시에 해당 리소스 정책(버킷 정책, 버킷 ACL, 객체 ACL)도 평가해요.

    참고 상위 AWS 계정이 리소스(버킷 또는 객체)를 소유하면 사용자 정책이나 리소스 정책 중 하나를 사용해 IAM 보안 주체에게 리소스 권한을 부여할 수 있어요.

  • 버킷 컨텍스트 – 이 컨텍스트에서 Amazon S3는 버킷을 소유한 AWS 계정이 소유한 정책을 평가해요. 요청의 객체를 소유한 AWS 계정이 버킷 소유자와 같지 않으면 Amazon S3는 버킷 소유자가 객체에 대한 액세스를 명시적으로 거부했는지 정책을 확인해요. 객체에 명시적 거부가 설정되어 있으면 Amazon S3는 요청을 승인하지 않아요.
  • 객체 컨텍스트 – 요청자는 특정 객체 작업을 수행하기 위해 객체 소유자로부터 권한이 있어야 해요. 이 단계에서 Amazon S3는 객체 ACL을 평가해요.

    참고 버킷과 객체 소유자가 같으면 버킷 컨텍스트에서 평가되는 버킷 정책에서 객체에 대한 액세스를 부여할 수 있어요. 소유자가 다르면 객체 소유자는 객체 ACL을 사용해 권한을 부여해야 해요. 객체를 소유한 AWS 계정이 IAM 보안 주체가 속한 상위 계정이기도 하다면 사용자 컨텍스트에서 평가되는 사용자 정책에서 객체 권한을 구성할 수 있어요. 이러한 액세스 정책 대안 사용에 대한 자세한 내용은 정책을 사용해 Amazon S3 리소스에 대한 액세스를 관리하는 워크스루를 참고하세요. 버킷 소유자로서 버킷의 모든 객체를 소유하고 버킷 정책이나 IAM 기반 정책을 사용해 이러한 객체에 대한 액세스를 관리하려면 객체 소유권에 버킷 소유자 강제 설정을 적용할 수 있어요. 이 설정을 사용하면 버킷 소유자로서 버킷의 모든 객체를 자동으로 소유하고 완전히 제어해요. 버킷 및 객체 ACL은 편집할 수 없으며 더 이상 액세스에 고려되지 않아요. 자세한 내용은 버킷의 객체 소유권 제어 및 ACL 비활성화를 참고하세요.

다음은 객체 작업에 대한 컨텍스트 기반 평가의 예시예요.

객체 작업 요청의 예시. 이 예시에서 IAM 사용자 Jill(상위 AWS 계정 1111-1111-1111)은 AWS 계정 2222-2222-2222가 소유한 버킷의 AWS 계정 3333-3333-3333이 소유한 객체에 대한 객체 작업 요청(예: GetObject)을 보내요.

Jill은 상위 AWS 계정, 버킷 소유자, 객체 소유자로부터 권한이 필요해요. Amazon S3는 다음과 같이 컨텍스트를 평가해요.

  • 요청이 IAM 보안 주체로부터 왔으므로 Amazon S3는 상위 AWS 계정 1111-1111-1111이 Jill에게 요청된 작업을 수행할 권한을 부여했는지 확인하기 위해 사용자 컨텍스트를 평가해요. 권한이 있다면 Amazon S3는 버킷 컨텍스트를 평가해요. 그렇지 않으면 요청을 거부해요.
  • 버킷 컨텍스트에서 버킷 소유자 AWS 계정 2222-2222-2222가 컨텍스트 권한이에요. Amazon S3는 버킷 정책을 평가해 버킷 소유자가 Jill에게 객체에 대한 액세스를 명시적으로 거부했는지 확인해요.
  • 객체 컨텍스트에서 컨텍스트 권한은 객체 소유자 AWS 계정 3333-3333-3333이에요. Amazon S3는 객체 ACL을 평가해 Jill이 객체에 액세스할 권한이 있는지 확인해요. 있다면 Amazon S3는 요청을 승인해요.