Dokumen ini menjelaskan cara menemukan dan mengurangi error konfigurasi CMEK umum. Dokumen ini juga menjelaskan cara mengidentifikasi error yang terjadi saat mengonfigurasi setelan resource default untuk Cloud Logging. Setelan tersebut dapat dikonfigurasi untuk organisasi dan folder.
Memecahkan masalah saat menetapkan lokasi untuk bucket log yang dibuat sistem baru
Untuk organisasi atau folder, Anda mencoba memperbarui setelan resource default untuk Cloud Logging. Pembaruan Anda adalah untuk menetapkan atau mengubah setelan lokasi. Namun, perintah gagal dengan error yang mirip dengan berikut ini:
ERROR: (gcloud.logging.settings.update) INVALID_ARGUMENT: The KMS key location must match the storage location. Received KMS key location: us-central1, storage location: us-west1
- '@type': type.googleapis.com/google.rpc.DebugInfo
detail: '[ORIGINAL ERROR] generic::invalid_argument: The KMS key location must match
the storage location. Received KMS key location: us-central1, storage location:
us-west1 [google.rpc.error_details_ext] { message: "The KMS key location must
match the storage location. Received KMS key location: us-central1, storage location:
us-west1" }'
Untuk mengatasi error ini, tetapkan lokasi di setelan resource default sebagai lokasi kunci Cloud Key Management Service.
Memecahkan masalah Kontrol Layanan VPC dan berbagi terbatas domain
Anda mengonfigurasi setelan resource default untuk Cloud Logging agar memiliki setelan CMEK atau Anda membuat bucket log dengan CMEK diaktifkan. Kemudian, Anda mengonfigurasi Kontrol Layanan VPC. Setelah mengonfigurasi Kontrol Layanan VPC, Anda membatasi akses ke Cloud Key Management Service di Kontrol Layanan VPC atau mengaktifkan berbagi terbatas domain.
Setidaknya salah satu hal berikut terjadi:
Anda menerima notifikasi dari Cloud Logging tentang masalah akses CMEK.
Anda melihat bahwa CMEK tidak diaktifkan untuk bucket log
_Defaultdan_Requiredsaat Anda membuat project baru Google Cloud di organisasi atau di folder.Anda menerima error saat membaca dari bucket log dengan CMEK diaktifkan. Error yang Anda lihat mirip dengan error berikut:
ERROR: (gcloud.logging.read) FAILED_PRECONDITION: service account `cmek-PROJECT_ID@gcp-sa-logging.iam.gserviceaccount.com` must have both encrypt and decrypt access to the CMEK KMS key `projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY`Anda menerima error saat membuat atau memperbarui bucket log dengan CMEK diaktifkan. Error yang Anda lihat mirip dengan error berikut:
ERROR: (gcloud.logging.buckets.create) service account `cmek-PROJECT_ID@gcp-sa-logging.iam.gserviceaccount.com` must have both encrypt and decrypt access to the CMEK KMS key `projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY` - '@type': type.googleapis.com/google.rpc.DebugInfo detail: '[ORIGINAL ERROR] generic::permission_denied: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: <var>ERRORID</var>;'
Untuk menentukan apakah masalah ini disebabkan oleh konfigurasi Kontrol Layanan VPC, lakukan hal berikut:
Identifikasi setelan Cloud Logging untuk resource yang berisi konfigurasi CMEK. Resource dapat berupa project, folder, atau organisasi. Jika Anda membuat bucket log dengan CMEK diaktifkan, pilih resource PROJECT.
PROJECT
gcloud logging settings describe --project=PROJECT_ID
Sebelum menjalankan perintah, ganti PROJECT_ID dengan project ID yang berisi bucket log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Sebelum menjalankan perintah, ganti FOLDER_ID dengan ID folder.
ORGANIZATION
gcloud logging settings describe --organization=ORGANIZATION_ID
Sebelum menjalankan perintah, ganti ORGANIZATION_ID dengan ID organisasi.
Perintah sebelumnya menampilkan informasi yang mirip dengan berikut ini:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Untuk organisasi dan folder, kolom berikut juga ditampilkan:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Nilai kolom
kmsKeyNamemencakup thes Google Cloud project yang stores the kunci.Tentukan apakah Anda perlu memigrasikan akun layanan:
Jika nilai kolom
kmsServiceAccountIdmemiliki awalanservice-, Anda tidak perlu memigrasikan akun layanan. Untuk mengetahui informasi tentang error konfigurasi CMEK, lihat bagian Memecahkan masalah CMEK di dokumen ini.Jika nilai
kmsServiceAccountIdmemiliki awalancmek-, lanjutkan ke langkah berikutnya.
Konfirmasi bahwa Anda harus memigrasikan akun layanan dengan menonaktifkan berbagi terbatas domain atau dengan menghapus Cloud Key Management Service dari daftar Kontrol Layanan VPC layanan terbatas.
Jika error teratasi, Anda harus memigrasikan resource yang terpengaruh ke akun layanan baru untuk mengatasi kegagalan. Untuk mengetahui informasi tentang langkah-langkah ini, lihat bagian berikutnya.
Memigrasikan akun layanan CMEK
Proses berikut menjelaskan cara mengubah akun layanan yang digunakan Cloud Logging untuk mengakses kunci Cloud Key Management Service yang dikonfigurasi. Perubahan pada akun layanan mengatasi masalah umum dengan Kontrol Layanan VPC dan berbagi terbatas domain.
Identifikasi
loggingServiceAccountIduntuk resource Anda. Resource dapat berupa project, folder, atau organisasi. Jika Anda membuat bucket log dengan CMEK diaktifkan, pilih resource PROJECT.PROJECT
gcloud logging settings describe --project=PROJECT_ID
Sebelum menjalankan perintah, ganti PROJECT_ID dengan project ID yang berisi bucket log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Sebelum menjalankan perintah, ganti FOLDER_ID dengan ID folder.
ORGANIZATION
gcloud logging settings describe --organization=ORGANIZATION_ID
Sebelum menjalankan perintah, ganti ORGANIZATION_ID dengan ID organisasi.
Perintah sebelumnya menampilkan informasi yang mirip dengan berikut ini:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Untuk organisasi dan folder, kolom berikut juga ditampilkan:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Nilai kolom
kmsKeyNamemencakup thes Google Cloud project yang stores the kunci.Jika, untuk organisasi atau folder, Anda mengonfigurasi setelan resource default untuk Cloud Logging dengan setelan CMEK, lakukan hal berikut:
Di KMS_PROJECT_ID, berikan peran Pengenkripsi/Pendekripsi CryptoKey Cloud Key Management Service ke akun layanan yang diidentifikasi oleh kolom
loggingServiceAccountId.Jalankan perintah curl berikut, yang mengubah akun layanan Cloud Key Management Service yang digunakan oleh resource.
PROJECT
Tidak berlaku.
FOLDER
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/folders/FOLDER_ID/settings?updateMask=kmsServiceAccountIdSebelum menjalankan perintah, lakukan hal berikut:
- Ganti FOLDER_ID dengan ID folder.
- Ganti SERVICE_ACCT_NAME dengan
loggingServiceAccountIdyang diidentifikasi sebelumnya.
ORGANIZATION
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/settings?updateMask=kmsServiceAccountIdSebelum menjalankan perintah, lakukan hal berikut:
- Ganti ORGANIZATION_ID dengan ID organisasi.
- Ganti SERVICE_ACCT_NAME dengan
loggingServiceAccountIdyang diidentifikasi sebelumnya.
Hasil perintah sebelumnya mirip dengan berikut ini:
{ "name": ".../settings", "kmsKeyName": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY", "kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com", "storageLocation": "...", "loggingServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com" }
Untuk setiap Google Cloud project atau folder yang berisi bucket log yang ada dan diaktifkan dengan CMEK, lakukan hal berikut:
Di project atau folder, untuk setiap bucket log yang diaktifkan dengan CMEK, lakukan hal berikut:
Identifikasi the Google Cloud project yang menyimpan kunci Cloud Key Management Service:
PROJECT
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Sebelum menjalankan perintah, lakukan hal berikut:
- Ganti PROJECT_ID dengan project ID yang berisi bucket log.
- Ganti LOCATION dengan lokasi bucket log.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Sebelum menjalankan perintah, lakukan hal berikut:
- Ganti FOLDER_ID dengan ID folder.
- Ganti LOCATION dengan lokasi bucket log.
Hasil perintah sebelumnya mirip dengan berikut ini:
cmekSettings: kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY kmsKeyVersionName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/1 serviceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com createTime: '2022-10-31T12:00:00.0000000Z' lifecycleState: ACTIVE name: projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID retentionDays: 30 createTime: '2022-10-31T13:00:00.0000000Z'
Buka the Google Cloud project yang memiliki kunci Cloud Key Management Service, KMS_PROJECT_ID, dan berikan peran Pengenkripsi/Pendekripsi CryptoKey Cloud Key Management Service ke akun layanan yang diidentifikasi oleh
loggingServiceAccountIdkolom.
Untuk project, jalankan perintah curl berikut, yang mengubah akun layanan Cloud Key Management Service:
PROJECT
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/projects/PROJECT_ID/settings?updateMask=kmsServiceAccountIdSebelum menjalankan perintah, lakukan hal berikut:
- Ganti PROJECT_ID dengan project ID yang berisi bucket log.
- Ganti SERVICE_ACCT_NAME dengan
loggingServiceAccountIdyang diidentifikasi sebelumnya.
FOLDER
Tidak ada tindakan yang diperlukan, karena Anda mengubah akun layanan Cloud Key Management Service yang digunakan oleh folder pada langkah sebelumnya.
Hasil perintah sebelumnya mirip dengan berikut ini:
{ "name": ".../settings", "kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com", "loggingServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com" }
Untuk setiap bucket log dengan CMEK diaktifkan, lakukan hal berikut:
Konfirmasi migrasi. Resource induk untuk bucket log menentukan perintah Google Cloud CLI yang akan dijalankan. Induk dapat berupa project, folder, atau organisasi.
PROJECT
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Sebelum menjalankan perintah, lakukan hal berikut:
- Ganti PROJECT_ID dengan project ID yang berisi bucket log.
- Ganti LOCATION dengan lokasi bucket log.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Sebelum menjalankan perintah, lakukan hal berikut:
- Ganti FOLDER_ID dengan ID folder.
- Ganti LOCATION dengan lokasi bucket log.
Untuk project, hasil perintah sebelumnya mirip dengan berikut ini:
cmekSettings: kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY kmsKeyVersionName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/1 serviceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com createTime: '2022-10-31T12:00:00.0000000Z' lifecycleState: ACTIVE name: projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID retentionDays: 30 createTime: '2022-10-31T13:00:00.0000000Z'
Pastikan
serviceAccountIdcocok denganloggingServiceAccountIdyang diidentifikasi sebelumnya.
Tunggu setidaknya 30 menit sebelum mencabut izin pada akun layanan sebelumnya. Jika Anda mengalami masalah setelah mencabut izin pada akun layanan sebelumnya, pulihkan izin dan hubungi Dukungan Cloud.
Memecahkan masalah CMEK
Saat Anda mengonfigurasi CMEK, the Google Cloud project yang berisi the kunci Cloud KMS akan diberi tahu tentang masalah terkait. Misalnya, pembaruan gagal jika KMS_KEY_NAME tidak valid, jika akun layanan terkait tidak memiliki peran Pengenkripsi/Pendekripsi CryptoKey Cloud Key Management Service yang diperlukan, atau jika akses ke kunci dinonaktifkan.
Setelah Anda mengonfigurasi CMEK, setidaknya salah satu hal berikut terjadi:
Anda menerima notifikasi dari Cloud Logging tentang masalah akses CMEK.
Anda melihat bahwa CMEK tidak diaktifkan untuk bucket log
_Defaultdan_Requiredsaat Anda membuat project baru Google Cloud di organisasi atau di folder.Anda menerima error saat membaca dari bucket log dengan CMEK diaktifkan, atau jika Anda mencoba membuat atau memperbarui bucket log.
Notifikasi memberikan informasi tentang kegagalan dan berisi tindakan yang dapat Anda lakukan untuk mengurangi masalah:
| Error | Rekomendasi |
|---|---|
| Izin kunci kriptografi ditolak | Akun layanan Logging yang terkait dengan Google Cloud project Anda tidak memiliki izin IAM yang memadai untuk beroperasi pada kunci Cloud KMS yang ditentukan. Ikuti petunjuk dalam error atau lihat dokumen berikut:
|
| Kunci kriptografi dinonaktifkan | Kunci Cloud KMS yang ditentukan dinonaktifkan. Ikuti petunjuk dalam error untuk mengaktifkan kembali kunci. |
| Kunci kriptografi dimusnahkan | Kunci Cloud KMS yang ditentukan dimusnahkan. Ikuti petunjuk atau lihat dokumen berikut: |
Mengidentifikasi project yang berisi kunci Cloud KMS
Untuk mengidentifikasi ID the Google Cloud project yang berisi kunci enkripsi yang digunakan oleh bucket log, folder, atau organisasi, lakukan hal berikut:
PROJECT
gcloud logging settings describe --project=PROJECT_ID
Sebelum menjalankan perintah, ganti PROJECT_ID dengan project ID yang berisi bucket log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Sebelum menjalankan perintah, ganti FOLDER_ID dengan ID folder.
ORGANIZATION
gcloud logging settings describe --organization=ORGANIZATION_ID
Sebelum menjalankan perintah, ganti ORGANIZATION_ID dengan ID organisasi.
Perintah sebelumnya menampilkan informasi yang mirip dengan berikut ini:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Untuk organisasi dan folder, kolom berikut juga ditampilkan:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Nilai kolom kmsKeyName mencakup thes Google Cloud project yang stores
the kunci.
Memverifikasi kegunaan kunci
Untuk memverifikasi kegunaan kunci, jalankan perintah berikut untuk mencantumkan semua kunci:
gcloud kms keys list \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING
Perintah ini menampilkan informasi tentang setiap kunci dalam format tabel. Baris pertama output adalah daftar nama kolom:
NAME PURPOSE ...
Pastikan kunci Cloud KMS tercantum dalam output perintah sebagai ENABLED, dan tujuan kunci adalah enkripsi simetris: kolom PURPOSE harus berisi ENCRYPT_DECRYPT dan kolom PRIMARY_STATE harus berisi ENABLED.
Jika perlu, buat kunci baru.
Memverifikasi konfigurasi izin
Akun layanan yang terkait dengan setelan CMEK organisasi harus memiliki peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS untuk kunci yang dikonfigurasi.
Untuk mencantumkan kebijakan IAM kunci, jalankan perintah berikut:
gcloud kms keys get-iam-policy KMS_KEY_NAME
Jika perlu, tambahkan akun layanan yang berisi peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS ke kunci.