Secara default, Gemini Data Analytics mengenkripsi konten pelanggan dalam penyimpanan. Analisis Data Gemini menangani enkripsi untuk Anda tanpa tindakan tambahan dari Anda. Opsi ini disebut Enkripsi default Google.
Jika ingin mengontrol kunci enkripsi, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud KMS dengan layanan yang terintegrasi dengan CMEK, termasuk Gemini Data Analytics. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batasan kriptografisnya. Dengan Cloud KMS, Anda juga dapat melihat log audit dan mengontrol siklus proses kunci. Bukan Google yang memiliki dan mengelola kunci enkripsi kunci (KEK) simetris yang melindungi data Anda. Andalah yang mengontrol dan mengelola kunci ini di Cloud KMS.
Setelah Anda menyiapkan resource dengan CMEK, pengalaman mengakses resource Gemini Data Analytics Anda akan serupa dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).
Halaman ini menjelaskan cara menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk melindungi data yang digunakan oleh Conversational Analytics API dengan sumber data Looker. Conversational Analytics API adalah produk dalam layanan Gemini Data Analytics (geminidataanalytics.googleapis.com).
CMEK untuk resource Conversational Analytics API
Saat Anda mengonfigurasi CMEK untuk resource Conversational Analytics API, kunci Cloud KMS yang ditentukan akan mengenkripsi data sensitif dalam penyimpanan. Anda dapat mengonfigurasi CMEK untuk resource DataAgent dan Conversation secara terpisah.
Anda hanya dapat mengonfigurasi CMEK pada saat pembuatan resource. Untuk menggunakan CMEK, Anda harus menentukan kolom kms_key saat membuat resource DataAgent atau Conversation. Anda tidak dapat menambahkan atau mengubah kunci Cloud KMS pada resource yang ada.
Yang dilindungi oleh CMEK
CMEK untuk Conversational Analytics API melindungi data berikut dalam penyimpanan:
- Resource
DataAgent: Semua konten inti pelanggan dalam kolomstaging_context,published_context, danlast_published_contextdata_analytics_agent. Hal ini mencakup kolom sepertisystem_instructiondanexample_queries. Conversationresource: Semua pesan dan histori status.
Data berikut tidak dienkripsi dengan kunci CMEK pelanggan. Sebagai gantinya, data ini dilindungi oleh enkripsi default Google:
- Resource
DataAgent: Kolom metadata termasukname,display_name,description,labels,create_time,update_time,delete_time,purge_time, dankms_key - Sumber daya
Conversation: Kolom metadata termasukname,agents,labels,create_time,last_used_time, dankms_key
Batasan
CMEK untuk Conversational Analytics API memiliki batasan berikut:
- CMEK harus dikonfigurasi saat resource dibuat. Tidak dapat ditambahkan ke atau diubah pada resource yang ada.
- Kunci Cloud KMS dan resource Conversational Analytics API harus berada di lokasi yang sama. Wilayah
globaltidak didukung. - Untuk resource Conversational Analytics API, CMEK didukung di region
us-east4. - Untuk resource Conversational Analytics API, CMEK hanya didukung untuk sumber data Looker.
- Anda hanya dapat menggunakan satu CMEK per project per region untuk semua resource
Conversationdalam project dan region tersebut.
Sebelum memulai
Sebelum Anda dapat menggunakan CMEK dengan Conversational Analytics API, selesaikan langkah-langkah berikut:
Aktifkan API yang diperlukan di Google Cloud konsol atau Google Cloud CLI.
Konsol
Aktifkan API berikut di konsol Google Cloud untuk project Google Cloud Anda.
Mengaktifkan Gemini Data Analytics API
gcloud
Dengan Google Cloud CLI, jalankan perintah
gcloud services enableberikut untuk mengaktifkan Gemini Data Analytics API, Gemini for Google Cloud API, dan Cloud Key Management Service API.gcloud services enable geminidataanalytics.googleapis.com --project=project_id gcloud services enable cloudaicompanion.googleapis.com --project=project_id gcloud services enable cloudkms.googleapis.com --project=project_id
Pada perintah gcloud CLI contoh sebelumnya, ganti
project_iddengan project ID Google Cloud Anda.Tambahkan project Anda ke daftar yang diizinkan.
Project Google Cloud Anda harus ditambahkan ke daftar yang diizinkan untuk menggunakan CMEK dengan Gemini Data Analytics. Untuk meminta agar project Anda ditambahkan ke daftar yang diizinkan, kirimkan project ID Anda melalui formulir Daftar yang Diizinkan CMEK GDA. Penambahan project Anda ke daftar yang diizinkan memerlukan waktu sekitar satu hingga dua hari kerja untuk diselesaikan.
Buat key ring dan kunci Cloud KMS di lokasi yang sama dengan resource Conversational Analytics API Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat kunci.
Buat agen layanan yang dikelola Google, yang juga dikenal sebagai akun layanan per produk per project (P4SA), jika belum ada. Agen layanan ini diperlukan untuk mengizinkan layanan yang terlibat dalam melindungi resource Conversational Analytics API Anda dengan CMEK mengakses kunci Cloud KMS Anda.
Jalankan perintah
gcloudberikut untuk membuat agen layanan: Gantigcloud beta services identity create --service=geminidataanalytics.googleapis.com --project PROJECT_ID gcloud beta services identity create --service=cloudaicompanion.googleapis.com --project PROJECT_ID
PROJECT_IDdengan project ID Google Cloud Anda.Berikan peran Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) di Identity and Access Management (IAM) kepada kedua agen layanan yang Anda buat pada langkah sebelumnya untuk memungkinkan layanan Gemini Data Analytics menggunakan kunci Cloud KMS Anda untuk mengenkripsi dan mendekripsi data Conversational Analytics API Anda.Berikan izin kepada agen layanan Analisis Data Gemini:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-geminidataanalytics.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID
Berikan izin kepada agen layanan Gemini untuk Google Cloud API:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID
Dalam contoh kode sebelumnya, ganti nilai contoh sebagai berikut:
KEY_NAME: Nama kunci Cloud KMS Anda.KEY_LOCATION: Region key ring Anda (misalnya,us-east4).KEY_RING_NAME: Nama key ring Anda.PROJECT_NUMBER: Nomor Google Cloud project tempat Anda membuat resource API.KMS_PROJECT_ID: Project ID tempat kunci dibuat. Project ini dapat sama dengan project tempat Anda membuat resource API.
Melindungi resource dengan CMEK
Bagian ini menunjukkan cara melindungi resource DataAgent atau Conversation baru dengan CMEK menggunakan REST API untuk menentukan kunci Cloud KMS di kolom kms_key selama pembuatan resource.
Anda hanya dapat mengaktifkan CMEK saat membuat resource DataAgent atau Conversation.
Kunci CMEK harus berada di region yang sama dengan resource yang dilindunginya. Untuk mengetahui informasi selengkapnya, lihat Batasan.
Melindungi resource DataAgent dengan CMEK
Untuk melindungi resource DataAgent baru dengan CMEK, tentukan kunci Cloud KMS di kolom kms_key saat Anda membuat agen data.
Python SDK
Contoh berikut menunjukkan cara menentukan kunci Cloud KMS saat Anda membuat resource DataAgent dengan Python SDK. Untuk contoh permintaan create yang lengkap, lihat Membangun agen data menggunakan Python SDK.
# Define the KMS key.
billing_project = "BILLING_PROJECT_ID"
key_ring = "KEY_RING_NAME"
key_name = "KEY_NAME"
key_project = "KMS_PROJECT_ID" # Project where the key was created
location = "LOCATION" # Region of your key ring
if key_project == "":
key_project = billing_project
kms_key_data_agent = f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}"
data_agent = geminidataanalytics.DataAgent()
data_agent.data_analytics_agent.published_context = published_context
data_agent.kms_key = kms_key_data_agent
Dalam contoh sebelumnya, ganti nilai sebagai berikut:
BILLING_PROJECT_ID: Project ID penagihan Anda.KEY_RING_NAME: Nama key ring Cloud KMS Anda.KEY_NAME: Nama kunci Cloud KMS Anda.KMS_PROJECT_ID: Project ID tempat kunci dibuat. Jika dibiarkan kosong,billing_projectakan digunakan.LOCATION: Region key ring Anda.
HTTP
Contoh berikut menunjukkan cara menentukan kunci Cloud KMS di isi permintaan saat Anda membuat resource DataAgent dengan HTTP dan Python. Untuk contoh permintaan create lengkap, lihat Membangun agen data menggunakan HTTP dan Python.
data_agent_payload = {
"name": f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}",
"description": "This is the description of data_agent_1.",
# If using CMEK, include the kms_key field.
"kms_key": f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}",
"data_analytics_agent": {
"published_context": {
"datasource_references": looker_data_source,
"system_instruction": system_instruction,
}
}
}
Dalam contoh sebelumnya, ganti nilai sebagai berikut:
KMS_PROJECT_ID: Project ID tempat kunci dibuat.LOCATION: Region key ring Anda.KEY_RING_NAME: Nama key ring Cloud KMS Anda.KEY_NAME: Nama kunci Cloud KMS Anda.
Melindungi resource Conversation dengan CMEK
Untuk melindungi resource Conversation baru dengan CMEK, tentukan kunci Cloud KMS di kolom kms_key saat Anda membuat percakapan.
Python SDK
Contoh berikut menunjukkan cara menentukan kunci Cloud KMS saat Anda membuat resource Conversation dengan Python SDK. Untuk contoh permintaan create yang lengkap, lihat Membangun agen data menggunakan Python SDK.
# Define the KMS key.
billing_project = "BILLING_PROJECT_ID"
key_ring = "KEY_RING_NAME"
key_name = "KEY_NAME"
key_project = "KMS_PROJECT_ID" # Project where the key was created
location = "LOCATION" # Region of your key ring
if key_project == "":
key_project = billing_project
kms_key_conversation = f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}"
conversation = geminidataanalytics.Conversation()
conversation.agents = [f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}"]
conversation.kms_key = kms_key_conversation
Dalam contoh sebelumnya, ganti nilai sebagai berikut:
BILLING_PROJECT_ID: Project ID penagihan Anda.KEY_RING_NAME: Nama key ring Cloud KMS Anda.KEY_NAME: Nama kunci Cloud KMS Anda.KMS_PROJECT_ID: Project ID tempat kunci dibuat. Jika dibiarkan kosong,billing_projectakan digunakan.LOCATION: Region key ring Anda.
HTTP
Contoh berikut menunjukkan cara menentukan kunci Cloud KMS di isi permintaan saat Anda membuat resource Conversation dengan HTTP dan Python. Untuk contoh permintaan create lengkap, lihat Membangun agen data menggunakan HTTP dan Python.
conversation_payload = {
"agents": [
f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}"
],
"name": f"projects/{billing_project}/locations/{location}/conversations/{conversation_id}",
# If using CMEK, include the kms_key field.
"kms_key": f"projects/{key_project}/locations/{location}/keyRings/{key_ring_name}/cryptoKeys/{key_name}"
}
Dalam contoh sebelumnya, ganti nilai sebagai berikut:
KMS_PROJECT_ID: Project ID tempat kunci dibuat.LOCATION: Region key ring Anda.KEY_RING_NAME: Nama key ring Cloud KMS Anda.KEY_NAME: Nama kunci Cloud KMS Anda.
Pemecahan masalah
Bagian ini membahas masalah umum dan pertimbangan penting saat Anda menggunakan CMEK dengan Conversational Analytics API.
Perubahan status utama
Jika versi kunci Cloud KMS yang melindungi resource Conversational Analytics API menjadi tidak tersedia, Anda akan kehilangan akses ke data yang dienkripsi oleh kunci tersebut. Jika Anda mencoba mengakses data yang dilindungi saat kunci tidak tersedia, seperti dengan membaca konteks resource DataAgent atau mengakses histori Conversation, permintaan akan gagal. Error yang ditampilkan bergantung pada alasan kunci tidak tersedia:
- Jika versi kunci dinonaktifkan atau dihancurkan, operasi biasanya gagal dengan error
FAILED_PRECONDITION. - Jika peran IAM
cloudkms.cryptoKeyEncrypterDecrypterdicabut dari agen layanangcp-sa-geminidataanalyticsataugcp-sa-cloudaicompanion, operasi biasanya gagal dengan errorPERMISSION_DENIEDatauNOT_FOUND.
Meskipun kunci tidak tersedia, Anda tetap dapat melakukan operasi yang tidak memerlukan dekripsi konten, seperti menghapus resource DataAgent atau Conversation.
Untuk memulihkan akses ke data terenkripsi, aktifkan kembali kunci dan pastikan agen layanan memiliki izin IAM yang diperlukan, seperti yang dijelaskan di bagian Sebelum memulai.
Kuota Cloud KMS dan Conversational Analytics API
Saat Anda menggunakan CMEK di Conversational Analytics API, project Anda dapat memakai kuota permintaan kriptografis Cloud KMS.
Misalnya, membaca resource DataAgent atau mengakses histori Conversation yang dilindungi oleh CMEK memerlukan Cloud KMS untuk mendekripsi data.
Operasi enkripsi dan dekripsi yang menggunakan kunci CMEK memengaruhi kuota Cloud KMS dengan cara berikut:
- Untuk kunci software CMEK yang dihasilkan di Cloud KMS, tidak ada kuota Cloud KMS yang digunakan.
- Untuk kunci hardware CMEK—terkadang disebut kunci Cloud HSM —operasi enkripsi dan dekripsi akan mengurangi kuota Cloud HSM dalam project yang berisi kunci tersebut.
- Untuk kunci eksternal CMEK—terkadang disebut kunci Cloud EKM —operasi enkripsi dan dekripsi akan mengurangi kuota Cloud EKM dalam project yang berisi kunci tersebut.
Untuk informasi selengkapnya, lihat kuota Cloud KMS.
Langkah berikutnya
- Pelajari cara Mengaktifkan Conversational Analytics API.
- Pelajari cara Melakukan autentikasi dan terhubung ke sumber data dengan Conversational Analytics API.
- Pelajari cara Membangun agen data menggunakan Python SDK.
- Pelajari cara Membangun agen data menggunakan HTTP dan Python.
- Pelajari Cloud KMS lebih lanjut.
- Pelajari kebijakan organisasi CMEK.