Menerapkan atau membatasi jenis enkripsi untuk bucket

Dokumen ini menjelaskan cara mengonfigurasi metode enkripsi yang diizinkan atau dibatasi untuk objek baru dalam bucket Cloud Storage. Anda dapat mengonfigurasi bucket untuk menerapkan atau membatasi penggunaan enkripsi standar (enkripsi default Google), kunci enkripsi yang dikelola pelanggan (CMEK), atau kunci enkripsi yang disediakan pelanggan (CSEK) untuk setiap objek baru yang dibuat dalam bucket.

Misalnya, untuk membantu melindungi dari serangan ransomware, Anda dapat mewajibkan semua objek baru dienkripsi dengan enkripsi standar atau CMEK, dan membatasi penggunaan kunci enkripsi yang disediakan pelanggan.

Untuk mengetahui informasi selengkapnya tentang metode enkripsi yang tersedia, lihat Opsi enkripsi data.

Cloud Storage menerapkan konfigurasi enkripsi untuk semua tindakan yang membuat objek baru, seperti mengupload objek, menyalin objek, menggabungkan objek, dan memulihkan objek yang dihapus sementara.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan guna mengonfigurasi penerapan enkripsi untuk bucket, minta administrator Anda untuk memberi Anda peran IAM Storage Admin (roles/storage.admin) di bucket. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengonfigurasi penerapan enkripsi untuk bucket. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengonfigurasi penerapan enkripsi untuk bucket:

  • Tetapkan konfigurasi saat membuat bucket baru: storage.buckets.create
  • Perbarui konfigurasi untuk bucket yang ada: storage.buckets.update

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat bucket yang menerapkan jenis enkripsi

Anda dapat menentukan metode enkripsi yang diizinkan atau dibatasi untuk objek dalam bucket saat membuat bucket baru.

Jika Anda menetapkan kunci Cloud KMS default untuk bucket, Anda juga harus mengizinkan enkripsi menggunakan CMEK atau kunci enkripsi yang disediakan pelanggan.

gcloud

  1. Buat file JSON yang berisi informasi berikut:

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

    Ganti kode berikut:

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi. Jika Anda menghilangkan konfigurasi penerapan untuk jenis enkripsi tertentu, jenis enkripsi tersebut akan diizinkan secara default.

  2. Gunakan perintah gcloud storage buckets create dengan flag --encryption-enforcement-file:

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

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket.
    • ENCRYPTION_ENFORCEMENT_FILE: jalur ke file JSON yang Anda buat di langkah sebelumnya.

REST API

JSON API

  1. Instal dan lakukan inisialisasigcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk bucket. Untuk mengetahui daftar lengkap setelan, lihat dokumentasi Buckets: Insert. Setelan berikut hanya menentukan nama bucket dan enkripsi:

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

    Ganti kode berikut:

    • BUCKET_NAME: Nama bucket.
    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi. Jika Anda menghilangkan konfigurasi penerapan untuk jenis enkripsi tertentu, jenis enkripsi tersebut akan diizinkan secara default.

  3. Gunakan cURL untuk memanggil JSON API dengan permintaan Bucket POST:

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

    Ganti kode berikut:

    • JSON_FILE_NAME: jalur ke file JSON yang Anda buat di langkah sebelumnya.
    • PROJECT_ID: ID atau nomor project untuk bucket Anda.

XML API

  1. Instal dan lakukan inisialisasigcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file XML yang berisi setelan untuk bucket. Untuk mengetahui daftar lengkap setelan, lihat dokumentasi XML: Membuat bucket. Setelan berikut hanya menentukan penerapan enkripsi:

    <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>

    Ganti kode berikut:

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi. Jika Anda menghilangkan konfigurasi penerapan untuk jenis enkripsi tertentu, jenis enkripsi tersebut akan diizinkan secara default.

  3. Gunakan cURL untuk memanggil XML API dengan permintaan Bucket PUT:

    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.googleapis.com/BUCKET_NAME"

    Ganti kode berikut:

    • XML_FILE_NAME: jalur ke file XML yang Anda buat di langkah sebelumnya.
    • PROJECT_ID: ID atau nomor project untuk bucket Anda.
    • BUCKET_NAME: nama bucket.

Memperbarui jenis enkripsi yang diizinkan untuk bucket

Untuk memperbarui metode enkripsi yang diizinkan untuk objek baru di bucket yang ada, selesaikan langkah-langkah berikut.

Jika bucket memiliki setelan kunci KMS default, Anda tidak dapat membatasi kunci enkripsi yang disediakan pelanggan dan CMEK karena tindakan tersebut akan mencegah pembuatan objek baru. Izinkan CMEK atau CSEK di bucket tersebut, atau hapus kunci Cloud KMS default dari bucket.

gcloud

  1. Buat file JSON yang berisi informasi berikut:

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

    Ganti kode berikut:

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi. Jika Anda tidak menentukan jenis enkripsi, konfigurasi yang ada akan dipertahankan.

  2. Gunakan perintah gcloud storage buckets update dengan flag --encryption-enforcement-file:

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

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket.
    • ENCRYPTION_ENFORCEMENT_FILE: jalur ke file JSON yang Anda buat di langkah sebelumnya.

    Mungkin perlu waktu hingga dua menit agar konfigurasi yang diperbarui diterapkan.

REST API

JSON API

  1. Instal dan lakukan inisialisasigcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi informasi berikut:

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

    Ganti kode berikut:

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi. Jika Anda tidak menentukan jenis enkripsi, konfigurasi yang ada akan dipertahankan.

  3. Gunakan cURL untuk memanggil JSON API dengan permintaan Bucket PATCH:

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

    Ganti kode berikut:

    • JSON_FILE_NAME: jalur ke file JSON yang Anda buat di langkah sebelumnya.
    • BUCKET_NAME: nama bucket.

    Mungkin perlu waktu hingga dua menit agar konfigurasi yang diperbarui diterapkan.

XML API

  1. Instal dan lakukan inisialisasigcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file XML yang berisi setelan enkripsi untuk bucket. Setelan berikut hanya menentukan konfigurasi penerapan enkripsi.

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

    Ganti kode berikut:

    • STANDARD_ENCRYPTION_RESTRICTION_MODE: Apakah enkripsi menggunakan enkripsi standar (enkripsi default Google) diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan enkripsi standar.
      • FullyRestricted: objek baru tidak dapat menggunakan enkripsi standar.
    • CMEK_RESTRICTION_MODE: Apakah enkripsi menggunakan CMEK diizinkan saat membuat objek di bucket ini. Nilai berikut didukung:
      • NotRestricted: objek baru dapat menggunakan CMEK.
      • FullyRestricted: objek baru tidak dapat menggunakan CMEK.
    • CSEK_RESTRICTION_MODE: Apakah enkripsi menggunakan kunci enkripsi yang disediakan pelanggan diizinkan saat membuat objek di bucket ini. Nilai berikut ini didukung:
      • NotRestricted: objek baru dapat menggunakan kunci enkripsi yang disediakan pelanggan.
      • FullyRestricted: objek baru tidak dapat menggunakan kunci enkripsi yang disediakan pelanggan.

    Anda harus mengizinkan setidaknya satu jenis enkripsi.

  3. Gunakan cURL untuk memanggil XML API dengan permintaan Bucket PUT yang dicakup ke ?encryptionConfig:

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

    Ganti kode berikut:

    • XML_FILE_NAME: jalur ke file XML yang Anda buat di langkah sebelumnya.
    • BUCKET_NAME: nama bucket.

    Mungkin perlu waktu hingga dua menit agar konfigurasi yang diperbarui diterapkan.

Melihat setelan enkripsi untuk bucket

Untuk mengetahui langkah-langkah melihat metode enkripsi yang diizinkan untuk bucket, lihat Mendapatkan metadata bucket.

Langkah berikutnya