메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

액세스 관리 개요

권한을 부여하려면 권한을 부여 받을 사용자, 권한 대상이 되는 Amazon S3 리소스, 해당 리소스에 허용되는 특정 작업을 결정합니다.

Amazon S3 리소스

버킷과 객체는 기본 Amazon S3 리소스이며, 각각 관련 하위 리소스가 있습니다. 다음은 버킷 하위 리소스의 몇 가지 예입니다.

  • lifecycle - 수명 주기 구성 정보를 저장합니다(객체 수명 주기 관리 참조).

  • website - 웹 사이트 호스팅용 버킷을 구성하려면 웹 사이트 구성 정보를 저장합니다. (Amazon S3 정적 웹 사이트 호스팅 참조)

  • versioning - 버전 관리 구성을 저장합니다(PUT Bucket versioning 참조).

  • policyacl(액세스 제어 목록) - 버킷에 대한 액세스 권한 정보를 저장합니다.

  • cors (Cross-Origin Resource Sharing) - 교차 원본 요청을 허용하는 버킷 구성을 지원합니다(CORS(Cross-Origin Resource Sharing) 참조).

  • logging - Amazon S3에 요청해 버킷 액세스 로그를 저장할 수 있습니다.

다음은 객체 하위 리소스의 몇 가지 예입니다.

  • acl - 객체에 대한 액세스 권한 목록을 저장합니다. 본 주제에서는 이 하위 리소스로 객체 권한을 관리하는 방법을 다룹니다(ACL을 사용한 액세스 관리 참조).

  • restore - 아카이빙된 객체의 임시 복원을 지원합니다(POST Object restore 참조). Glacier 스토리지 클래스의 객체는 아카이빙된 객체입니다. 객체에 액세스하려면, 우선 복원 요청을 해야 하며 이에 따라 아카이빙된 객체의 복사본이 복원됩니다. 요청 시 복원하려는 객체 복사본의 복원 일수를 지정합니다. 객체 아카이빙에 대한 자세한 정보는 객체 수명 주기 관리을 참조하십시오.

리소스 소유자란

모든 Amazon S3 리소스는 기본적으로 비공개입니다. 리소스는 리소스 소유자만 액세스할 수 있습니다. 리소스 소유자란 리소스를 생성한 AWS 계정을 말합니다. 예:

  • 버킷과 객체를 생성할 때 사용한 AWS 계정에서 해당 리소스를 소유합니다.

  • 자신의 AWS 계정에서 AWS Identity and Access Management (IAM) 사용자를 생성한 경우, AWS 계정이 상위 소유자가 됩니다. IAM 사용자가 객체를 업로드하면, 그 사용자가 속한 상위 계정이 해당 객체의 소유자가 됩니다.

  • 버킷 소유자는 다른 AWS 계정(또는 다른 계정의 사용자)에 객체를 업로드할 수 있는 교차 계정 권한을 부여할 수 있습니다. 이 경우, 객체를 업로드하는 AWS 계정이 해당 객체의 소유자입니다. 버킷 소유자는 다른 계정 소유의 객체에 대한 권한이 없습니다. 단, 다음 경우는 예외입니다.

    • 버킷 소유자가 요금을 지불하는 경우. 버킷 소유자는 객체의 소유 여부와 관계 없이 모든 객체에 대한 액세스를 거부하거나 버킷에 있는 객체를 삭제할 수 있습니다.

    • 버킷 소유자는 객체 소유 여부에 관계 없이 모든 객체를 아카이빙하거나 아카이빙된 객체를 복원할 수 있습니다. 아카이빙이란 객체를 저장하는 데 사용하는 스토리지 클래스를 말합니다. 자세한 내용은 객체 수명 주기 관리를 참조하십시오.

중요

AWS는 AWS 계정의 루트 자격 증명으로 액세스를 요청하지 않도록 합니다. 대신, IAM 사용자를 만들고 그 사용자에게 완전한 액세스를 허용합니다. 이러한 사용자를 관리자 사용자라고 합니다. 본인 계정의 루트 자격 증명 대신 관리자 사용자 자격 증명을 사용해 AWS와 연동하면서 버킷 생성, 사용자 생성, 권한 부여 등의 작업을 수행할 수 있습니다. 자세한 정보는 AWS General Reference루트 계정 자격 증명과 IAM 사용자 자격 증명IAM 사용 설명서IAM 모범 사례를 참조하십시오.

다음 그림은 리소스, IAM 사용자, 버킷, 객체를 소유한 AWS 계정을 나타냅니다.

리소스 작업

Amazon S3은(는) Amazon S3 리소스를 처리하기 위한 작업을 제공합니다. 가능한 작업에 대한 자세한 정보는 Amazon Simple Storage Service API ReferenceOperations on BucketsOperations on Objects 단원을 참조하십시오.

리소스 액세스 관리 (액세스 정책 옵션)

액세스 관리란 액세스 정책을 만들어 제3자(AWS 계정 및 사용자)에게 리소스 작업을 수행할 권한을 부여하는 것을 말합니다. 예를 들어, AWS 계정의 사용자에게 PUT Object 권한을 부여하면 해당 사용자가 귀하의 버킷에 객체를 업로드할 수 있습니다. 개별 사용자와 계정에 대한 권한 부여 뿐만 아니라 전체(익명 액세스) 사용자와 인증된 모든 사용자(AWS 자격 증명이 있는 사용자)에게 권한을 부여할 수 있습니다. 예를 들어, 버킷을 웹사이트로 구성하는 경우 누구에게나 GET Object 권한을 부여해 객체를 공개할 수 있습니다.

액세스 정책은 누가 무엇에 액세스 할 수 있는지를 나타냅니다. 액세스 정책은 리소스(버킷 및 객체) 또는 사용자와 연결할 수 있습니다. 이에 따른 사용 가능한 Amazon S3 액세스 정책을 다음과 같이 분류할 수 있습니다.

  • 리소스 기반 정책 - 버킷 정책과 ACL(액세스 제어 목록)은 Amazon S3 리소스에 연결되는 리소스 기반입니다.

    • ACL - 각 버킷과 객체마다 연결된 ACL이 있습니다. ACL은 피부여자와 그에 부여된 권한을 식별하는 권한 부여 목록입니다. ACL로 다른 AWS 계정에 기본적인 읽기/쓰기 권한을 부여합니다. ACL은 Amazon S3 별 XML 스키마를 사용합니다.

      다음은 버킷 ACL의 예입니다. ACL 권한 부여는 완전한 제어 권한을 지닌 버킷 소유자를 나타냅니다.

      Copy
      <?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

      버킷과 객체 ACL 모두 동일한 XML 스키마를 사용합니다.

    • 버킷 정책 - 본인의 버킷에 한해 다른 AWS 계정이나 IAM 사용자에게 버킷과 버킷에 포함된 객체에 대한 권한을 부여하는 버킷 정책을 추가할 수 있습니다. 모든 객체 권한은 해당 버킷 소유자가 생성하는 객체에만 적용됩니다. 버킷 정책은 ACL 기반 액세스 정책을 보완하며 대부분의 경우 액세스 정책을 대신합니다.

      다음은 버킷 정책의 예입니다. 버킷 정책(및 사용자 정책)은 JSON 파일로 나타냅니다. 이 정책은 버킷의 모든 객체에 대한 익명 읽기 권한을 허가합니다. 버킷 정책에 이름이 examplebucket인 버킷의 객체에 대해 s3:GetObject 작업(읽기 권한)을 허용한다는 설명이 있습니다.  해당 정책은 와일드 카드 (*)를 사용해 principal을 명시함으로써 익명 액세스를 허용합니다.

      Copy
      { "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::examplebucket/*"] } ] }
  • 사용자 정책 - AWS Identity and Access Management (IAM)로 Amazon S3 리소스에 대한 액세스를 관리할 수 있습니다. IAM을 사용해 내 계정으로 IAM 사용자, 그룹, 역할을 만들고 액세스 정책을 연결하면 Amazon S3 등 AWS 리소스에 액세스할 수 있습니다.

    IAM에 대한 자세한 정보는 AWS Identity and Access Management(IAM) 제품 세부 정보 페이지를 참조하십시오.

    다음은 사용자 정책의 예입니다. IAM 사용자 정책은 사용자와 연결되므로 이 정책에서는 익명 권한을 부여할 수 없습니다. 예시로 든 정책은 연결된 사용자가 버킷과 버킷에 포함된 객체에 대해 6개의 다양한 Amazon S3 작업을 수행할 수 있도록 허용해 줍니다. 이 정책을 특정 IAM 사용자, 그룹 및 역할과 연결할 수 있습니다.

    Copy
    { "Statement": [ { "Effect":"Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource":"arn:aws:s3:::examplebucket/*" } ] }

요청을 받으면 Amazon S3이 모든 액세스 정책을 평가해 권한 부여나 요청 거부를 결정합니다. Amazon S3의 해당 정책 평가에 대한 자세한 정보는 Amazon S3에서 요청에 권한을 부여하는 방법을 참조하십시오.

그렇다면 어떤 액세스 제어 방법을 사용해야 합니까?

액세스 정책 생성 옵션을 사용하는 경우, 다음과 같은 질문을 합니다.

  • 각 액세스 제어 방법에 따른 사용시기는 언제입니까? 예를 들어, 버킷 권한을 부여하려면 버킷 정책과 버킷 ACL 중 어느 것을 사용해야 합니까? 나는 1개의 버킷과 그 버킷에 든 객체를 소유하고 있습니다. 리소스 기반 액세스 정책과 IAM 사용자 정책 중 어느 것을 사용해야 합니까? 리소스 기반 액세스 정책을 사용하는 경우, 객체 권한 관리에 버킷 정책과 객체 ACL 중 어느 것을 사용해야 합니까?

  • 1개의 버킷을 소유하고 있더라도 그 버킷에 있는 모든 객체를 소유한 것은 아닙니다. 다른 사람이 소유하고 있는 객체에 대한 액세스 권한은 어떻게 관리합니까?

  • 이러한 액세스 정책 옵션을 결합하여 액세스를 허용하는 경우, Amazon S3은(는) 사용자에게 요청 작업 수행 권한이 있는지 여부를 어떻게 판단합니까?

다음 단원에서는 이러한 액세스 제어 옵션과 Amazon S3의 액세스 제어 방식 평가 방법, 액세스 제어 방법에 따른 사용 시기를 살펴보고 관련 실례를 제시합니다.

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

제공되는 액세스 정책 옵션 사용 지침

예제 안내: Amazon S3 리소스에 대한 액세스 관리

Amazon S3 리소스 액세스 관리에 쓰이는 옵션에 대한 주제별 설명을 우선 읽어 보는 것이 좋습니다. 자세한 내용은 Amazon S3 리소스에 대한 액세스 권한 관리 소개를 참조하십시오. 그 후, 다음과 같이 주제별로 특정 액세스 정책 옵션에 대한 자세한 정보를 얻을 수 있습니다.