Menggunakan enkripsi data transparan (TDE)

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 pengguna sqlserver, atau oleh pengguna yang telah diberi izin oleh pengguna sqlserver, 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 pengguna sqlserver, atau oleh pengguna yang telah diberi izin oleh pengguna sqlserver, 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 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:

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
  

Langkah berikutnya