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 mengetahui 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 perintah berikut gcloud sql import 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 tempat Anda ingin mengimpor sertifikat enkripsi.
  • 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 tempat Anda ingin mengimpor sertifikat enkripsi.
  • 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 mengganti 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 ini:

        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 prosedur tersimpan msdb.dbo.gcloudsql_drop_tde_user_certificate. Prosedur harus dipanggil oleh pengguna sqlserver, atau oleh pengguna yang telah diberi izin oleh pengguna sqlserver, menggunakan panggilan yang mirip dengan berikut ini:

        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 lengkap sertifikat TDE—termasuk awalan dan akhiran—untuk diekspor. Anda dapat mencari nama lengkap sertifikat enkripsi TDE dengan 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 yang dienkripsi TDE, jika sertifikat TDE yang cocok sudah ada di instance sumber, Anda dapat mengimpor cadangan yang dienkripsi 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. Bendera ini memberikan manfaat berikut:

  • Menyimpan sertifikat TDE yang terkait dengan instance.
  • Mencegah cadangan didekripsi selama impor.

Jika Anda tidak menggunakan tanda --keep-encrypted, cadangan yang diimpor akan didekripsi, dan sertifikat TDE tidak akan disimpan di server.

Untuk informasi selengkapnya, lihat referensi berikut:

Mengekspor cadangan yang dienkripsi TDE

Anda dapat mengekspor cadangan yang dienkripsi 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 hampir sama seperti yang Anda lakukan menggunakan SQL Server.

Awalnya, hanya login pengguna root, 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