버킷 정책 전용

이 페이지에서는 Cloud Storage 리소스에 대한 액세스 권한을 일정하게 제어할 수 있게 해주는 버킷 정책 전용 기능을 설명합니다. 버킷 정책 전용 기능이 버킷에 사용 설정되면 버킷 수준의 Cloud Identity and Access Management(Cloud IAM) 권한이 있어야만 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 액세스제어 목록(ACL)은 사용 중지되고 ACL에서 부여한 액세스 권한은 취소됩니다. 이 기능을 사용하는 방법에 대한 가이드는 버킷 정책 전용 기능 사용을 참조하세요.

개요

Cloud Storage는 버킷과 객체에 대한 액세스 권한을 사용자에게 부여하는 데 사용되는 Cloud Identity and Access Management(Cloud IAM)액세스제어 목록(ACL)이라는 두 시스템을 제공합니다. 이러한 시스템은 동시에 작동합니다. 사용자가 Cloud Storage 리소스에 액세스할 수 있게 하려면 이러한 시스템 중 하나만 사용자에게 권한을 부여해야 합니다. Cloud IAM은 Google Cloud Platform(GCP) 전체에서 사용되며 버킷 및 프로젝트 수준에서 세부적인 권한을 부여할 수 있게 해줍니다. ACL은 Cloud Storage에서만 사용되며 권한 옵션이 더 적지만 객체 단위로 권한을 부여할 수 있습니다.

Cloud Storage는 일정한 권한 관리 시스템을 지원하기 위해 버킷 정책 전용 기능을 제공합니다. 이 기능을 사용하면 모든 Cloud Storage 리소스에 대한 ACL이 사용 중지됩니다. Cloud Storage 리소스에 대한 액세스 권한은 Cloud IAM을 통해 배타적으로 부여됩니다.

버킷 정책 전용 기능을 사용해야 하는 경우

다음과 같은 경우 버킷 정책 전용 기능을 사용하세요.

  • 단일 권한 관리 시스템을 통해 Cloud Storage 리소스에 대한 액세스 권한을 관리하려는 경우

  • GCP 리소스 전반에서 일관적인 액세스 제어 환경을 원하는 경우

  • 버킷에 객체가 많고 각 객체에 대한 액세스 권한을 개별적으로 관리하지 않으려는 경우

  • ACL이 아닌 Cloud IAM 정책을 통해 부여된 액세스만 추적하는 Cloud 감사 로그도메인 제한 공유와 같은 GCP 보안 기능을 사용하려는 경우

  • 객체 업로더가 항상 객체 전체 제어 권한을 보유하는 것을 원치 않는 경우

다음과 같은 경우 버킷 정책 전용 기능을 사용하지 마세요.

  • 기존 ACL을 통해 버킷의 특정 객체에 대한 액세스를 부여하려는 경우

  • 객체의 업로더에게 해당 객체에 대한 전체 액세스 권한을 부여하되 버킷의 다른 객체에 대한 액세스 권한에는 제한을 두려는 경우

제한사항

버킷 정책 전용 기능을 사용할 때는 다음과 같은 제한사항이 적용됩니다.

  • Cloud Storage로 내보내는 특정 GCP 서비스를 버킷 정책 전용 기능이 사용 설정된 버킷으로 내보낼 수 없습니다. 이러한 서비스는 다음과 같습니다.

    Stackdriver, Cloud 감사 로그, Cloud Datastore.

  • XML API를 사용하여 버킷 정책 전용 기능의 상태를 확인하거나 버킷 정책 전용 기능을 사용 설정 또는 사용 중지할 수 없습니다.

  • XML API를 사용하여 버킷 정책 전용 기능이 사용 설정된 버킷의 권한을 보거나 설정할 수 없습니다.

  • 버킷 정책 전용 기능이 사용 설정된 버킷에서 공개적으로 액세스할 수 있는 객체의 Cache-Control 값은 명시적으로 public으로 설정하지 않는 한 기본적으로 private로 설정됩니다.

사용 설정된 경우의 동작

새 버킷을 만들거나 기존 버킷에 명시적으로 버킷 정책 전용 기능을 사용 설정하면 버킷 정책 전용 기능을 사용 설정할 수 있습니다.

이 기능이 사용 설정되면 다음과 같이 ACL 기능이 중지됩니다.

  • 버킷 및 객체 ACL의 설정, 읽기 또는 수정 요청이 400 Bad Request 오류와 함께 실패합니다.

  • BucketAccessControls, DefaultObjectAccessControls, ObjectAccessControls 메서드를 사용하여 수행한 JSON API 요청이 400 Bad Request 오류와 함께 실패합니다.

  • 버킷 또는 객체 메타데이터의 전체 프로젝션에 대한 JSON API 요청에는 응답에 속하는 빈 ACL 목록이 포함됩니다.

  • gsutil 명령어 cp -p, mv -p, rsync -p가 실패합니다(버킷 정책 전용 버킷이 소스이면서 대상이기도 한 경우).

  • 개별 객체 소유권이 더 이상 존재하지 않으며, 이러한 소유권에서 부여된 액세스 권한이 취소되고, 버킷 및 객체 메타데이터에 대한 요청에 owner 필드가 더 이상 포함되지 않습니다.

또한 새 버킷을 생성할 때 버킷 정책 전용 기능을 사용 설정하면 버킷이 추가 Cloud IAM 역할을 자동으로 수신합니다. 이 동작은 객체가 버킷의 기본 객체 ACL에서 상속한 권한 관리 방식을 유지합니다. 기존 버킷에 버킷 정책 전용 기능을 사용 설정하는 경우 이러한 역할을 수동으로 적용해야 합니다. 버킷의 기본 객체 ACL을 변경한 경우 다른 역할 집합을 적용하는 것이 좋습니다.

되돌릴 경우의 동작

버킷 정책 전용을 사용 중지하고 다시 ACL을 사용하는 기능을 지원하기 위해 Cloud Storage는 기존 ACL을 90일 동안 저장합니다. 이 기간 동안 버킷 정책 전용 기능을 사용 중지하면 다음과 같은 결과가 나타납니다.

  • 객체가 저장된 ACL을 다시 가져옵니다.

  • 버킷 정책 전용 기능이 사용 설정된 후 버킷에 추가된 모든 객체가 버킷에서 사용하는 기본 객체 ACL에 따라 ACL을 가져옵니다.

기존 버킷 마이그레이션 시 고려사항

기존 버킷에 버킷 정책 전용 기능을 사용 설정할 때는 이전에 ACL을 통해 액세스했던 사용자와 서비스가 자신의 권한을 Cloud IAM으로 마이그레이션 했는지 확인해야 합니다. 이 섹션에서는 버킷을 버킷 정책 전용 기능으로 마이그레이션할 때 수행해야 하는 몇 가지 단계를 설명합니다. ACL과 Cloud IAM은 버킷 권한에 동기화되므로 버킷에 대한 액세스가 아닌 버킷 내 객체에 대한 액세스에 중점을 둡니다.

버킷 수준 IAM 권한이 데이터를 과도하게 노출시키는지 여부 고려

Cloud IAM과 동일한 권한을 ACL에 할당하기 전에 다음을 고려합니다.

  • 버킷 수준에서 적용된 Cloud IAM 권한은 버킷에 있는 모든 객체에 적용되는 반면, 객체 ACL은 객체마다 달라질 수 있습니다.

일부 객체에만 적용하려는 액세스 권한이 있다면 관련 객체를 개별 버킷으로 그룹화해야 합니다. 각 그룹에는 동일한 권한을 가진 객체들이 있어야 합니다.

객체 ACL 사용 확인

버킷 정책 전용 기능으로 마이그레이션할 때는 적용된 ACL을 통해 버킷의 객체에 액세스하고 있는지 확인해야 합니다. 이를 확인하기 위해 Stackdriver에는 ACL 사용을 추적하는 측정항목이 있습니다. 이러한 측정항목에서 사용자 또는 서비스가 ACL을 통해 객체에 액세스하는 것으로 나타나면 버킷 정책 전용 기능을 사용 설정하기 전에 먼저 버킷에 Cloud IAM와 동일한 권한을 할당해야 합니다. Stackdriver에서 ACL 사용을 확인하는 방법은 ACL 사용 확인을 참조하세요.

이 측정항목을 사용하여 버킷 정책 전용 기능을 사용 설정하면 워크플로가 중단되는지 확인합니다.

측정항목 설명
storage.googleapis.com/authz/acl_operations_count 버킷 정책 전용 기능이 사용 설정되면 사용 중지되는 ACL 작업 수를 ACL 작업 유형 및 버킷별로 세분화한 것입니다.

OBJECT_ACCESS_REQUIRED_OBJECT_ACL이라는 ACL 작업을 특히 눈여겨보아야 합니다.

  • 이 숫자가 0이면 지난 6주 동안 객체에 액세스하는 데 객체 수준 ACL이 필요하지 않았던 것입니다. Cloud IAM 정책은 버킷 또는 프로젝트 수준에서 필요한 권한을 다룹니다.

  • 이 값이 0보다 크면 지난 6주 동안 객체 ACL 권한이 필요한 객체 액세스 요청이 있었던 것입니다. 버킷 정책 전용 기능을 사용 설정하기 전에 동일한 Cloud IAM 정책을 할당해야 합니다.

Stackdriver 측정항목에 대한 자세한 내용은 측정항목, 시계열, 리소스를 참조하세요.

버킷의 기본 객체 ACL 확인

모든 버킷에는 기본 객체 ACL이 연결되어 있습니다. 버킷에 추가되는 새 객체에는 객체가 버킷에 추가될 때 ACL이 명시적으로 제공되지 않는 한 이 기본 객체 ACL이 적용됩니다.

버킷 정책 전용 기능을 사용 설정하기 전에 버킷에 있는 기본 객체 ACL을 확인합니다. 버킷 정책 전용 기능을 사용 설정한 후에는 기본 객체 ACL과 연결된 권한을 부여할지 여부를 고려합니다. 만약 그렇다면 버킷에 Cloud IAM과 동일한 권한을 할당합니다.

Cloud IAM과 동일한 권한을 객체 ACL에 할당

객체 ACL은 현재 Cloud IAM이 부여하지 않는 액세스 권한을 부여할 수 있습니다. 버킷 정책 전용 기능을 사용 설정할 때 기존 사용자가 객체에 대한 액세스 권한을 잃지 않도록 하려면 다음 표를 통해 영향을 받는 사용자에게 적절한 Cloud IAM 역할을 할당합니다.

객체 ACL 권한 동일한 Cloud IAM 역할
READER roles/storage.legacyObjectReader
OWNER roles/storage.legacyObjectOwner

다음 단계