Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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. Anda tidak dapat mengaktifkan CMEK untuk lingkungan yang ada.
Cloud Composer mendukung enkripsi CMEK menggunakan kunci yang disimpan di External Key Manager.
Anda harus membuat kunci CMEK di region yang sama dengan tempat lingkungan Anda berada. 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.
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 dalam database Monitoring dalam bentuk terenkripsi menggunakan kunci milik dan dikelola Google.
Cloud Composer menyimpan informasi berikut yang dilindungi dengan kunci milik dan 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 ke agen layanan saat menentukan kunci untuk lingkungan Anda.
gcloud
Agen layanan berikut harus memiliki peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS pada kunci yang Anda gunakan untuk lingkungan Anda.
Ganti PROJECT_NUMBER
dengan nomor project Anda.
Nama agen layanan | Email akun layanan | Nama layanan API |
---|---|---|
Cloud Composer Service Agent | service-PROJECT_NUMBER@cloudcomposer-accounts. | composer.googleapis.com |
Agen Layanan Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry. | artifactregistry.googleapis.com |
Kubernetes Engine Service Agent | service-PROJECT_NUMBER@container-engine-robot. | container.googleapis.com |
Pub/Sub Service Agent | service-PROJECT_NUMBER@gcp-sa-pubsub. | pubsub.googleapis.com |
Agen Layanan Compute Engine | service-PROJECT_NUMBER@compute-system. | compute.googleapis.com |
Cloud Storage Service Agent | service-PROJECT_NUMBER@gs-project-accounts. | Memberikan izin enkripsi/dekripsi dengan gcloud storage service-agent --authorize-cmek |
(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.
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. \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan peran ke Agen Layanan Artifact Registry:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-artifactregistry. \ --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. \ --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. \ --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. \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Berikan izin enkripsi/dekripsi ke Agen Layanan Cloud Storage.
gcloud storage service-agent \ --authorize-cmek=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. Lokasi ini harus sama dengan lokasi lingkungan Anda.KEY_NAME
dengan nama kunci yang dikelola pelanggan.KEY_RING_NAME
dengan ring kunci yang menyimpan kunci yang dikelola pelanggan.
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:
Luaskan bagian Jaringan, penggantian konfigurasi Airflow, dan fitur tambahan. Di bagian Data encryption, pilih Customer-managed encryption key (CMEK).
Di menu drop-down Pilih kunci yang dikelola pelanggan, pilih kunci Anda.
Jika diperlukan penyiapan tambahan, pesan akan muncul untuk memberi tahu Anda. Dalam hal ini:
Klik Buka wizard.
Di dialog Menyiapkan kunci CMEK untuk digunakan di Cloud Composer, lihat daftar agen layanan yang harus memiliki peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS pada kunci.
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 berbeda dengan project ID 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.KEY_RING_NAME
dengan ring kunci yang menyimpan kunci yang dikelola pelanggan.
Contoh:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--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.
Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.
Buka tab Konfigurasi lingkungan.
Detail tentang enkripsi tercantum dalam 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 log Anda berisi data sensitif, sebaiknya arahkan log Cloud Composer ke bucket Cloud Storage yang dienkripsi CMEK menggunakan Log Router. Tindakan ini mencegah log Anda dikirim ke Monitoring.
Jika memerlukan dukungan dari Cloud Customer Care, Anda mungkin perlu memberikan akses ke log Cloud Composer yang disimpan di Cloud Storage kepada engineer dukungan Google.
gcloud
Buat bucket Cloud Storage baru untuk menyimpan log.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
Ganti:
LOCATION
dengan region tempat lingkungan berada.BUCKET_NAME
dengan nama untuk bucket.
Contoh:
gcloud storage buckets create gs://composer-logs-us-central1-example-environment --location=us-central1
Enkripsi bucket dengan kunci CMEK Anda.
gcloud storage buckets update gs://BUCKET_NAME \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ganti:
KEY_PROJECT_ID
dengan ID project tempat kunci berada. Jika Anda menggunakan kunci dari project lain, nilai ini 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 ring kunci yang menyimpan kunci yang dikelola pelanggan.KEY_NAME
dengan nama kunci yang dikelola pelanggan.BUCKET_NAME
dengan nama bucket.
Contoh:
gcloud storage buckets update gs://composer-logs-us-central1-example-environment \ --default-encryption-key=projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Buat log sink 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 di langkah sebelumnya.
Contoh:
gcloud projects add-iam-policy-binding \ example-project \ --member="serviceAccount:example-sa@gcp-sa-logging." \ --role="roles/storage.objectCreator" \ --condition=None
Kecualikan log untuk lingkungan baru Anda dari Pemantauan.
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 Log Router.
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 berbeda dengan ID project Anda. Jika Anda menggunakan kunci dari project yang sama, nilai ini adalah ID project Anda.KEY_RING_NAME
dengan ring kunci yang menyimpan kunci yang dikelola pelanggan.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.
Rotasi kunci CMEK untuk Cloud Composer
Setelah mengonfigurasi enkripsi di lingkungan menggunakan kunci CMEK, Anda juga dapat 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 otomatis dienkripsi ulang dengan versi kunci baru. Untuk mengetahui informasi selengkapnya, lihat Mengenkripsi ulang data.
Secara khusus, hal ini berlaku untuk:
- Objek yang disimpan di bucket lingkungan.
- Cata yang disimpan di database Airflow.
- Image container yang disimpan di repositori Artifact Registry.
- Semua objek data lainnya yang dienkripsi dengan CMEK di lingkungan Cloud Composer.