Operator Kubernetes AlloyDB Omni mengotomatiskan siklus proses cluster enkripsi data transparan (TDE) menggunakan resource kustom TdeConfig. Resource ini menyimpan detail koneksi Key Management Service (KMS) untuk HashiCorp Vault atau Thales CipherTrust Manager, sehingga operator dapat menyuntikkan kredensial yang diperlukan ke dalam pod database dengan aman.
Sebelum memulai
KMS HashiCorp Vault
- Konfigurasi mesin secret KV-V2 HashiCorp Vault untuk memastikan jalur Kunci Enkripsi Kunci (KEK) dan Token Web JSON (JWT) tersedia.
- Pastikan AlloyDB Omni memiliki izin untuk membaca file Token Web JSON (JWT), yang merupakan token autentikasi.
-
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.
KMS Thales CipherTrust
- Konfigurasi Thales CipherTrust Manager untuk memastikan Kunci Enkripsi Kunci (KEK) rahasia Anda dibuat dan dapat diekspor.
- Pastikan Anda memiliki akun pengguna CipherTrust Manager (
usernamedanpassword) dengan izin untuk mengautentikasi dan mengekspor secret KEK. -
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 KMS
Buat resource Kubernetes ConfigMap dan Secret yang berisi jalur KEK dan kredensial autentikasi KMS Anda. Pastikan untuk membuat resource ini di namespace yang sama tempat Anda berencana men-deploy DBCluster.
KMS HashiCorp Vault
Buat resource ConfigMap yang berisi URL KEK dan jalur host ke token JWT 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 ConfigMap. 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/secret/data/alloydb_kek.JWT_TOKEN_PATH: jalur ke token JWT di node—misalnya,/tmp/token. Jalur akses token JWT harus konsisten di semua node dalam cluster.
KMS Thales CipherTrust
Buat resource ConfigMap yang berisi URL KEK dan resource Secret yang berisi kredensial autentikasi Thales CipherTrust Manager Anda:
apiVersion: v1 kind: ConfigMap metadata: name: CONFIG_MAP_NAME data: kek_url: "KEK_URL" --- apiVersion: v1 kind: Secret metadata: name: CREDENTIALS_SECRET_NAME type: Opaque stringData: username: "CIPHERTRUST_USERNAME" password: "CIPHERTRUST_PASSWORD"
Ganti kode berikut:
CONFIG_MAP_NAME: nama ConfigMap. Nilai yang ditentukan dalamkek_urldigunakan dalam definisi resourceTdeConfig.KEK_URL: URL yang sepenuhnya memenuhi syarat ke KEK di Thales CipherTrust Manager. Gunakanciphertrustsebagai protokol untuk menentukan Thales CipherTrust Manager sebagai penyedia KMS—misalnya,ciphertrust://ciphertrust.default.svc:443/api/v1/vault/secrets/alloydb_kek.CREDENTIALS_SECRET_NAME: nama Secret Kubernetes yang menyimpan kredensial CipherTrust Manager Anda—misalnya,ciphertrust-credentials.CIPHERTRUST_USERNAME: nama pengguna yang digunakan untuk mengautentikasi dengan Thales CipherTrust Manager.CIPHERTRUST_PASSWORD: sandi untuk pengguna Thales CipherTrust Manager.
Membuat secret TLS
Untuk membuat secret TLS guna menyimpan sertifikat untuk memverifikasi koneksi server KMS Anda (HashiCorp Vault atau Thales CipherTrust Manager), jalankan perintah berikut:
kubectl create secret tls TLS_SECRET_NAME \
--cert=CLIENT_CERT_FILE \
--key=CLIENT_KEY_FILE
kubectl patch secret TLS_SECRET_NAME \
-p '{"data":{"ca.crt":"'$(base64 -w 0 CA_CERT_FILE)'"}}' \
--type=merge
Ganti kode berikut:
TLS_SECRET_NAME: nama untuk secret TLS (misalnya,vault-secretatauciphertrust-tls-secret). Anda menggunakan nama secret ini saat membuat resource kustomTdeConfig.CLIENT_CERT_FILE: jalur ke file sertifikat TLS klien Anda (disimpan sebagaitls.crtdi secret).CLIENT_KEY_FILE: jalur ke file kunci pribadi TLS klien Anda (disimpan sebagaitls.keydi secret).CA_CERT_FILE: jalur ke file sertifikat Certificate Authority (CA) yang digunakan untuk memverifikasi sertifikat server KMS (disimpan sebagaica.crtdi secret).
Membuat resource kustom TdeConfig
Buat resource TdeConfig yang menentukan cara AlloyDB Omni berkomunikasi dengan penyedia KMS eksternal Anda untuk mengambil KEK. Pastikan Anda membuat resource TdeConfig di namespace yang sama dengan resource DBCluster.
Pastikan instance KMS Anda dapat dijangkau melalui jaringan dari pod database Anda.
KMS HashiCorp Vault
Pastikan jalur ke token JWT Anda di node host dapat diakses oleh pengguna postgres. 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: "TLS_SECRET_NAME"
Ganti kode berikut:
TDE_CONFIG_NAME: nama resourceTdeConfig.CONFIG_MAP_NAME: nama ConfigMap yang dibuat pada langkah sebelumnya.JWT_AUTH_MOUNT_PATH: jalur tempat mesin autentikasi dipasang dalam HashiCorp Vault, seperti yang ditentukan oleh konfigurasi Anda—misalnya,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. TLS_SECRET_NAME: nama secret yang berisi sertifikat TLS untuk koneksi Vault—misalnya,vault-secret.
KMS Thales CipherTrust
Buat dan terapkan manifes untuk resource TdeConfig menggunakan penyedia ciphertrust:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: TdeConfig metadata: name: TDE_CONFIG_NAME spec: kekUrlRef: name: CONFIG_MAP_NAME key: kek_url kmsProvider: ciphertrust: authType: "password" credentialsSecretRef: name: "CREDENTIALS_SECRET_NAME" tls: certSecret: name: "TLS_SECRET_NAME"
Ganti kode berikut:
TDE_CONFIG_NAME: nama resourceTdeConfig.CONFIG_MAP_NAME: nama ConfigMap yang berisikek_url.CREDENTIALS_SECRET_NAME: nama Secret Kubernetes yang berisi kunciusernamedanpasswordCipherTrust Manager Anda—misalnya,ciphertrust-credentials.TLS_SECRET_NAME: nama secret yang berisi sertifikat TLS untuk koneksi CipherTrust Manager—misalnya,ciphertrust-tls-secret.
Men-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.4.0" primarySpec: 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 menambahkan anotasi 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 untuk cache kolom yang tumpah ke SSD, patch 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 setiap metrik.
| Nama | Deskripsi | Label | Unit | Jenis |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
Jumlah blok data yang didekripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
Jumlah blok data yang dienkripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_data_decryption_time_us_total |
Total waktu yang dihabiskan dalam dekripsi blok data. | Tidak berlaku | mikrodetik | penghitung |
alloydb_omni_database_tde_data_encryption_time_us_total |
Total waktu yang dihabiskan dalam enkripsi blok data. | Tidak berlaku | mikrodetik | penghitung |
alloydb_omni_database_tde_enabled |
Status TDE diaktifkan. | Tidak berlaku | pengukur | |
alloydb_omni_database_tde_kek_info |
Informasi KEK TDE. |
|
pengukur | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Jumlah blok sementara yang didekripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
Jumlah blok sementara yang dienkripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
Total waktu yang dihabiskan dalam dekripsi blok sementara. | Tidak berlaku | mikrodetik | penghitung |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Total waktu yang dihabiskan dalam enkripsi blok sementara. | Tidak berlaku | mikrodetik | penghitung |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
Jumlah blok WAL yang didekripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
Jumlah blok WAL yang dienkripsi. | Tidak berlaku | penghitung | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
Total waktu yang dihabiskan dalam dekripsi blok WAL. | Tidak berlaku | mikrodetik | penghitung |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Total waktu yang dihabiskan dalam enkripsi blok WAL. | Tidak berlaku | mikrodetik | penghitung |
tde_chill_cache_blocks_encrypted |
Jumlah blok cache dingin yang dienkripsi. | Tidak berlaku | penghitung | |
tde_chill_cache_blocks_decrypted |
Jumlah blok cache dingin yang didekripsi. | Tidak berlaku | penghitung | |
tde_chill_cache_blocks_total_encryption_time_us |
Total waktu yang dihabiskan dalam enkripsi blok cache dingin. | Tidak berlaku | mikrodetik | penghitung |
tde_chill_cache_blocks_total_decryption_time_us |
Total waktu yang dihabiskan dalam dekripsi blok cache dingin. | Tidak berlaku | mikrodetik | penghitung |
tde_ce_cache_ssd_blocks_encrypted |
Jumlah blok cache kolom yang tumpah ke penyimpanan SSD yang dienkripsi. | Tidak berlaku | penghitung | |
tde_ce_cache_ssd_blocks_decrypted |
Jumlah blok cache kolom yang tumpah ke penyimpanan SSD yang didekripsi. | Tidak berlaku | penghitung | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Total waktu yang dihabiskan untuk mengenkripsi blok cache kolom yang tumpah ke penyimpanan SSD. | Tidak berlaku | mikrodetik | penghitung |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Total waktu yang dihabiskan untuk mendekripsi blok cache kolom yang tumpah ke penyimpanan SSD. | Tidak berlaku | mikrodetik | penghitung |