Mengenkripsi ulang objek yang melanggar aturan enkripsi yang diterapkan

Halaman ini menjelaskan cara menggunakan Storage Intelligence advisor untuk mengidentifikasi dan mengenkripsi ulang objek yang melanggar konfigurasi penerapan enkripsi pada bucket-nya.

Saat Anda menerapkan atau membatasi jenis enkripsi untuk bucket, Cloud Storage akan menerapkan konfigurasi tersebut untuk semua objek baru atau yang ditulis ulang dalam bucket. Namun, Cloud Storage tidak otomatis mengenkripsi ulang objek yang ada yang Anda upload sebelum konfigurasi diterapkan. Objek tersebut tetap dienkripsi dengan metode enkripsi aslinya. Untuk mengetahui informasi selengkapnya tentang metode enkripsi yang tersedia, lihat Opsi enkripsi data.

Advisor Storage Intelligence menampilkan temuan Objects violate enforced encryption rules saat bucket berisi objek yang menggunakan metode enkripsi yang dibatasi. Temuan adalah anomali atau kesenjangan konfigurasi keamanan yang terdeteksi dari metrik dan metadata objek Anda yang memerlukan perhatian Anda. Untuk mengetahui ringkasan advisor Storage Intelligence, lihat Tentang advisor Storage Intelligence. Untuk mengetahui daftar lengkap temuan, lihat Katalog referensi temuan.

Nilai minimum yang memicu temuan

Saat Anda mengaktifkan Storage Intelligence, Cloud Storage otomatis mengevaluasi metadata enkripsi level objek terhadap konfigurasi penerapan enkripsi level bucket di seluruh project, folder, atau organisasi Anda. Storage Intelligence advisor menghasilkan temuan saat bucket memenuhi kedua kriteria berikut:

  • Bucket membatasi satu atau beberapa metode enkripsi dalam konfigurasi enforcedEncryptionAllowedTypes, seperti enkripsi standar (enkripsi default Google, atau GMEK), kunci enkripsi yang dikelola pelanggan (CMEK), atau kunci enkripsi yang disediakan pelanggan (CSEK).
  • Bucket berisi setidaknya satu objek dengan kolom metadata encryptionType tidak ada dalam daftar enforcedEncryptionAllowedTypes bucket.

Temuan dasar pengukuran awal akan muncul dalam waktu 48 jam setelah Anda mengaktifkan Storage Intelligence dan diperbarui setiap 24 jam. Untuk mengurangi volume pemberitahuan, advisor Storage Intelligence menggabungkan pelanggaran tingkat objek berdasarkan bucket di dasbor Anda. Anda dapat mengkueri metadata enkripsi tingkat objek di set data Insight Penyimpanan.

Merespons temuan

Untuk merespons temuan, identifikasi objek yang terpengaruh di setiap bucket dan tulis ulang objek yang tidak sesuai dengan metode enkripsi yang diizinkan:

  1. Lihat detail temuan untuk mengidentifikasi bucket yang terpengaruh dan jenis enkripsi yang diizinkan (CMEK, GMEK, atau CSEK).

  2. Opsional: Untuk mencantumkan objek dalam bucket yang terpengaruh yang melanggar konfigurasi enkripsi yang diterapkan, buat kueri set data Insight Penyimpanan Anda di BigQuery. Jika Anda belum mengonfigurasi set data tertaut, lihat Mengonfigurasi set data Insight Penyimpanan.

    SELECT
      bucket,
      name,
      encryptionType
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType NOT IN (ALLOWED_ENCRYPTION_TYPES)
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

    Ganti kode berikut:

    • DATASET_NAME: nama set data tertaut Insight Penyimpanan Anda di BigQuery.
    • BUCKET_NAME: nama bucket yang terpengaruh.
    • ALLOWED_ENCRYPTION_TYPES: daftar yang dipisahkan koma dari jenis enkripsi yang diizinkan bucket, seperti 'CMEK' atau 'CMEK', 'GMEK'.
  3. Gunakan tabel berikut untuk memilih metode enkripsi ulang untuk objek aktif Anda:

    Skenario Tindakan yang disarankan Detail
    Bucket mengizinkan kunci enkripsi yang dikelola pelanggan (CMEK) Mengenkripsi ulang objek dengan CMEK Untuk objek GMEK aktif, ekspor file manifes CSV dari BigQuery dan jalankan tugas Storage batch operations untuk menulis ulang objek dengan kunci Cloud KMS. Untuk objek yang dienkripsi CSEK, jalankan perintah gcloud storage objects update.
    Bucket mengizinkan enkripsi standar (GMEK) Mengenkripsi ulang objek dengan enkripsi standar (GMEK) Pastikan bucket tidak memiliki kunci Cloud KMS default, lalu gunakan perintah gcloud storage objects update dengan flag --clear-encryption-key untuk menulis ulang objek yang terpengaruh dengan enkripsi standar.
    Bucket hanya mengizinkan kunci enkripsi yang disediakan pelanggan (CSEK) Mengenkripsi ulang objek dengan CSEK Gunakan perintah gcloud storage objects update dengan flag --encryption-key untuk menulis ulang objek yang terpengaruh dengan kunci enkripsi AES-256 Anda.

    Setelah Anda mengenkripsi ulang semua objek yang tidak sesuai dalam bucket, temuan akan dihapus untuk bucket tersebut selama siklus refresh 24 jam berikutnya. Namun, temuan tetap aktif dalam kasus berikut hingga Anda atau Cloud Storage menghapus permanen versi objek yang dipertahankan:

Mengenkripsi ulang objek dengan CMEK

Jika bucket mengizinkan kunci enkripsi yang dikelola pelanggan (CMEK), enkripsi ulang objek yang terpengaruh berdasarkan metode enkripsi saat ini.

Mengenkripsi ulang objek yang dienkripsi GMEK dalam skala besar menggunakan Storage batch operations

Untuk mengenkripsi ulang objek yang dienkripsi GMEK dengan CMEK dalam skala besar, ekspor file manifes CSV dari BigQuery dan jalankan tugas Storage batch operations:

  1. Jalankan kueri EXPORT DATA berikut di BigQuery untuk membuat manifes CSV menggunakan set data Insight Penyimpanan untuk objek aktif yang terpengaruh yang menggunakan enkripsi standar (GMEK):

    EXPORT DATA OPTIONS(
      uri='gs://DESTINATION_BUCKET/manifests/objects_violating_enforced_policies_*.csv',
      format='CSV',
      overwrite=true,
      header=true
    ) AS
    SELECT
      bucket,
      name
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType = 'GMEK'
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

    Ganti kode berikut:

    • DESTINATION_BUCKET: nama bucket Cloud Storage tempat Anda ingin menyimpan file manifes CSV yang diekspor.
    • DATASET_NAME: nama set data tertaut Insight Penyimpanan Anda di BigQuery.
    • BUCKET_NAME: nama bucket yang terpengaruh.
  2. Selesaikan Prasyarat Storage batch operations, dan minta administrator Anda untuk memberikan peran Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci Cloud KMS ke kedua agen layanan berikut:

    • Agen layanan Storage batch operations (service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com)
    • Agen layanan Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

    Ganti PROJECT_NUMBER dengan nomor project dari project yang berisi bucket.

  3. Jalankan perintah gcloud storage batch-operations jobs create untuk membuat tugas Storage batch operations menggunakan file manifes dan menulis ulang objek dengan kunci Cloud KMS Anda. Untuk memverifikasi konfigurasi tugas sebelum mengubah objek, sertakan flag --dry-run:

    gcloud storage batch-operations jobs create JOB_NAME \
      --bucket="BUCKET_NAME" \
      --manifest-location="gs://DESTINATION_BUCKET/manifests/objects_violating_enforced_policies_*.csv" \
      --rewrite-object="kms-key=KMS_KEY"

    Ganti kode berikut:

    • JOB_NAME: ID unik untuk tugas batch, seperti re-encrypt-objects-job.
    • BUCKET_NAME: nama bucket yang terpengaruh.
    • DESTINATION_BUCKET: nama bucket yang berisi file manifes yang diekspor.
    • KMS_KEY: nama resource kunci Cloud KMS yang ingin Anda gunakan untuk mengenkripsi objek. Kunci harus berada di lokasi yang sama dengan bucket dan menggunakan format projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

Mengenkripsi ulang objek yang dienkripsi CSEK menggunakan Google Cloud CLI

Karena Google Cloud tidak menyimpan kunci enkripsi yang disediakan pelanggan (CSEK), Storage batch operations tidak dapat mendekripsi objek yang dienkripsi CSEK. Untuk mengenkripsi ulang objek yang dienkripsi CSEK dengan CMEK, jalankan perintah gcloud storage objects update dengan flag --decryption-keys dan --encryption-key:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
  --decryption-keys=DECRYPTION_KEY \
  --encryption-key=KMS_KEY

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang terpengaruh.
  • OBJECT_NAME: nama objek yang dienkripsi CSEK yang ingin Anda enkripsi ulang. Untuk memperbarui beberapa objek dalam satu perintah, gunakan karakter pengganti URI atau flag --read-paths-from-stdin (-I).
  • DECRYPTION_KEY: kunci AES-256 berenkode base64 RFC 4648 yang mengenkripsi objek.
  • KMS_KEY: nama resource kunci Cloud KMS yang ingin Anda gunakan untuk mengenkripsi objek, dalam format projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

Mengenkripsi ulang objek dengan enkripsi standar (GMEK)

Untuk mengenkripsi ulang objek dengan enkripsi standar (enkripsi default Google, atau GMEK), pastikan bucket tidak memiliki kunci Cloud KMS default dan hapus kunci enkripsi kustom pada setiap objek yang terpengaruh:

  1. Pastikan bucket tidak memiliki kunci Cloud KMS default. Saat Anda menghapus kunci enkripsi kustom objek, Cloud Storage akan mengenkripsi objek dengan enkripsi standar (GMEK) hanya jika bucket tidak memiliki kunci Cloud KMS default. Jika bucket memiliki kunci Cloud KMS default, Cloud Storage akan mengenkripsi objek dengan kunci tersebut. Jika bucket juga membatasi CMEK, penulisan ulang akan gagal.

    Untuk menghapus kunci Cloud KMS default dari bucket, jalankan perintah gcloud storage buckets update dengan flag --clear-default-encryption-key:

    gcloud storage buckets update gs://BUCKET_NAME \
      --clear-default-encryption-key

    Ganti BUCKET_NAME dengan nama bucket yang terpengaruh.

  2. Gunakan perintah gcloud storage objects update dengan flag --clear-encryption-key untuk menulis ulang objek yang terpengaruh dengan enkripsi standar. Jika objek dienkripsi dengan kunci enkripsi yang disediakan pelanggan (CSEK), sertakan juga flag --decryption-keys:

    gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
      --clear-encryption-key \
      [--decryption-keys=DECRYPTION_KEY]

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket yang terpengaruh.
    • OBJECT_NAME: nama objek yang ingin Anda enkripsi ulang. Untuk memperbarui beberapa objek dalam satu perintah, gunakan karakter pengganti URI (seperti gs://BUCKET_NAME/**) atau flag --read-paths-from-stdin (-I).
    • DECRYPTION_KEY: jika objek dienkripsi dengan CSEK, kunci AES-256 berenkode base64 RFC 4648 yang mengenkripsi objek. Jika objek dienkripsi dengan CMEK, hapus flag --decryption-keys.

Mengenkripsi ulang objek dengan CSEK

Jika bucket hanya mengizinkan kunci enkripsi yang disediakan pelanggan (CSEK), gunakan perintah gcloud storage objects update dengan flag --encryption-key untuk menulis ulang objek yang terpengaruh dengan kunci enkripsi AES-256 Anda. Jika objek dienkripsi dengan CSEK yang berbeda, sertakan juga flag --decryption-keys:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
  --encryption-key=YOUR_ENCRYPTION_KEY \
  [--decryption-keys=DECRYPTION_KEY]

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang terpengaruh.
  • OBJECT_NAME: nama objek yang ingin Anda enkripsi ulang. Untuk memperbarui beberapa objek dalam satu perintah, gunakan karakter pengganti URI atau flag --read-paths-from-stdin (-I).
  • YOUR_ENCRYPTION_KEY: string kunci enkripsi AES-256 berenkode base64 RFC 4648 Anda.
  • DECRYPTION_KEY: jika objek dienkripsi dengan CSEK yang berbeda, kunci AES-256 berenkode base64 RFC 4648 yang mengenkripsi objek. Jika objek dienkripsi dengan GMEK atau CMEK, hapus flag --decryption-keys.

Langkah berikutnya