- 인쇄
- PDF
PutObjectACL
- 인쇄
- PDF
개요
제공되는 파라미터와 함께 오브젝트에 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.fin-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.fin-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.fin-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