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-anyuidke akun layananDBClusteryang menjalankan cluster database.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
Ganti DBCLUSTER_NAME dengan nama
DBClusterdan DBCLUSTER_NAMESPACE dengan namespace tempat Anda ingin membuat resourceDBCluster.
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 dalamkek_urldantoken_pathdigunakan dalam definisi resourceTdeConfig.KEK_URL: URL yang sepenuhnya memenuhi syarat ke KEK di HashiCorp Vault. Gunakanvaultsebagai 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 resourceTdeConfig.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
Buat dan terapkan manifes untuk membuat resource
DBClusteryang mereferensikan resourceTdeConfigAnda. 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_NAMEdengan nama resourceTdeConfigAnda danDBCLUSTER_NAMEdengan namaDBClusteryang ingin Anda buat.Opsional: Jika Anda men-deploy
DBClusterdi lingkungan Openshift, Anda harus memberi anotasi pada resourceDBClusterdengan anotasihostmount-anyuid.kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuidGanti
DBCLUSTER_NAMEdengan nama resourceDBClusterAnda danDBCLUSTER_NAMESPACEdengan namespace tempat Anda ingin membuat resourceDBCluster.
Melihat metrik TDE
Setelah cluster diinisialisasi, selesaikan langkah-langkah berikut untuk memverifikasi bahwa TDE diaktifkan dan melihat metrik TDE terkait.
- Hubungkan ke database Anda menggunakan
psqlatau klien pilihan Anda. Untuk mengetahui petunjuk mendetail tentang cara menghubungkan ke instance, lihat Menjalankan dan menghubungkan ke AlloyDB Omni. 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_totalJumlah blok data yang didekripsi. Tidak berlaku konter alloydb_omni_database_tde_data_blocks_encrypted_count_totalJumlah blok data yang dienkripsi. Tidak berlaku konter alloydb_omni_database_tde_data_decryption_time_us_totalTotal waktu yang dihabiskan dalam dekripsi blok data. Tidak berlaku mikrodetik konter alloydb_omni_database_tde_data_encryption_time_us_totalTotal waktu yang dihabiskan dalam enkripsi blok data. Tidak berlaku mikrodetik konter alloydb_omni_database_tde_enabledStatus diaktifkannya TDE. Tidak berlaku ukur alloydb_omni_database_tde_kek_infoInformasi KEK TDE. kek_version: Versi KEK
yang digunakan untuk penggabungan kunci.kek_url: Jalur yang sepenuhnya memenuhi syarat
ke KEK di KMSkek_creation_timestamp:
Waktu pembuatan versi KEK yang digunakan.
ukur alloydb_omni_database_tde_temp_blocks_decrypted_count_totalJumlah pemblokiran sementara yang didekripsi. Tidak berlaku konter alloydb_omni_database_tde_temp_blocks_encrypted_count_totalJumlah blok sementara yang dienkripsi. Tidak berlaku konter alloydb_omni_database_tde_temp_decryption_time_us_totalTotal waktu yang dihabiskan dalam dekripsi blok sementara. Tidak berlaku mikrodetik konter alloydb_omni_database_tde_temp_encryption_time_us_totalTotal waktu yang dihabiskan dalam enkripsi blok sementara. Tidak berlaku mikrodetik konter alloydb_omni_database_tde_wal_blocks_decrypted_count_totalJumlah blok WAL yang didekripsi. Tidak berlaku konter alloydb_omni_database_tde_wal_blocks_encrypted_count_totalJumlah blok WAL yang dienkripsi. Tidak berlaku konter alloydb_omni_database_tde_wal_decryption_time_us_totalTotal waktu yang dihabiskan dalam dekripsi blok WAL. Tidak berlaku mikrodetik konter alloydb_omni_database_tde_wal_encryption_time_us_totalTotal waktu yang dihabiskan dalam enkripsi blok WAL. Tidak berlaku mikrodetik konter