Operator Kubernetes AlloyDB Omni 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
dalam 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 spesifik 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.3.0" features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]Ganti
TDE_CONFIG_NAMEdengan nama resourceTdeConfigdanDBCLUSTER_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.
Untuk mengaktifkan TDE bagi cache columnar yang ditumpahkan ke SSD, lakukan patch pada DBCluster Anda sebagai berikut:
kubectl patch dbcluster `DBCLUSTER_NAME` \
-n `DBCLUSTER_NAMESPACE` \
-p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
--type=merge
Referensi metrik TDE
Anda dapat melihat semua metrik TDE di agen pemantauan AlloyDB Omni. 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. |
|
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 |
tde_chill_cache_blocks_encrypted |
Jumlah blok cache dingin yang dienkripsi. | Tidak berlaku | konter | |
tde_chill_cache_blocks_decrypted |
Jumlah blok cache dingin yang didekripsi. | Tidak berlaku | konter | |
tde_chill_cache_blocks_total_encryption_time_us |
Total waktu yang dihabiskan dalam enkripsi blok cache dingin. | Tidak berlaku | mikrodetik | konter |
tde_chill_cache_blocks_total_decryption_time_us |
Total waktu yang dihabiskan dalam dekripsi blok cache dingin. | Tidak berlaku | mikrodetik | konter |
tde_ce_cache_ssd_blocks_encrypted |
Jumlah blok cache kolom yang dilimpahkan ke penyimpanan SSD yang dienkripsi. | Tidak berlaku | konter | |
tde_ce_cache_ssd_blocks_decrypted |
Jumlah blok cache kolom yang dilimpahkan ke penyimpanan SSD yang didekripsi. | Tidak berlaku | konter | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Total waktu yang dihabiskan untuk mengenkripsi blok cache kolom yang dilimpahkan ke penyimpanan SSD. | Tidak berlaku | mikrodetik | konter |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Total waktu yang dihabiskan untuk mendekripsi blok cache columnar yang dilimpahkan ke penyimpanan SSD. | Tidak berlaku | mikrodetik | konter |