Halaman ini menunjukkan cara menggunakan enkripsi data transparan (TDE).
Bagian berikut menunjukkan cara mengelola sertifikat TDE.
Sebelum memulai
Untuk mengimpor atau mengekspor sertifikat TDE, Anda harus memiliki izin Identity and Access Management cloudsql.instances.manageEncryption
, yang tersedia dalam peran cloudsql.admin
. Untuk informasi selengkapnya, lihat
Peran Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Mengimpor sertifikat TDE eksternal
Konsol
Anda tidak dapat mengimpor sertifikat TDE menggunakan konsol Google Cloud.
gcloud
Gunakan gcloud sql import
berikut untuk mengimpor sertifikat dari bucket Cloud Storage:
gcloud sql import tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
Lakukan penggantian berikut:
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda ingin mengimpor sertifikat TDE.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda impor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat TDE yang ingin Anda impor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
REST v1
Untuk mengimpor sertifikat TDE, gunakan metode
instances.import
dan tentukan properti berikut:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: nama project tempat sertifikat enkripsi akan diimpor.
- INSTANCE_NAME: nama instance Cloud SQL yang ingin Anda impor sertifikat enkripsinya.
- TDE_CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda gunakan setelah diimpor.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda impor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat enkripsi yang ingin Anda impor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Meminta isi JSON:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
REST v1beta4
Untuk mengimpor sertifikat TDE, gunakan metode
instances.import
dan tentukan properti berikut:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: nama project tempat sertifikat enkripsi akan diimpor.
- INSTANCE_NAME: nama instance Cloud SQL yang ingin Anda impor sertifikat enkripsinya.
- TDE_CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda gunakan setelah diimpor.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda impor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat enkripsi yang ingin Anda impor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Meminta isi JSON:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Setiap sertifikat TDE yang diimpor diberi nama unik dalam format berikut:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Jika pemulihan point-in-time (PITR) diaktifkan di instance, mungkin perlu waktu beberapa menit sebelum sertifikat TDE yang diimpor tersedia.
Merotasi sertifikat TDE
Anda dapat merotasi sertifikat TDE yang diimpor dengan prosedur tersimpan
msdb.dbo.gcloudsql_rotate_tde_certificate
. Prosedur harus dipanggil oleh penggunasqlserver
, atau oleh pengguna yang telah diberi izin oleh penggunasqlserver
, menggunakan panggilan yang mirip dengan berikut:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Menghapus sertifikat TDE
Anda dapat mengimpor hingga sepuluh sertifikat TDE pengguna. Jika Anda perlu mengimpor lebih banyak, hapus sertifikat TDE yang tidak diperlukan menggunakan
msdb.dbo.gcloudsql_drop_tde_user_certificate
prosedur tersimpan. Prosedur harus dipanggil oleh penggunasqlserver
, atau oleh pengguna yang telah diberi izin oleh penggunasqlserver
, menggunakan panggilan yang mirip dengan berikut:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Anda tidak dapat menghapus sertifikat yang dikelola oleh Cloud SQL.
Anda tidak dapat menghapus sertifikat saat sedang digunakan.
Mengekspor sertifikat TDE
Anda harus menentukan nama sertifikat TDE lengkap—termasuk
awalan dan akhiran—untuk diekspor. Anda dapat mencari nama sertifikat enkripsi TDE lengkap yang mengkueri kolom nama dari tampilan sys.certificates
:
SELECT name FROM sys.certificates
Konsol
Anda tidak dapat mengekspor sertifikat TDE menggunakan konsol Google Cloud.
gcloud
Gunakan gcloud sql export
berikut untuk mengekspor sertifikat TDE ke bucket Cloud Storage:
gcloud sql export tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
Lakukan penggantian berikut:
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda ingin mengekspor sertifikat TDE.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda ekspor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat TDE yang ingin Anda ekspor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
REST v1
Untuk mengekspor sertifikat TDE, gunakan metode
instances.export
dan tentukan properti berikut:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: nama project tempat sertifikat enkripsi akan diekspor.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda ingin mengekspor sertifikat enkripsi.
- TDE_CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda gunakan setelah diekspor.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda ekspor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat enkripsi yang ingin Anda ekspor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Meminta isi JSON:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
REST v1beta4
Untuk mengekspor sertifikat TDE, gunakan metode
instances.export
dan tentukan properti berikut:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: nama project tempat sertifikat enkripsi akan diekspor.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda ingin mengekspor sertifikat enkripsi.
- TDE_CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda gunakan setelah diekspor.
- CERTIFICATE_NAME: nama sertifikat enkripsi yang ingin Anda ekspor.
- BUCKET_NAME: nama bucket Cloud Storage tempat sertifikat enkripsi yang ingin Anda ekspor berada.
- KEY_NAME: nama kunci enkripsi yang terkait dengan bucket Cloud Storage.
- CERTIFICATE_PASSWORD: sandi sertifikat.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Meminta isi JSON:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Mengimpor cadangan terenkripsi TDE
Saat mengimpor cadangan terenkripsi TDE, jika sertifikat TDE yang cocok sudah ada di instance sumber, Anda dapat mengimpor cadangan terenkripsi secara langsung dan cadangan tersebut tidak akan didekripsi. Anda tidak perlu memberikan sertifikat lagi.
Jika sertifikat tidak ada di instance, gunakan
flag --keep-encrypted
saat mengimpor. Flag ini
memberikan manfaat berikut:
- Mempertahankan sertifikat TDE yang terkait dengan instance.
- Mencegah pencadangan didekripsi selama impor.
Jika Anda tidak menggunakan flag --keep-encrypted
, cadangan yang diimpor akan didekripsi, dan sertifikat TDE tidak akan disimpan di server.
Untuk informasi selengkapnya, lihat referensi berikut:
- Mengekspor dan mengimpor menggunakan file BAK
- Mengimpor data ke instance Cloud SQL dari file cadangan BAK
Mengekspor cadangan terenkripsi TDE
Anda dapat mengekspor cadangan terenkripsi TDE dengan cara yang sama seperti saat mengekspor cadangan yang tidak dienkripsi. Sertifikat yang digunakan untuk mengenkripsi cadangan tidak disertakan dalam ekspor. Anda harus mengekspornya secara terpisah.
Untuk informasi selengkapnya, lihat referensi berikut:
- Mengekspor dan mengimpor menggunakan file BAK
- Mengekspor data ke instance Cloud SQL dari file cadangan BAK
Mengenkripsi dan mendekripsi database
Anda dapat mengenkripsi dan mendekripsi instance dengan cara yang sama seperti menggunakan SQL Server.
Awalnya, hanya login root
pengguna, seperti
sqlserver
yang dapat mengakses sertifikat TDE.
Untuk memberikan akses kepada pengguna lain, gunakan perintah berikut atau yang serupa:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Atau, Anda dapat memberikan akses ke sertifikat dan pengguna database tertentu.
Anda dapat mengenkripsi database menggunakan perintah berikut atau yang serupa:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
Anda dapat mendekripsi database menggunakan perintah berikut atau yang serupa:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF