Amazon S3에서 요청에 권한을 부여하는 방법 - Amazon Simple Storage Service

Amazon S3에서 요청에 권한을 부여하는 방법

Amazon S3가 요청을 수신하면(예: 버킷 또는 객체 작업) 먼저 요청자가 필요한 권한을 보유하고 있는지 확인합니다. Amazon S3는 요청에 권한을 부여할지 여부를 결정할 때 모든 관련 액세스 정책, 사용자 정책 및 리소스 기반 정책(버킷 정책, 버킷 ACL, 객체 ACL)을 평가합니다.

참고

Amazon S3 권한 검사에서 유효한 권한을 찾지 못한 경우, 403 권한 거부 오류가 반환됩니다. Amazon S3의 액세스 거부(403 금지) 오류 문제 해결을 참조하십시오.

요청자가 특정 작업을 수행할 권한을 보유하고 있는지 확인하기 위해 Amazon S3은 요청을 수신할 경우 다음을 순서대로 수행합니다.

  1. 런타임 시 모든 관련 액세스 정책(사용자 정책, 버킷 정책, ACL)을 평가용 정책 세트로 변환합니다.

  2. 다음과 같은 단계로 발생한 정책 세트를 평가합니다. 각 단계에서 Amazon S3은 컨텍스트 권한에 기반해 특정 컨텍스트에서 하위 정책 세트를 평가합니다.

    1. 사용자 컨텍스트 – 사용자 컨텍스트에서 사용자가 속한 상위 계정은 컨텍스트 권한입니다.

      Amazon S3은 상위 계정이 소유한 하위 정책 세트를 평가합니다. 이러한 하위 세트에는 상위 계정에서 사용자에게 연결된 사용자 정책이 포함됩니다. 상위 계정에서 요청 시 리소스(버킷, 객체)를 소유할 경우에도, Amazon S3은 동시에 해당 리소스 정책(버킷 정책, 버킷 ACL, 객체 ACL)도 평가합니다.

      사용자는 작업 수행을 위해 상위 계정의 권한을 보유해야 합니다.

      이 단계는 AWS 계정의 사용자가 요청한 경우에만 적용됩니다. AWS 계정의 루트 사용자 자격 증명을 사용하여 요청이 이루어진 경우, Amazon S3는 이 단계를 건너뜁니다.

    2. 버킷 컨텍스트 – 버킷 컨텍스트에서 Amazon S3은 버킷을 소유한 AWS 계정이 소유한 정책을 평가합니다.

      버킷 작업에 대한 요청의 경우, 요청자는 버킷 소유자의 권한을 보유해야 합니다. 객체에 대한 요청의 경우, Amazon S3은 버킷 소유자가 객체에 대한 액세스를 명백하게 거부했는지 확인하기 위해 버킷 소유자가 소유한 모든 정책을 평가합니다. 명시적 거부가 있을 경우 Amazon S3은 요청에 권한을 부여하지 않습니다.

    3. 객체 컨텍스트 – 객체에 대한 요청의 경우, Amazon S3은 객체 소유자가 소유한 하위 정책 세트를 평가합니다.

다음은 Amazon S3가 요청을 승인하는 방법을 보여 주는 몇 가지 예제 시나리오입니다.

예 요청자는 IAM 보안 주체입니다.

요청자가 IAM 보안 주체일 경우, Amazon S3에서는 보안 주체가 속한 상위 AWS 계정에서 작업 수행에 필요한 권한을 보안 주체에게 부여했는지를 확인해야 합니다. 또한 버킷 콘텐츠 나열 요청과 같은 버킷 작업에 대한 요청일 경우, Amazon S3에서는 버킷 소유자가 요청자가 작업을 수행할 수 있도록 권한을 부여했는지를 확인해야 합니다. 리소스에서 특정 작업을 수행하려면 IAM 보안 주체는 소속된 상위 AWS 계정과 리소스를 소유한 AWS 계정에서 모두 권한이 필요합니다.

예 요청자가 IAM 보안 주체인 경우 - 버킷 소유자가 소유하지 않은 객체에 대한 작업 요청을 나타냅니다.

버킷 소유자가 소유하지 않은 객체 작업에 대한 요청일 경우, 요청자가 객체 소유자의 권한을 보유하고 있는지 확인해야 할 뿐만 아니라 Amazon S3은 버킷 소유자가 객체에 대한 명백한 거부를 설정하지 않도록 버킷 정책을 확인해야 합니다. 버킷 소유자(요금 지불자)는 객체의 소유 여부와 관계 없이 버킷의 객체에 대한 액세스를 명백하게 거부할 수 있습니다. 또한 버킷 소유자는 버킷의 모든 객체를 삭제할 수도 있습니다.

기본적으로 다른 AWS 계정이 S3 버킷에 객체를 업로드하면 해당 계정(객체 작성자)이 객체를 소유하고 객체에 액세스할 수 있으며 액세스 제어 목록(ACL)을 통해 다른 사용자에게 객체에 대한 액세스 권한을 부여할 수 있습니다. 객체 소유권을 사용하여 ACL이 사용 중지되고 버킷 소유자로서 버킷의 모든 객체를 자동으로 소유하도록 이 기본 동작을 변경할 수 있습니다. 결과적으로 데이터에 대한 액세스 제어는 IAM 사용자 정책, S3 버킷 정책, Virtual Private Cloud(VPC) 엔드포인트 정책 및 AWS Organizations 서비스 제어 정책(SCP)과 같은 정책을 기반으로 합니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.

Amazon S3가 액세스 정책을 평가하여 버킷 작업 및 객체 작업에 대한 요청을 승인하거나 거부하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.