이 페이지에서는 액세스제어 목록(ACL)을 사용하여 버킷 및 객체에 액세스를 제어하는 방법을 설명합니다. ACL은 버킷 및 객체에 액세스할 수 있는 사람 그리고 이들에게 제공되는 액세스 권한 수준을 정의하는 데 사용할 수 있는 메커니즘입니다.
리소스 액세스를 제어하기 위해 ACL을 사용해야 하는지 여부에 대한 자세한 내용은 ACL 개요를 참조하세요.
필요한 역할
ACL을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 ACL을 만들고 관리하려는 객체가 포함된 버킷에 대한 스토리지 관리자(roles/storage.admin
) IAM 역할을 부여해 달라고 요청하세요.
이 사전 정의된 역할에는 ACL 생성 및 관리를 위해 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
storage.buckets.get
storage.buckets.list
- 이 권한은 Google Cloud 콘솔을 사용하여 이 페이지의 태스크를 수행하는 경우에만 필요합니다.
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
커스텀 역할로도 이러한 권한을 얻을 수 있습니다.
버킷의 역할 부여에 대한 자세한 내용은 버킷에 IAM 사용을 참조하세요.
ACL 설정 또는 수정
콘솔
Google Cloud 콘솔에서 Cloud Storage 브라우저로 이동합니다.
Cloud Storage 브라우저로 이동버킷 목록에서 ACL을 수정하려는 객체가 포함된 버킷의 이름을 클릭합니다.
ACL을 설정하거나 수정할 객체의 이름을 클릭합니다.
액세스 수정을 클릭합니다.
객체의 현재 ACL이 포함된 권한 대화상자가 열립니다.
+ 항목 추가를 클릭합니다.
권한을 부여할 항목 유형을 선택합니다.
항목은 권한을 얻는 당사자 유형을 지정합니다(예: 사용자 또는 그룹). 항목에 지원되는 값 목록은 액세스 제어 범위를 참조하세요.
이름에 값을 입력합니다.
이름은 특정 사용자, 그룹 또는 다른 항목 유형을 식별합니다. 이름에 지원되는 값 목록은 액세스 제어 범위를 참조하세요.
항목과 이름을 통해 권한이 적용되는 사람을 정의합니다.
액세스에서 값을 선택합니다.
액세스는 객체에 설정할 권한을 정의합니다. 액세스에 지원되는 값 목록은 액세스 제어 권한을 참조하세요.
저장을 클릭합니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
객체에 대한 개별 권한 부여를 추가, 수정 또는 삭제하려면 관련 플래그와 함께 objects update
명령어를 사용합니다.
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 수정이 적용되는 객체가 포함된 버킷의 이름입니다. 예를 들면example-travel-maps
입니다.OBJECT_NAME
은 수정이 적용되는 객체의 이름입니다. 예를 들면paris.jpg
입니다.FLAG
는 다음 중 하나입니다.--add-acl-grant
+ 추가 또는 수정할 권한 부여. 예를 들면--add-acl-grant=entity=user-jane@gmail.com,role=READER
입니다.--remove-acl-grant
+ 액세스 권한을 삭제하려는 항목. 예를 들면--remove-acl-grant=user-jane@gmail.com
입니다.
객체의 모든 ACL을 교체하려면 다음 안내를 따르세요.
JSON 또는 YAML 형식의 파일에 ACL을 정의합니다.
objects update
명령어를--acl-file
플래그와 함께 사용합니다.gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 ACL이 적용되는 객체가 포함된 버킷의 이름입니다. 예를 들면example-travel-maps
입니다.OBJECT_NAME
은 ACL이 적용되는 객체의 이름입니다. 예를 들면paris.jpg
입니다.FILE_LOCATION
은 정의한 ACL이 포함된 파일의 로컬 경로입니다. 예를 들면Desktop/acls.json
입니다.
예시 ACL 파일의 콘텐츠가 아래에 표시되어 있습니다. 이 ACL은 867489160491
프로젝트의 소유자와 jane@gmail.com
사용자에게 paris.jpg
객체에 대한 OWNER
권한을 부여하고 gs-announce
그룹 구성원에게 이 객체에 대한 READER
권한을 부여합니다.
[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jane@gmail.com", "email": "jane@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 ACL을 객체에 추가합니다.
다음 샘플은 ACL을 객체에서 삭제합니다.
REST API
JSON API
객체를 생성할 때는 요청 본문에 acl[]
속성을 지정하거나 insert 요청에 predefinedAcl
쿼리 매개변수를 지정할 수 있습니다. 기존 객체의 경우에는 patch 또는 update 요청에 acl[]
속성이나 predefinedAcl
쿼리 매개변수를 지정합니다.
객체 ACL 속성의 정의는 ObjectAccessControls
리소스를 참조하세요.
JSON 파일에서 ACL을 정의합니다.
예를 들어 ACL이
867489160491
프로젝트 소유자 및jane@gmail.com
사용자에게OWNER
권한을 부여하고gs-announce
그룹의 구성원에게READER
권한을 부여하면 다음 콘텐츠가 포함된acls.json
이라는 파일이 생성됩니다.{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
patch 요청을 JSON 파일과 함께 보내고 ACL을 설정할 객체를 지정합니다.
예를 들어 다음 cURL 명령어는 acls.json
문서의 JSON 페이로드를 example-travel-maps
버킷의 paris.jpg
라는 객체에 적용합니다.
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
XML API
XML API에서는 ACL을 XML 형식으로 사용합니다. XML 문서를 요청 본문에 첨부하여 버킷 및 객체 ACL을 변경해야 합니다. 버킷 및 객체 ACL을 얻을 때 XML 문서가 반환됩니다. XML 문서에는 개별 버킷 또는 객체 ACL 항목이 포함되어 있습니다.
PUT
Bucket 요청으로 버킷을 만든 후에는 두 번째 PUT Bucket 요청을?acl
매개변수와 함께 사용하여 버킷 ACL을 변경합니다.PUT
Object 요청으로 객체를 업로드한 후에는?acl
매개변수 또는x-googl-acl
요청 헤더를 사용하여 다른 PUT 요청으로 ACL을 변경합니다.
예를 들어 다음 cURL 명령어는 acls.xml
문서의 XML 페이로드를 example-travel-maps
버킷의 paris.jpg
라는 객체에 적용합니다.
curl -X PUT --data-binary @acls.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
XML 문서에 다음 ACL 문법을 사용합니다.
요소 | 설명 |
---|---|
AccessControlList |
Entries 및 Owner 요소의 컨테이너입니다. |
Owner |
DisplayName 및 ID 요소의 컨테이너입니다. 객체는 항상 업로드한 사용자의 소유이기 때문에 이 요소는 객체에 필수가 아닙니다. 이 요소는 마이그레이션 시나리오에서 Amazon S3 ACL 문법을 사용 중일 때 사용됩니다. Amazon Simple Storage Service 및 Amazon S3는 미국 및/또는 다른 국가에서 사용되는 Amazon.com, Inc. 또는 해당 계열사의 상표입니다. |
ID |
버킷 소유자의 Google Cloud Storage ID입니다. |
DisplayName |
현재 구현되어 있지 않습니다. 값은 항상 빈 문자열입니다. |
Entries |
0개 이상의 Entry 요소를 위한 컨테이너입니다. |
Entry |
Scope 및 Permission 요소의 컨테이너입니다. Entry 는 하나의 Scope 와 하나의 Permission 요소만 포함해야 합니다. |
Scope |
ACL 범위를 정의하는 ID , EmailAddress 또는 Domain 요소의 컨테이너입니다. 이 요소에는 UserByID , UserByEmail , GroupByID , GroupByEmail , GroupByDomain , AllUsers 또는 AllAuthenticatedUsers 값 중 하나를 포함하는 type 속성이 있어야 합니다. |
ID |
권한 항목이 ID로 지정될 때 수혜자의 식별자입니다. |
EmailAddress |
권한 항목이 이메일로 지정될 때 수혜자의 이메일 식별자입니다. |
Domain |
권한 항목이 도메인으로 지정될 때 수혜자의 도메인 식별자입니다. |
Name |
지정할 수 있거나 범위가 UserByEmail 또는 GroupByEmail 인 경우 자동으로 추가될 수 있는 선택적 요소입니다. |
Permission |
부여된 권한입니다(READ , WRITE , FULL_CONTROL ). |
XML API를 사용하여 ACL 작업 시 주의 사항은 다음과 같습니다.
- 위에 설명된 XML 형식만 사용할 수 있습니다.
중복된 범위를 설정할 수 없습니다.
ACL XML에 여러 개의 항목이 있을 수 있지만 범위가 중복된 항목은 있을 수 없습니다. 예를 들어
jane@example.com
의 같은 범위 요소를 사용하는 항목이 2개 있을 수는 없습니다.
다음 예는 서로 다른 버킷 ACL 항목을 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>00b4903a9721...</ID> </Owner> <Entries> <Entry> <Scope type="GroupById"> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByDomain"> <Domain>example.com</Domain> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>jane</Name> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllAuthenticatedUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
ACL XML에서 Name 요소 설정
버킷이나 객체에서 ACL을 검색할 때 일부 항목에 <Name>
요소가 더 추가된 것을 볼 수 있습니다. 예를 들어 다음과 같은 항목을 볼 수 있습니다.
<Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
이러한 선택적 <Name>
요소는 다음 두 가지 상황에서 채워집니다.
버킷 또는 객체의 ACL에
<Name>
이 요소로 포함된 경우ACL을 설정할 때
<Name>
요소를 ACL 항목에 포함하도록 선택할 수 있습니다.<Name>
요소 안에 어떠한 값이라도 제공할 수 있으며, Cloud Storage는 ACL을 삭제하거나 교체하기 전까지 이 값을 기억합니다. 이 방식은 Google Cloud Storage ID와 같이 쉽게 식별할 수 없는 식별자를 사용 중인 경우에 유용합니다.UserByEmail
또는GroupByEmail
범위에 공개 Google 프로필이 포함된 경우이러한 범위 중 하나를 사용하고 있지만
<Name>
요소를 제공하지 않는 경우 Cloud Storage는 이메일 주소와 연관된 사용자 또는 Google 그룹이 공개 이름을 사용하는 공개 Google 프로필을 가지고 있는지 확인합니다. 공개 이름을 사용하는 Google 프로필이 있을 경우 Cloud Storage는<Name>
요소에 공개 이름을 자동으로 채웁니다.
사전 정의된 ACL 적용
위에 나온 것처럼 전체 ACL을 한 번에 하나씩 지정하는 대신 특정 시나리오에 맞춤설정된 다수의 항목을 자동으로 적용하는 사전 정의된 ACL을 사용할 수 있습니다. Google Cloud CLI, JSON API, XML API를 사용하여 사전 정의된 ACL을 버킷이나 객체에 적용할 수 있습니다.
새 객체
객체 업로드 중에 사전 정의된 ACL을 객체에 적용하려면 다음과 같이 하세요.
콘솔
Google Cloud 콘솔을 사용하여 사전 정의된 ACL을 적용할 수 없습니다. 대신 gcloud storage
를 사용하세요.
명령줄
gcloud storage cp
명령어를 --predefined-acl
플래그와 함께 사용합니다.
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
예를 들어 example-travel-maps
버킷에 paris.jpg
객체를 업로드할 때 사전 정의된 ACL bucketOwnerRead
를 적용하려면 다음을 입력합니다.
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
REST API
JSON API
insert 요청에 predefinedAcl
쿼리 문자열 매개변수를 사용하여 사전 정의된 ACL을 적용합니다.
예를 들어 example-travel-maps
버킷에 paris.jpg
객체를 업로드할 때 사전 정의된 ACL bucketOwnerRead
를 적용하려면 다음을 입력합니다.
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
XML API
Put Object 요청에 x-goog-acl
헤더를 사용하여 사전 정의된 ACL을 요청합니다.
예를 들어 example-travel-maps
버킷에 paris.jpg
객체를 업로드할 때 사전 정의된 ACL bucket-owner-read
를 적용하려면 다음을 입력합니다.
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg
기존 버킷 또는 객체
사전 정의된 ACL을 기존 버킷이나 객체에 적용할 수도 있습니다. 이는 하나의 사전 정의된 ACL에서 다른 사전 정의된 ACL로 변경하고자 하거나 커스텀 ACL을 사전 정의된 ACL로 업데이트하고자 하는 경우에 유용합니다.
콘솔
Google Cloud 콘솔을 사용하여 사전 정의된 ACL을 적용할 수 없습니다. 대신 gcloud storage
를 사용하세요.
명령줄
objects update
명령어를 --predefined-acl
플래그와 함께 사용합니다.
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
예를 들어 example-travel-maps
버킷의 paris.jpg
객체에 사전 정의된 ACL private
를 적용하려면 다음을 입력합니다.
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
REST API
JSON API
predefinedAcl
쿼리 문자열 매개변수를 사용하고 patch 요청에 빈 acl
속성을 지정하여 사전 정의된 ACL을 적용합니다.
예를 들어 example-travel-maps
버킷의 paris.jpg
객체에 사전 정의된 ACL private
를 적용하려면 다음을 입력합니다.
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
XML API
Put Object 요청에서 x-goog-acl
헤더를 acl
쿼리 문자열 파라미터와 함께 사용합니다. 하지만 요청에 XML 문서를 포함하지 않습니다.
예를 들어 example-travel-maps
버킷의 paris.jpg
객체에 사전 정의된 ACL private
를 적용하려면 다음을 입력합니다.
curl -X PUT -H "Content-Length: 0" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-acl: private" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
기본 객체 ACL 설정
새 객체를 생성할 때마다 ACL을 설정할 필요가 없도록 버킷에 기본 객체 ACL을 설정할 수 있습니다. 이후로는 해당 버킷에 추가되는 새 객체마다 명시적으로 적용된 ACL이 없는 객체는 모두 이 기본 객체 ACL이 적용됩니다. 예를 들어 특정 그룹의 사용자만 특정 버킷에서 대부분의 객체에 액세스하도록 지정하고자 할 수 있습니다. 이런 경우 기본 객체 ACL을 변경한 후에 객체를 버킷에 추가하면 됩니다. 이렇게 추가된 객체에는 지정한 기본 객체 ACL이 자동으로 적용됩니다. 하지만 특정 객체에 다른 ACL을 지정할 수도 있습니다. 그러면 이러한 객체에는 기본 ACL이 적용되지 않습니다.
버킷에서 기본 객체 ACL을 확인하고 변경하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔을 사용하여 기본 객체 ACL을 설정할 수 없습니다. 대신 gcloud storage
를 사용하세요.
명령줄
--format
플래그와 함께buckets describe
명령어를 사용하여 버킷의 기본 객체 ACL을 검색합니다.gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
여기서
BUCKET_NAME
은 보려는 기본 객체 ACL이 있는 버킷의 이름입니다. 예를 들면my-bucket
입니다.원하는 플래그와 함께
buckets update
명령어를 사용하여 버킷의 기본 객체 ACL을 수정합니다.gcloud storage buckets update gs://BUCKET_NAME FLAG
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 수정하려는 기본 객체 ACL이 있는 버킷의 이름입니다. 예를 들면my-bucket
입니다.FLAG
는 다음 중 하나입니다.--add-default-object-acl-grant
및 버킷의 전체 기본 객체 ACL에 추가할 권한 부여--default-object-acl-file
및 버킷의 새 기본 객체 ACL을 정의하는 로컬 파일의 경로--predefined-default-object-acl
및 버킷의 기존 기본 객체 ACL을 대체할 사전 정의된 객체 ACL의 이름--remove-default-object-acl-grant
및 버킷의 전체 기본 객체 ACL에서 삭제할 항목
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 버킷의 기본 객체 ACL을 출력합니다.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 기본 객체 ACL을 버킷에 추가합니다.
다음 샘플은 기본 객체 ACL을 버킷에서 삭제합니다.
REST API
JSON API
GET 요청을 사용하여 기본 객체 ACL을 검색합니다. 예를 들면 다음과 같습니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=full
patch 요청을 사용하여 기본 객체 ACL을 바꿉니다. 예를 들어 다음 요청은 기본 객체 ACL을
example-travel-maps
버킷의defacls.json
에 지정된 ACL로 바꿉니다.curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps
defacls.json
의 예시는 다음과 같습니다.{ "defaultObjectAcl": [ { "email": "jane@gmail.com", "entity": "user-jane@gmail.com", "role": "READER" } ] }
XML API
버킷에 맞춘
GET
요청과?defaultObjectAcl
매개변수를 사용하여 기본 객체 ACL을 검색합니다. 예를 들면 다음과 같습니다.curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
버킷에 맞춘
PUT
요청과?defaultObjectAcl
매개변수를 사용하여 기본 객체 ACL을acls.xml
에 지정된 ACL로 바꿉니다. 예를 들면 다음과 같습니다.curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
acls.xml
의 예시는 다음과 같습니다.<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="GroupByEmail"> <EmailAddress>travel-companions@googlegroups.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
ACL 문법은 ACL 설정에서 설명합니다. 사전 정의된 ACL을 기본 객체 ACL로 지정할 수도 있습니다.
버킷의 기본 객체 ACL을 사전 정의된 ACL로 설정하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔을 사용하여 기본 객체 ACL을 설정할 수 없습니다. 대신 gcloud storage
를 사용하세요.
명령줄
buckets update
명령어를 --predefined-default-object-acl
플래그와 함께 사용합니다.
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 수정하려는 기본 객체 ACL이 있는 버킷의 이름입니다. 예를 들면my-bucket
입니다.PREDEFINED_ACL
은 유효한 사전 정의된 ACL의 이름입니다. 예를 들면projectPrivate
입니다.
REST API
JSON API
PUT 요청과 predefinedAcl
매개변수를 사용합니다.
예를 들면 다음과 같습니다.
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
XML API
버킷에 맞춘 PUT
요청과 ?defaultObjectAcl
매개변수 및 x-goog-acl
헤더를 사용합니다.
예를 들면 다음과 같습니다.
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
새로 생성된 버킷의 기본 객체 ACL:
다음 예시에서는 자체 기본 객체 ACL을 요청의 일부로 지정하지 않으면 새로 생성된 버킷에 자동으로 적용되는 기본 객체 ACL을 보여줍니다. 버킷의 기본 객체 ACL이 변경되었는지 확인하려면 버킷의 현재 기본 객체 ACL을 다음 예시와 비교합니다.
콘솔
Google Cloud 콘솔을 사용하여 기본 객체 ACL을 작업할 수 없습니다.
대신 gcloud storage
를 사용하세요.
명령줄
아래의 예에서 프로젝트 ID는 '123412341234'입니다. 사용자의 프로젝트 ID는 다릅니다.
defaultObjectAcl: – entity: project-owners-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: owners role: OWNER – entity: project-editors-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: editors role: OWNER – entity: project-viewers-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: viewers role: READER
REST API
JSON API
아래의 예에서 프로젝트 ID는 '123412341234'입니다. 사용자의 프로젝트 ID는 다릅니다.
"defaultObjectAcl": [ { "kind": "storage#objectAccessControl", "entity": "project-owners-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "owners" } }, { "kind": "storage#objectAccessControl", "entity": "project-editors-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "editors" } }, { "kind": "storage#objectAccessControl", "entity": "project-viewers-123412341234", "role": "READER", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" } } ]
XML API
아래의 예에서 프로젝트 역할 ID는 '00b4903a97...'로 시작됩니다. 사용자의 프로젝트 ID는 다릅니다.
<?xml version='1.0' encoding='UTF-8'?> <AccessControlList> <Entries> <Entry> <Scope type='GroupById'> <ID>00b4903a9721...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9723...</ID> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
새로 생성된 버킷의 기본 객체 ACL이 사전 정의된 projectPrivate
ACL과 동일합니다.
ACL 검색
기존 리소스의 ACL을 가져오려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 Cloud Storage 브라우저로 이동합니다.
Cloud Storage 브라우저로 이동ACL을 조회할 객체로 이동합니다.
객체의 드롭다운 메뉴에서 액세스 수정을 선택합니다.
객체의 권한이 표시되는 권한 대화상자가 나타납니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
objects describe
명령어를--format
플래그와 함께 사용하여 객체의 ACL을 검색합니다.gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 보려는 ACL이 있는 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 보려는 ACL이 있는 객체의 이름입니다. 예를 들면paris.jpg
입니다.
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 객체 ACL을 가져옵니다.
REST API
JSON API
객체에 대한
OWNER
권한이 있는지 확인합니다.GET
요청으로 객체의 ACL을 검색합니다.객체 ACL은 JSON 형식으로 반환되고 응답의 본문에 첨부됩니다.
예를 들어 example-travel-maps
버킷에서 paris.jpg
객체의 ACL을 반환하려면 다음 안내를 따르세요.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
다음과 비슷한 응답이 표시됩니다.
{ "kind": "storage#object", "id": "example-travel-maps/paris.jpg/1412805837131000", "selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg", "name": "paris.jpg", "bucket": "example-travel-maps", ... "acl": [ { ... "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, ... }, { ... "entity": "user-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-jane@gmail.com" }, ... }
objectAccessControls
리소스 GET
메서드를 사용하여 객체의 ACL에 있는 개별 항목을 반환할 수도 있습니다.
XML API
버킷 또는 객체에 대한
FULL_CONTROL
권한이 있는지 확인합니다.GET Object 요청에서
acl
쿼리 문자열 매개변수를 사용하여 버킷 또는 객체의 ACL을 검색합니다.
ACL은 XML로 표시되고 응답의 본문에 첨부됩니다.
예를 들어 example-travel-maps
버킷에서 paris.jpg
객체의 ACL을 반환하려면 다음 안내를 따르세요.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
다음과 비슷한 응답이 표시됩니다.
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Owner Name</Name> </Owner> <Entries> <Entry> <Scope type="UserById"> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Name</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
ObjectAccessControls
리소스의 JSON GET
메서드를 사용하여 특정 ACL 항목을 반환할 수도 있습니다.
다음 단계
- ACL 자세히 알아보기
- 균일한 버킷 수준 액세스 사용을 통해 액세스 제어를 간소화하는 방법 알아보기
- ACL 사용 시 권장사항 알아보기