Amazon S3가 요청을 승인하는 방식
Amazon S3가 요청을 승인하는 방식 (How Amazon S3 authorizes a request)
Amazon S3가 요청을 받으면(예를 들어 버킷 또는 객체 작업) 먼저 요청자가 필요한 권한을 가지고 있는지 확인해요. Amazon S3는 요청 승인 여부를 결정할 때 모든 관련 액세스 정책, 사용자 정책, 리소스 기반 정책(버킷 정책, 버킷 액세스 제어 목록(ACL), 객체 ACL)을 평가해요.
참고 Amazon S3 권한 확인에서 유효한 권한을 찾지 못하면 액세스 거부(403 금지) 권한 거부 오류가 반환돼요. 자세한 내용은 Amazon S3의 액세스 거부(403 금지) 오류 문제 해결을 참고하세요.
출처: 문서
본문
요청을 받을 때 요청자가 특정 작업을 수행할 권한이 있는지 확인하기 위해 Amazon S3는 다음을 순서대로 수행해요.
- 모든 관련 액세스 정책(사용자 정책, 버킷 정책, ACL)을 런타임에 평가용 정책 집합으로 변환해요.
- 다음 단계에서 결과 정책 집합을 평가해요. 각 단계에서 Amazon S3는 컨텍스트 권한에 따라 특정 컨텍스트에서 정책 하위 집합을 평가해요.
- 사용자 컨텍스트 – 사용자 컨텍스트에서 사용자가 속한 상위 계정이 컨텍스트 권한이에요. Amazon S3는 상위 계정이 소유한 정책 하위 집합을 평가해요. 이 하위 집합에는 상위 계정이 사용자에게 연결한 사용자 정책이 포함돼요. 상위 계정이 요청의 리소스(버킷 또는 객체)도 소유하면 Amazon S3는 동시에 해당 리소스 정책(버킷 정책, 버킷 ACL, 객체 ACL)도 평가해요. 사용자는 상위 계정으로부터 작업을 수행할 권한이 있어야 해요. 이 단계는 요청이 AWS 계정의 사용자에 의해 이루어진 경우에만 적용돼요. 요청이 AWS 계정의 루트 사용자 자격 증명으로 이루어진 경우 Amazon S3는 이 단계를 건너뛰어요.
- 버킷 컨텍스트 – 버킷 컨텍스트에서 Amazon S3는 버킷을 소유한 AWS 계정이 소유한 정책을 평가해요. 요청이 버킷 작업에 대한 것이라면 요청자는 버킷 소유자로부터 권한이 있어야 해요. 요청이 객체에 대한 것이라면 Amazon S3는 버킷 소유자가 소유한 모든 정책을 평가해 버킷 소유자가 객체에 대한 액세스를 명시적으로 거부하지 않았는지 확인해요. 명시적 거부가 설정되어 있으면 Amazon S3는 요청을 승인하지 않아요.
- 객체 컨텍스트 – 요청이 객체에 대한 것이라면 Amazon S3는 객체 소유자가 소유한 정책 하위 집합을 평가해요.
다음은 Amazon S3가 요청을 승인하는 방식을 보여주는 몇 가지 예시 시나리오예요.
예시 – 요청자가 IAM 보안 주체인 경우. 요청자가 IAM 보안 주체인 경우 Amazon S3는 보안 주체가 속한 상위 AWS 계정이 보안 주체에게 작업을 수행하는 데 필요한 권한을 부여했는지 확인해야 해요. 또한 요청이 버킷 작업(예: 버킷 내용 나열 요청)에 대한 것이라면 Amazon S3는 버킷 소유자가 요청자에게 작업을 수행할 권한을 부여했는지 확인해야 해요. 리소스에서 특정 작업을 수행하려면 IAM 보안 주체는 속한 상위 AWS 계정과 리소스를 소유한 AWS 계정 모두로부터 권한이 필요해요.
예시 – 요청자가 IAM 보안 주체인 경우 – 요청이 버킷 소유자가 소유하지 않은 객체에 대한 작업인 경우. 요청이 버킷 소유자가 소유하지 않은 객체에 대한 작업이라면 Amazon S3는 요청자가 객체 소유자로부터 권한을 가지고 있는지 확인하는 것 외에도 버킷 정책을 확인해 버킷 소유자가 객체에 대해 명시적 거부를 설정하지 않았는지 확인해야 해요. 버킷 소유자(청구서를 지불하는 사람)는 누가 소유하는지와 관계없이 버킷의 객체에 대한 액세스를 명시적으로 거부할 수 있어요. 버킷 소유자는 버킷의 모든 객체를 삭제할 수도 있어요.
기본적으로 다른 AWS 계정이 일반 목적 버킷에 객체를 업로드하면 해당 계정(객체 작성자)이 객체를 소유하고, 액세스할 수 있으며, 액세스 제어 목록(ACL)을 통해 다른 사용자에게 액세스 권한을 부여할 수 있어요. 객체 소유권을 사용해 이 기본 동작을 변경해 ACL을 비활성화하고 버킷 소유자로서 일반 목적 버킷의 모든 객체를 자동으로 소유할 수 있어요. 그 결과 데이터에 대한 액세스 제어는 IAM 사용자 정책, S3 버킷 정책, 가상 프라이빗 클라우드(VPC) 엔드포인트 정책, AWS Organizations 서비스 제어 정책(SCP) 같은 정책을 기반으로 해요. 자세한 내용은 버킷의 객체 소유권 제어 및 ACL 비활성화를 참고하세요.
Amazon S3가 버킷 작업 및 객체 작업에 대한 요청을 승인하거나 거부하기 위해 액세스 정책을 평가하는 방법에 대한 자세한 내용은 다음 주제를 참고하세요.
- Amazon S3가 버킷 작업에 대한 요청을 승인하는 방식
- Amazon S3가 객체 작업에 대한 요청을 승인하는 방식