버킷의 암호화 유형 적용 또는 제한

이 문서에서는 Cloud Storage 버킷의 새 객체에 허용되거나 제한되는 암호화 방법을 구성하는 방법을 설명합니다. 버킷 내에서 생성되는 새 객체에 대해 표준 암호화(Google 기본 암호화), 고객 관리 암호화 키 (CMEK) 또는 고객 제공 암호화 키 (CSEK)의 사용을 강제하거나 제한하도록 버킷을 구성할 수 있습니다.

예를 들어 랜섬웨어 공격을 방지하기 위해 모든 새 객체를 표준 암호화 또는 CMEK로 암호화하도록 요구하고 고객 제공 암호화 키의 사용을 제한할 수 있습니다.

사용 가능한 암호화 방법에 관한 자세한 내용은 데이터 암호화 옵션을 참고하세요.

Cloud Storage는 객체 업로드, 객체 복사, 객체 구성, 소프트 삭제 객체 복원 등 새 객체를 만드는 모든 작업에 암호화 구성을 적용합니다.

시작하기 전에

버킷의 암호화 시행을 구성하는 데 필요한 권한을 얻으려면 관리자에게 버킷에 대한 스토리지 관리자 (roles/storage.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 버킷의 암호화 시행을 구성하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

버킷의 암호화 시행을 구성하려면 다음 권한이 필요합니다.

  • 새 버킷을 만들 때 구성을 설정합니다. storage.buckets.create
  • 기존 버킷의 구성을 업데이트합니다. storage.buckets.update

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

암호화 유형을 적용하는 버킷 만들기

새 버킷을 만들 때 버킷의 객체에 허용되거나 제한되는 암호화 방법을 지정할 수 있습니다.

버킷에 기본 Cloud KMS 키를 설정하는 경우 CMEK 또는 고객 제공 암호화 키를 사용한 암호화도 허용해야 합니다.

gcloud

  1. 다음 정보를 포함하는 JSON 파일을 만듭니다.

    {
      "gmekEnforcement": {"restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"},
      "cmekEnforcement": {"restrictionMode": "CMEK_RESTRICTION_MODE"},
      "csekEnforcement": {"restrictionMode": "CSEK_RESTRICTION_MODE"}
    }

    다음을 바꿉니다.

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.

  2. gcloud storage buckets create 명령어를 --encryption-enforcement-file 플래그와 함께 사용합니다.

    gcloud storage buckets create gs://BUCKET_NAME \
      --encryption-enforcement-file=ENCRYPTION_ENFORCEMENT_FILE

    다음을 바꿉니다.

    • BUCKET_NAME: 버킷의 이름입니다.
    • ENCRYPTION_ENFORCEMENT_FILE: 이전 단계에서 만든 JSON 파일의 경로

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 버킷의 설정이 포함된 JSON 파일을 만듭니다. 전체 설정 목록은 Buckets: Insert 문서를 참고하세요. 다음 설정은 버킷 이름과 암호화만 정의합니다.

    {
      "name": "BUCKET_NAME",
      "encryption": {
        "googleManagedEncryptionEnforcementConfig": {
          "restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"
        },
        "customerManagedEncryptionEnforcementConfig": {
          "restrictionMode": "CMEK_RESTRICTION_MODE"
        },
        "customerSuppliedEncryptionEnforcementConfig": {
          "restrictionMode": "CSEK_RESTRICTION_MODE"
        }
      }
    }

    다음을 바꿉니다.

    • BUCKET_NAME: 버킷의 이름입니다.
    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.

  3. cURL을 사용하여 POST 버킷 요청으로 JSON API를 호출합니다.

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b?project=PROJECT_ID"

    다음을 바꿉니다.

    • JSON_FILE_NAME: 이전 단계에서 만든 JSON 파일의 경로
    • PROJECT_ID: 버킷의 프로젝트 ID 또는 번호입니다.

XML API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 버킷의 설정이 포함된 XML 파일을 만듭니다. 전체 설정 목록은 XML: 버킷 만들기 문서를 참고하세요. 다음 설정은 암호화 시행만 정의합니다.

    <CreateBucketConfiguration>
      <EncryptionConfiguration>
        <GoogleManagedEncryptionEnforcement>
          <RestrictionMode>STANDARD_ENCRYPTION_RESTRICTION_MODE</RestrictionMode>
        </GoogleManagedEncryptionEnforcement>
        <CustomerManagedEncryptionEnforcement>
          <RestrictionMode>CMEK_RESTRICTION_MODE</RestrictionMode>
        </CustomerManagedEncryptionEnforcement>
        <CustomerSuppliedEncryptionEnforcement>
          <RestrictionMode>CSEK_RESTRICTION_MODE</RestrictionMode>
        </CustomerSuppliedEncryptionEnforcement>
      </EncryptionConfiguration>
    </CreateBucketConfiguration>

    다음을 바꿉니다.

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.

  3. cURL을 사용하여 PUT 버킷 요청으로 XML API를 호출합니다.

    curl -X PUT --data-binary @XML_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "x-goog-project-id: PROJECT_ID" \
      "https://storage.s3nsapis.fr/BUCKET_NAME"

    다음을 바꿉니다.

    • XML_FILE_NAME: 이전 단계에서 만든 XML 파일의 경로입니다.
    • PROJECT_ID: 버킷의 프로젝트 ID 또는 번호입니다.
    • BUCKET_NAME: 버킷의 이름입니다.

버킷에 허용되는 암호화 유형 업데이트

기존 버킷의 새 객체에 허용되는 암호화 방법을 업데이트하려면 다음 단계를 완료하세요.

버킷에 기본 KMS 키가 설정되어 있으면 새 객체가 생성되지 않으므로 CMEK와 고객 제공 암호화 키를 모두 제한할 수 없습니다. 이러한 버킷에서 CMEK 또는 CSEK를 허용하거나 버킷에서 기본 Cloud KMS 키를 삭제하세요.

gcloud

  1. 다음 정보를 포함하는 JSON 파일을 만듭니다.

    {
      "gmekEnforcement": {"restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"},
      "cmekEnforcement": {"restrictionMode": "CMEK_RESTRICTION_MODE"},
      "csekEnforcement": {"restrictionMode": "CSEK_RESTRICTION_MODE"}
    }

    다음을 바꿉니다.

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다. 암호화 유형을 생략하면 기존 구성이 유지됩니다.

  2. gcloud storage buckets update 명령어를 --encryption-enforcement-file 플래그와 함께 사용합니다.

    gcloud storage buckets update gs://BUCKET_NAME \
      --encryption-enforcement-file=ENCRYPTION_ENFORCEMENT_FILE

    다음을 바꿉니다.

    • BUCKET_NAME: 버킷의 이름입니다.
    • ENCRYPTION_ENFORCEMENT_FILE: 이전 단계에서 만든 JSON 파일의 경로

    업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 다음 정보를 포함하는 JSON 파일을 만듭니다.

    {
      "encryption": {
        "googleManagedEncryptionEnforcementConfig": {
          "restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"
        },
        "customerManagedEncryptionEnforcementConfig": {
          "restrictionMode": "CMEK_RESTRICTION_MODE"
        },
        "customerSuppliedEncryptionEnforcementConfig": {
          "restrictionMode": "CSEK_RESTRICTION_MODE"
        }
      }
    }

    다음을 바꿉니다.

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다. 암호화 유형을 생략하면 기존 구성이 유지됩니다.

  3. cURL을 사용하여 PATCH 버킷 요청으로 JSON API를 호출합니다.

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME?fields=encryption"

    다음을 바꿉니다.

    • JSON_FILE_NAME: 이전 단계에서 만든 JSON 파일의 경로
    • BUCKET_NAME: 버킷의 이름입니다.

    업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.

XML API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 버킷의 암호화 설정이 포함된 XML 파일을 만듭니다. 다음 설정은 암호화 시행 구성만 정의합니다.

    <EncryptionConfiguration>
      <GoogleManagedEncryptionEnforcement>
        <RestrictionMode>STANDARD_ENCRYPTION_RESTRICTION_MODE</RestrictionMode>
      </GoogleManagedEncryptionEnforcement>
      <CustomerManagedEncryptionEnforcement>
        <RestrictionMode>CMEK_RESTRICTION_MODE</RestrictionMode>
      </CustomerManagedEncryptionEnforcement>
      <CustomerSuppliedEncryptionEnforcement>
        <RestrictionMode>CSEK_RESTRICTION_MODE</RestrictionMode>
      </CustomerSuppliedEncryptionEnforcement>
    </EncryptionConfiguration>

    다음을 바꿉니다.

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
    • CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.
      • NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
    • CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.
      • NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.
      • FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.

    하나 이상의 암호화 유형을 허용해야 합니다.

  3. cURL을 사용하여 범위가 ?encryptionConfigPUT 버킷 요청으로 XML API를 호출합니다.

    curl -X PUT --data-binary @XML_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.s3nsapis.fr/BUCKET_NAME?encryptionConfig"

    다음을 바꿉니다.

    • XML_FILE_NAME: 이전 단계에서 만든 XML 파일의 경로입니다.
    • BUCKET_NAME: 버킷의 이름입니다.

    업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.

버킷의 암호화 설정 보기

버킷에 허용되는 암호화 방법을 확인하는 단계는 버킷 메타데이터 가져오기를 참고하세요.

다음 단계