Cloud Composer 1 | Cloud Composer 2
Halaman ini menjelaskan cara menggunakan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) untuk melindungi lingkungan Cloud Composer. Kunci enkripsi yang dikelola pelanggan digunakan untuk mengenkripsi/mendekripsi data pengguna di lingkungan.
Sebelum memulai
Anda hanya dapat mengonfigurasi CMEK saat membuat lingkungan. CMEK tidak dapat diaktifkan untuk lingkungan yang sudah ada.
Cloud Composer mendukung enkripsi CMEK menggunakan kunci yang disimpan di External Key Manager.
Anda harus membuat kunci CMEK di region yang sama dengan lokasi lingkungan Anda. Anda tidak dapat menggunakan kunci multi-regional atau global.
Jika ingin lingkungan Anda berjalan di dalam perimeter Kontrol Layanan VPC, Anda harus menambahkan Cloud Key Management Service API dan Artifact Registry API ke perimeter tersebut.
Aktifkan Artifact Registry API.
Konsol
Aktifkan API Artifact Registry.
gcloud
Aktifkan API Artifact Registry:
gcloud services enable artifactregistry.googleapis.com
Informasi pengguna tidak dilindungi dengan enkripsi CMEK
Cloud Monitoring tidak mendukung enkripsi CMEK. Nama lingkungan dan nama DAG Anda disimpan di database Monitoring dalam bentuk terenkripsi menggunakan kunci enkripsi yang dikelola Google.
Cloud Composer menyimpan informasi berikut yang dilindungi dengan kunci yang dikelola Google, bukan kunci yang dikelola pelanggan:
- Nama lingkungan
- Penggantian konfigurasi Airflow
- Variabel lingkungan
- Deskripsi rentang IP yang diizinkan
- Rentang IP
- Label
- Nama beberapa parameter yang disimpan oleh Cloud Composer dapat menyertakan sub-string nama lingkungan.
Menggunakan kunci enkripsi yang dikelola pelanggan untuk lingkungan Anda
Langkah 1. Membuat kunci enkripsi yang dikelola pelanggan
Ikuti langkah-langkah yang diuraikan dalam Membuat kunci enkripsi simetris untuk membuat kunci di region tempat lingkungan Anda berada.
Langkah 2. Memberikan peran ke agen layanan
Konsol
Lewati langkah ini. Anda memberikan izin kepada agen layanan saat menentukan kunci untuk lingkungan Anda.
gcloud
Agen layanan berikut harus memiliki peran Encrypter/Decrypter Cloud KMS Encrypter pada kunci yang digunakan untuk lingkungan Anda.
Ganti PROJECT_NUMBER
dengan nomor project Anda.
Nama agen layanan | Email akun layanan | Nama layanan API |
---|---|---|
Agen Layanan Cloud Composer | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
Agen Layanan Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com | artifactregistry.googleapis.com |
Kubernetes Engine Service Agent | service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com | container.googleapis.com |
Agen Layanan Pub/Sub | service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com | pubsub.googleapis.com |
Agen Layanan Compute Engine | service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com | compute.googleapis.com |
Agen Layanan Cloud Storage | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | Memberikan izin enkripsi/dekripsi dengan gsutil kms authorize |
(Jika diperlukan) Jika beberapa akun layanan ini tidak ada dalam project Anda, berarti identitas untuk layanan ini belum dibuat. Hal ini dapat terjadi, misalnya, jika Anda belum membuat lingkungan Cloud Composer di project Anda.
Untuk menambahkan akun layanan ini, buat identitas untuk layanan yang tercantum dengan perintah berikut:
gcloud beta services identity create \ --service=API_SERVICE_NAME
Ganti
API_SERVICE_NAME
dengan nama layanan API layanan yang tidak memiliki akun layanan di project Anda.Contoh:
gcloud beta services identity create \ --service=composer.googleapis.com
Berikan izin ke agen layanan:
Berikan peran ke Agen Layanan Cloud Composer:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan peran ke Artifact Registry Service Agent:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan peran ke Agen Layanan GKE:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan peran ke Agen Layanan Pub/Sub:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan peran ke Agen Layanan Compute Engine:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Memberikan izin enkripsi/dekripsi ke Agen Layanan Cloud Storage. Anda dapat melewati langkah ini jika menggunakan bucket lingkungan kustom.
gsutil kms authorize -k \ projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ganti:
PROJECT_ID
dengan ID project Anda.KEY_PROJECT_ID
dengan ID project yang menyimpan kunci yang dikelola pelanggan Anda. Jika Anda menggunakan kunci dari project lain, nilai ini akan berbeda dengan ID project Anda. Jika Anda menggunakan kunci dari project yang sama, nilai ini adalah ID project Anda.PROJECT_NUMBER
dengan nomor project Anda.KEY_LOCATION
dengan lokasi kunci yang dikelola pelanggan Anda. Lokasi ini harus sama dengan lokasi lingkungan Anda.KEY_NAME
dengan nama kunci yang dikelola pelanggan Anda.KEY_RING_NAME
dengan keyring yang menyimpan kunci yang dikelola pelanggan Anda.
Untuk mendapatkan nilai ini, Anda dapat menjalankan perintah
gcloud projects describe
,gcloud kms keyrings list
, dangcloud kms keys describe
.
Langkah 3. Membuat lingkungan dengan CMEK
Setelah membuat kunci enkripsi yang dikelola pelanggan, Anda dapat menggunakannya untuk membuat lingkungan Cloud Composer.
Konsol
Saat Anda membuat lingkungan:
Di bagian Enkripsi data, pilih Kunci enkripsi yang dikelola pelanggan (CMEK).
Pada menu drop-down Select a customer-managed key, pilih kunci Anda.
Jika penyiapan tambahan diperlukan, pesan akan muncul untuk memberi tahu Anda. Dalam hal ini:
Klik Open wizard.
Dalam dialog Prepare CMEK key for usage in Cloud Composer, lihat daftar service agent yang harus memiliki peran Cloud KMS CryptoKey Encrypter/Decrypter pada kunci tersebut.
Untuk memberikan peran dan izin yang diperlukan, klik Berikan.
gcloud
Argumen --kms-key
menentukan kunci enkripsi yang dikelola pelanggan untuk lingkungan Anda.
Untuk mengetahui informasi selengkapnya tentang cara membuat lingkungan, lihat Membuat lingkungan. Misalnya, Anda mungkin ingin menentukan parameter lain untuk lingkungan Anda.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--kms-key projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.IMAGE_VERSION
dengan nama image Cloud Composer.KEY_PROJECT_ID
dengan ID project tempat kunci berada. Jika Anda menggunakan kunci dari project lain, nilai ini akan berbeda dengan ID project Anda. Jika Anda menggunakan kunci dari project yang sama, nilai ini adalah ID project Anda.LOCATION
dengan region tempat lingkungan berada.KEY_LOCATION
dengan lokasi kunci yang dikelola pelanggan Anda. Lokasi ini harus sama dengan lokasi lingkungan Anda.KEY_NAME
dengan nama kunci yang dikelola pelanggan Anda.KEY_RING_NAME
dengan keyring yang menyimpan kunci yang dikelola pelanggan Anda.
Contoh:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.6.6-airflow-2.6.3 \
--kms-key projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Melihat konfigurasi enkripsi lingkungan
Anda dapat melihat konfigurasi enkripsi untuk lingkungan yang ada:
Konsol
Di konsol Google Cloud, buka halaman Environments.
Pada daftar lingkungan, klik nama lingkungan Anda. Halaman Detail lingkungan akan terbuka.
Buka tab Konfigurasi lingkungan.
Detail tentang enkripsi tercantum di item Kunci enkripsi data.
gcloud
Jalankan perintah gcloud
berikut untuk melihat konfigurasi enkripsi
gcloud composer environments describe \
ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.encryptionConfig)"
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.LOCATION
dengan region tempat lingkungan berada.
Contoh:
gcloud composer environments describe \
example-environment \
--location us-central1 \
--format="value(config.encryptionConfig)"
Menggunakan CMEK untuk log Cloud Composer
Cloud Logging mendukung enkripsi penyimpanan Log dengan kunci CMEK. Sebaiknya gunakan prosedur CMEK standar untuk mengenkripsi log dengan kunci CMEK.
Untuk mengenkripsi log dengan kunci CMEK, ikuti petunjuk yang diuraikan dalam Mengelola kunci yang melindungi data penyimpanan Logging.
Mengalihkan log Cloud Composer ke bucket Cloud Storage yang dienkripsi CMEK
Jika memperkirakan log berisi data sensitif, Anda dapat mengalihkan log Cloud Composer ke bucket Cloud Storage yang dienkripsi CMEK menggunakan Router Log. Tindakan ini akan mencegah log Anda dikirim ke Monitoring.
Jika memerlukan dukungan dari Cloud Customer Care, Anda mungkin perlu memberi engineer dukungan Google akses ke log Cloud Composer yang disimpan di Cloud Storage.
gcloud
Membuat bucket Cloud Storage baru untuk menyimpan log.
gsutil mb -l LOCATION gs://BUCKET_NAME
Ganti:
LOCATION
dengan region tempat lingkungan berada.BUCKET_NAME
dengan nama untuk bucket.
Contoh:
gsutil mb -l us-central1 gs://composer-logs-us-central1-example-environment
Enkripsi bucket dengan kunci CMEK Anda.
gsutil kms encryption \ -k projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME \ gs://BUCKET_NAME
Ganti:
KEY_PROJECT_ID
dengan ID project tempat kunci berada. Jika Anda menggunakan kunci dari project lain, nilai ini akan berbeda dengan ID project Anda. Jika Anda menggunakan kunci dari project yang sama, nilai ini adalah ID project Anda.KEY_LOCATION
dengan lokasi kunci yang dikelola pelanggan Anda. Lokasi ini harus sama dengan lokasi lingkungan Anda.KEY_RING_NAME
dengan keyring yang menyimpan kunci yang dikelola pelanggan Anda.KEY_NAME
dengan nama kunci yang dikelola pelanggan Anda.BUCKET_NAME
dengan nama bucket.
Contoh:
gsutil kms encryption \ -k projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key \ gs://composer-logs-us-central1-example-environment
Buat sink log baru.
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.LOCATION
dengan region tempat lingkungan berada.BUCKET_NAME
dengan nama bucket.
Contoh:
gcloud logging sinks create \ composer-log-sink-example-environment \ storage.googleapis.com/composer-logs-us-central1-example-environment \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Berikan peran Storage Object Creator ke akun layanan untuk bucket ini. Akun layanan ditampilkan dalam hasil perintah sebelumnya).
gcloud projects add-iam-policy-binding \ PROJECT_ID \ --member="serviceAccount:LOGGING_SERVICE_AGENT" \ --role="roles/storage.objectCreator" \ --condition=None
Ganti:
PROJECT_ID
dengan Project ID.LOGGING_SERVICE_AGENT
dengan akun agen layanan Logging untuk bucket ini. Nama akun ini diperoleh pada langkah sebelumnya.
Contoh:
gcloud projects add-iam-policy-binding \ example-project \ --member="serviceAccount:example-sa@gcp-sa-logging.iam.gserviceaccount.com" \ --role="roles/storage.objectCreator" \ --condition=None
Kecualikan log untuk lingkungan baru Anda dari Monitoring.
gcloud beta logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.LOCATION
dengan region tempat lingkungan berada.
Contoh:
gcloud beta logging sinks update _Default \ --add-exclusion name=example-environment-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Menambahkan enkripsi CMEK tingkat organisasi ke Router Log.
gcloud logging cmek-settings describe \ --organization=ORGANIZATION_ID
gcloud kms keys add-iam-policy-binding \ --project=KEY_PROJECT_ID \ --member LOGGING_SERVICE_AGENT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KEY_LOCATION \ --keyring=KEY_RING_NAME \ KEY_NAME
gcloud logging cmek-settings update \ --organization=ORGANIZATION_ID \ --kms-project=KEY_PROJECT_ID \ --kms-keyring=KEY_RING_NAME \ --kms-location=KEY_LOCATION \ --kms-key-name=KEY_NAME
Ganti:
ORGANIZATION_ID
dengan ID organisasi Anda.KEY_PROJECT_ID
dengan ID project tempat kunci berada. Jika Anda menggunakan kunci dari project lain, nilai ini akan berbeda dengan ID project Anda. Jika Anda menggunakan kunci dari project yang sama, nilai ini adalah ID project Anda.KEY_RING_NAME
dengan keyring yang menyimpan kunci yang dikelola pelanggan Anda.KEY_LOCATION
dengan lokasi kunci yang dikelola pelanggan Anda. Lokasi ini harus sama dengan lokasi lingkungan Anda.KEY_NAME
dengan nama kunci yang dikelola pelanggan Anda.
Rotasi kunci CMEK untuk Cloud Composer
Setelah mengonfigurasi enkripsi di lingkungan menggunakan kunci CMEK, Anda juga harus mempertimbangkan untuk merotasi kunci ini secara berkala seperti yang dijelaskan dalam dokumentasi KMS.
Saat Anda merotasi kunci CMEK, data yang dienkripsi dengan versi kunci sebelumnya tidak secara otomatis akan dienkripsi ulang dengan versi kunci baru. Di sini Anda dapat mempelajari lebih lanjut cara mengenkripsi ulang data. Secara khusus, hal ini berlaku untuk:
objek yang disimpan di bucket lingkungan
data yang tersimpan di Database Metadata Airflow
image container yang disimpan di repositori Artifact Registry
dan semua objek data lainnya yang dienkripsi dengan CMEK dalam lingkungan Cloud Composer.