PutObjectACL

개요

제공되는 파라미터와 함께 오브젝트에 PUT 요청을 보내면 요청한 오브젝트에 적용할 접근 제어 목록(ACL)을 생성합니다.
ACL을 적용하면 계정의 ID나 미리 만들어진 ACL(기본 ACL)을 사용하여 다른 권한 집합을 부여할 수 있습니다.

네이버 클라우드 플랫폼 Object Storage 서비스를 이용 중인 회원을 대상으로 버킷과 오브젝트에 접근 권한을 부여할 수 있습니다.

네이버 클라우드 플랫폼 Object Storage 이용신청을 완료한 회원은 Object Storage에서 사용할 수 있는 ID가 발급됩니다.
이 ID는 버킷과 오브젝트의 접근 권한을 설정할 때 사용됩니다.

또한 인증없이 접근 가능하도록 public-read, public-write 권한 설정도 가능합니다.

다음 표는 권한 종류와 해당 권한이 부여된 경우 가능한 오퍼레이션을 설명합니다.

권한 버킷에 부여된 경우 오브젝트에 부여된 경우
READ 버킷에 속한 오브젝트 목록 조회가 가능합니다. 오브젝트 데이터와 메타데이터의 읽기가 가능합니다.
WRITE 새 오브젝트를 생성하거나 기존 오브젝트의 덮어쓰기 또는 삭제가 가능합니다. N/A
READ_ACP 버킷의 ACL 조회가 가능합니다. 오브젝트의 ACL 조회가 가능합니다.
WRITE_ACP 버킷의 ACL 설정이 가능합니다. 오브젝트의 ACL 설정이 가능합니다.
FULL_CONTROL READ, WRITE, READ_ACP, WRITE_ACP 권한으로 가능한 모든 오퍼레이션을 수행할 수 있습니다. READ, READ_ACP, WRITE_ACP 권한으로 가능한 모든 오퍼레이션을 수행할 수 있습니다.

다음 표는 네이버 클라우드 플랫폼 Object Storage에서 지원하는 기본 ACL을 설명합니다. 이 표에 언급되지 않은 값은 지원되지 않습니다.

기본 ACL 적용 대상 설명
private 버킷, 오브젝트 소유자에게 FULL_CONTROL 권한을 부여합니다. (default)
public-read 버킷, 오브젝트 소유자에게 FULL_CONTROL 권한을 부여하고, 모든 사용자에게 READ 권한을 부여합니다.
public-read-write 버킷, 오브젝트 소유자에게 FULL_CONTROL 권한을 부여하고, 모든 사용자에게 READ와 WRITE 권한을 부여합니다.
authenticated-read 버킷, 오브젝트 소유자에게 FULL_CONTROL 권한을 부여하고, 인증된 사용자에게 READ 권한을 부여합니다.

오브젝트 레벨에서는 WRITE 권한을 부여할 수 없습니다(버킷 레벨에서만 가능).

요청

구문

PUT https://{endpoint}/{bucket-name}/{object-name}?acl= # path style
PUT https://{bucket-name}.{endpoint}/{object-name}?acl= # virtual host style

예시

요청 예시(기본 ACL)

x-amz-acl 헤더와 기본 ACL 값을 전달하여 오브젝트에 ACL을 할당할 수 있습니다.

PUT /example-bucket/queen-bee?acl= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161207T162842Z
x-amz-acl: public-read
Host: kr.object.ncloudstorage.com

응답 예시

HTTP/1.1 200 OK
Date: Wed, 07 Dec 2016 16:28:42 GMT
Accept-Ranges: bytes
x-amz-request-id: b8dea44f-af20-466d-83ec-2a8563f1617b
Content-Length: 0

요청 예시(기본 ACL, 업로드 요청)

x-amz-acl 헤더와 기본 ACL 값을 전달하면 오브젝트를 업로드할 때 바로 ACL을 할당할 수 있습니다. 다음은 queen-bee 오브젝트 업로드 시 누구나 익명으로 접근할 수 있도록 공개 설정하는 예입니다.

PUT /example-bucket/queen-bee HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161207T162842Z
x-amz-acl: public-read
Host: kr.object.ncloudstorage.com

응답 예시

HTTP/1.1 200 OK
Date: Wed, 07 Dec 2016 16:28:42 GMT
Accept-Ranges: bytes
x-amz-request-id: b8dea44f-af20-466d-83ec-2a8563f1617b
Content-Length: 0

요청 예시(사용자 정의 ACL)

다음은 사용자 정의 ACL을 지정하여 다른 계정으로 이름이 ‘queen-bee’인 오브젝트에 적용된 ACL을 확인할 수는 있지만 오브젝트 자체에는 접근할 수 없도록 요청하는 예입니다. 참고로 세 번째 계정에는 모든 권한이 부여되어 있으므로 동일한 오브젝트 내에서는 모든 오퍼레이션을 수행할 수 있습니다.

PUT /example-bucket/queen-bee?acl= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161207T163315Z
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
Content-Length: 564
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Owner>
    <ID>{owner-user-id}</ID>
    <DisplayName>OwnerDisplayName</DisplayName>
  </Owner>
  <AccessControlList>
    <Grant>
      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
        <ID>{first-grantee-user-id}</ID>
        <DisplayName>{first-grantee-user-id}</DisplayName>
      </Grantee>
      <Permission>READ_ACP</Permission>
    </Grant>
    <Grant>
      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
        <ID>{second-grantee-user-id}</ID>
        <DisplayName>{second-grantee-user-id}</DisplayName>
      </Grantee>
      <Permission>FULL_CONTROL</Permission>
    </Grant>
  </AccessControlList>
</AccessControlPolicy>

응답 예시

HTTP/1.1 200 OK
Date: Wed, 07 Dec 2016 17:11:51 GMT
Accept-Ranges: bytes
x-amz-request-id: ef02ea42-6fa6-4cc4-bec4-c59bc3fcc9f7
Content-Length: 0