Membuat cluster yang mendukung TDE

Pilih versi dokumentasi:

Operator AlloyDB Omni Kubernetes mengotomatiskan siklus proses cluster Transparent Data Encryption (TDE) menggunakan resource kustom TdeConfig. Resource ini menyimpan detail koneksi Key Management Service (KMS), sehingga operator dapat menyuntikkan kredensial yang diperlukan ke dalam pod database secara aman.

Sebelum memulai

  • Konfigurasi mesin rahasia KV-V2 HashiCorp Vault untuk memastikan bahwa jalur Key Encryption Key (KEK) dan JSON Web Token (JWT) tersedia.
  • Pastikan AlloyDB Omni memiliki izin untuk membaca file token JWT.
  • Opsional: Untuk men-deploy cluster yang mendukung TDE di OpenShift, berikan Batasan Konteks Keamanan (SCC) hostmount-anyuid ke akun layanan DBCluster yang menjalankan cluster database.

    oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE

    Ganti DBCLUSTER_NAME dengan nama DBCluster dan DBCLUSTER_NAMESPACE dengan namespace tempat Anda ingin membuat resource DBCluster.

Mengonfigurasi akses vault

Buat resource secret yang berisi jalur KEK dan kredensial autentikasi Anda.

apiVersion: v1
kind: ConfigMap
metadata:
  name: CONFIG_MAP_NAME
data:
  kek_url: "KEK_URL"
  token_path: "JWT_TOKEN_PATH"

Ganti kode berikut:

  • CONFIG_MAP_NAME: nama peta konfigurasi. Nilai yang ditentukan dalam kek_url dan token_path digunakan dalam definisi resource TdeConfig.
  • KEK_URL: URL yang sepenuhnya memenuhi syarat ke KEK di HashiCorp Vault. Gunakan vault sebagai protokol untuk menentukan HashiCorp Vault sebagai penyedia KMS—misalnya, vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.
  • JWT_TOKEN_PATH: jalur ke token JWT di node. Contoh, /tmp/token. Jalur akses token JWT harus konsisten di semua node dalam cluster.

Membuat secret TLS

Untuk membuat secret TLS guna menyimpan sertifikat Anda, jalankan perintah berikut:

kubectl create secret tls VAULT_SECRET_NAME \
    --cert=vault.crt \
    --key=vault.key

kubectl patch secret VAULT_SECRET_NAME \
    -p '{"data":{"ca.crt":"'$(base64 -w 0 vault.crt)'"}}' \
    --type=merge

Ganti VAULT_SECRET_NAME dengan nama untuk secret TLS. Anda menggunakan nama rahasia ini saat membuat resource kustom TdeConfig.

Buat CRD TdeConfig

Buat resource TdeConfig yang menentukan cara AlloyDB Omni berkomunikasi dengan vault untuk mengambil KEK. Satu-satunya jenis autentikasi yang didukung adalah jwt. Pastikan Anda membuat resource TdeConfig di namespace yang sama dengan resource DbCluster.

Pastikan jalur ke token JWT Anda dapat diakses oleh pengguna postgres dan instance vault Anda dapat dijangkau melalui jaringan.

Untuk membuat resource TdeConfig, ikuti langkah-langkah berikut:

Buat dan terapkan manifes untuk resource TdeConfig.

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: TdeConfig
  metadata:
    name: TDE_CONFIG_NAME
  spec:
    kekUrlRef:
      name: CONFIG_MAP_NAME
      key: kek_url
    kmsProvider:
      vault:
        authType: "jwt"
        authMount: "JWT_AUTH_MOUNT_PATH"
        jwt:
          pathRef:
            name: "CONFIG_MAP_NAME"
            key: "token_path"
          role: "VAULT_ROLE"
    tls:
      certSecret:
        name: "VAULT_SECRET_NAME"

Ganti kode berikut:

  • TDE_CONFIG_NAME: nama resource TdeConfig.
  • JWT_AUTH_MOUNT_PATH: jalur tempat mesin autentikasi di-mount dalam HashiCorp Vault, seperti yang ditentukan oleh konfigurasi Anda. Contoh, auth/kms.
  • (Opsional) VAULT_ROLE: peran klien yang ditentukan dalam penyiapan Vault Anda. Peran klien memvalidasi JWT dan mencerminkan hak akses dan identitas tertentu yang diberikan peran dalam HashiCorp Vault.
  • VAULT_SECRET_NAME: nama secret yang berisi sertifikat untuk koneksi vault. Contoh, vault-secret.

Deploy DBCluster

  1. Buat dan terapkan manifes untuk membuat resource DBCluster yang mereferensikan resource TdeConfig Anda. Untuk mengetahui informasi selengkapnya tentang cara membuat cluster database, lihat Membuat cluster database.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: "DBCLUSTER_NAME"
    spec:
      databaseVersion: "18.1.0"
      features:
        transparentDataEncryption:
          tdeConfigRef:
            name: "TDE_CONFIG_NAME"
    
    [...]
    

    Ganti TDE_CONFIG_NAME dengan nama resource TdeConfig Anda dan DBCLUSTER_NAME dengan nama DBCluster yang ingin Anda buat.

  2. Opsional: Jika Anda men-deploy DBCluster di lingkungan Openshift, Anda harus memberi anotasi pada resource DBCluster dengan anotasi hostmount-anyuid.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuid
    

    Ganti DBCLUSTER_NAME dengan nama resource DBCluster Anda dan DBCLUSTER_NAMESPACE dengan namespace tempat Anda ingin membuat resource DBCluster.

Melihat metrik TDE

Setelah cluster diinisialisasi, selesaikan langkah-langkah berikut untuk memverifikasi bahwa TDE diaktifkan dan melihat metrik TDE terkait.

  1. Hubungkan ke database Anda menggunakan psql atau klien pilihan Anda. Untuk mengetahui petunjuk mendetail tentang cara menghubungkan ke instance, lihat Menjalankan dan menghubungkan ke AlloyDB Omni.
  2. Jalankan perintah berikut:

    select * FROM pgsnap.g$tde_stats;
    

    Output menampilkan metrik TDE seperti apakah TDE diaktifkan, URL KEK, versi KEK, dan stempel waktu pembuatan KEK.

    Tabel berikut menjelaskan arti setiap metrik.

    Nama Deskripsi Label Unit Jenis
    alloydb_omni_database_tde_data_blocks_decrypted_count_total Jumlah blok data yang didekripsi. Tidak berlaku konter
    alloydb_omni_database_tde_data_blocks_encrypted_count_total Jumlah blok data yang dienkripsi. Tidak berlaku konter
    alloydb_omni_database_tde_data_decryption_time_us_total Total waktu yang dihabiskan dalam dekripsi blok data. Tidak berlaku mikrodetik konter
    alloydb_omni_database_tde_data_encryption_time_us_total Total waktu yang dihabiskan dalam enkripsi blok data. Tidak berlaku mikrodetik konter
    alloydb_omni_database_tde_enabled Status diaktifkannya TDE. Tidak berlaku ukur
    alloydb_omni_database_tde_kek_info Informasi KEK TDE.
    • kek_version: Versi KEK
      yang digunakan untuk penggabungan kunci.
    • kek_url: Jalur yang sepenuhnya memenuhi syarat
      ke KEK di KMS
    • kek_creation_timestamp:
      Waktu pembuatan versi KEK yang digunakan.
    ukur
    alloydb_omni_database_tde_temp_blocks_decrypted_count_total Jumlah pemblokiran sementara yang didekripsi. Tidak berlaku konter
    alloydb_omni_database_tde_temp_blocks_encrypted_count_total Jumlah blok sementara yang dienkripsi. Tidak berlaku konter
    alloydb_omni_database_tde_temp_decryption_time_us_total Total waktu yang dihabiskan dalam dekripsi blok sementara. Tidak berlaku mikrodetik konter
    alloydb_omni_database_tde_temp_encryption_time_us_total Total waktu yang dihabiskan dalam enkripsi blok sementara. Tidak berlaku mikrodetik konter
    alloydb_omni_database_tde_wal_blocks_decrypted_count_total Jumlah blok WAL yang didekripsi. Tidak berlaku konter
    alloydb_omni_database_tde_wal_blocks_encrypted_count_total Jumlah blok WAL yang dienkripsi. Tidak berlaku konter
    alloydb_omni_database_tde_wal_decryption_time_us_total Total waktu yang dihabiskan dalam dekripsi blok WAL. Tidak berlaku mikrodetik konter
    alloydb_omni_database_tde_wal_encryption_time_us_total Total waktu yang dihabiskan dalam enkripsi blok WAL. Tidak berlaku mikrodetik konter