אתם יכולים לאבטח את הנתונים במצב מנוחה ולהגן על מידע רגיש על ידי הפעלת הצפנת נתונים שקופה (TDE) ב-AlloyDB Omni. במסמך הזה מוסבר איך ליצור אשכול עם הצפנת TDE על ידי ציון משתני הסביבה הנדרשים של Key Management Service (KMS) (בשביל HashiCorp Vault או Thales CipherTrust Manager) והדגל --tde-kek-url במשתנה הסביבה POSTGRES_INITDB_ARGS במהלך אתחול מסד הנתונים.
לפני שמתחילים
HashiCorp Vault KMS
- קוראים את המאמר תכנון ההתקנה של AlloyDB Omni.
- כשמתכננים את הפריסה של AlloyDB Omni עם TDE מופעל, צריך להביא בחשבון שימוש נוסף ב-CPU על סמך עומס העבודה ונפח הנתונים הצפויים. הצפנה ופענוח הן פעולות שדורשות משאבי מחשוב רבים.
- מגדירים את מנוע הסודות KV-V2 של HashiCorp Vault כדי לוודא שזמינים נתיב מפתח ההצפנה (KEK) ואסימון האינטרנט מסוג JSON (JWT).
- מוודאים של-AlloyDB Omni יש הרשאה לקרוא את קובץ ה-JSON Web Token (JWT), שהוא אסימון האימות.
Thales CipherTrust KMS
- קוראים את המאמר תכנון ההתקנה של AlloyDB Omni.
- כשמתכננים את הפריסה של AlloyDB Omni עם TDE מופעל, צריך להביא בחשבון שימוש נוסף ב-CPU על סמך עומס העבודה ונפח הנתונים הצפויים. הצפנה ופענוח הן פעולות שדורשות משאבי מחשוב רבים.
- מגדירים את Thales CipherTrust Manager כדי לוודא שהמפתח הסודי להצפנת מפתחות (KEK) נוצר וניתן לייצוא.
- מוודאים שיש לכם חשבון משתמש ב-CipherTrust Manager (
usernameו-password) עם הרשאה לאימות ולייצוא של הסוד של ה-KEK.
יצירת האשכול
כדי ליצור אשכול עם TDE, צריך להעביר את ההגדרות הנדרשות של שירות ניהול המפתחות (KMS) ואת פרטי כניסה לאימות במהלך האתחול של מסד הנתונים. אתם יכולים להגדיר את HashiCorp Vault (באמצעות אימות jwt) או את Thales CipherTrust Manager (באמצעות אימות של שם משתמש וסיסמה).
מתקינים את AlloyDB Omni באמצעות RPM כדי להכין את הסביבה ולהתקין את חבילת ה-RPM של AlloyDB Omni.
מאתחלים את מסד הנתונים.
HashiCorp Vault KMS
הגישה הזו מתאימה לעומסי עבודה בסביבת ייצור עם HashiCorp Vault.
מריצים את הפקודה הבאה כדי לאתחל את מסד הנתונים עם TDE מופעל:
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ VAULT_AUTH_TYPE=jwt \ VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ VAULT_JWT_PATH=JWT_FILE_PATH \ VAULT_ROLE=VAULT_ROLE \ VAULT_CERT_PATH=VAULT_CERT_PATH \ POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
מחליפים את מה שכתוב בשדות הבאים:
-
POSTGRES_PASSWORD: הסיסמה של המשתמש במסד הנתונים. -
DATA_DIR: הספרייה המקומית שרוצים לטעון בתור נפח הנתונים של AlloyDB Omni, לדוגמה/local/data. -
JWT_AUTH_ENGINE_MOUNT: הנתיב שבו מותקן מנוע האימות של HashiCorp Vault, לדוגמה/auth/jwt. -
JWT_FILE_PATH: הנתיב שבו אסימון ה-JWT של Vault מאוחסן בצמתים. לדוגמה:/tde-tls/jwt-token. - אופציונלי:
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרות של Vault, שמאפשר ל-HashiCorp Vault לאמת את האותנטיות של אסימון ה-JWT. -
VAULT_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור ל-Vault בצמתים שלכם. לדוגמה:/tde-tls. אם לא מגדירים את המדיניות, המערכת משתמשת באישורים במאגר האישורים שמוגדר כברירת מחדל. -
KEK_URL: כתובת ה-URL המלאה של ה-KEK ב-HashiCorp Vault. משתמשים ב-vaultכפרוטוקול כדי לציין את HashiCorp Vault כספק KMS – לדוגמה,vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
-
כדי ליצור קובץ החלפה ל-
alloydbomni18.serviceב-/etc/systemd/system/alloydbomni18.service.d/override.conf, מוסיפים את השורות הבאות לקובץoverride.conf:[Service] Environment="VAULT_AUTH_TYPE=jwt" Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT" Environment="VAULT_JWT_PATH=JWT_FILE_PATH" Environment="VAULT_ROLE=VAULT_ROLE" Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"
מחליפים את מה שכתוב בשדות הבאים:
-
JWT_AUTH_ENGINE_MOUNT: הנתיב שבו מותקן מנוע האימות של HashiCorp Vault, לדוגמה/auth/jwt. -
JWT_FILE_PATH: הנתיב שבו אסימון ה-JWT של Vault מאוחסן בצמתים. לדוגמה:/tde-tls/jwt-token. - אופציונלי:
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרות של Vault, שמאפשר ל-HashiCorp Vault לאמת את האותנטיות של אסימון ה-JWT. -
VAULT_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור ל-Vault בצמתים שלכם, לדוגמה/tde-tls. אם המדיניות לא מוגדרת, המערכת תשתמש באישורים שבמאגר האישורים המהימנים שמוגדר כברירת מחדל.
-
כדי להחיל את השינויים, טוענים מחדש את ה-daemon של systemd.
sudo systemctl daemon-reload
Thales CipherTrust KMS
אפשר להשתמש בגישה הזו לעומסי עבודה בסביבת ייצור עם Thales CipherTrust Manager.
מריצים את הפקודה הבאה כדי לאתחל את מסד הנתונים עם TDE מופעל:
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
מחליפים את מה שכתוב בשדות הבאים:
-
POSTGRES_PASSWORD: הסיסמה של המשתמש במסד הנתונים. -
DATA_DIR: הספרייה המקומית שרוצים לטעון בתור נפח הנתונים של AlloyDB Omni, לדוגמה/local/data. -
CIPHERTRUST_USERNAME: שם המשתמש שמשמש לאימות ב-Thales CipherTrust Manager. -
CIPHERTRUST_PASSWORD: הסיסמה של המשתמש ב-Thales CipherTrust Manager. -
CIPHERTRUST_CERT_PATH: הנתיב שבו נמצאים האישורים (ca.crt,tls.crtו-tls.key) לחיבור של CipherTrust Manager בצמתים, לדוגמה/tde-tls. אם לא מגדירים את המדיניות, המערכת משתמשת באישורים במאגר האישורים שמוגדר כברירת מחדל. -
KEK_URL: כתובת ה-URL המלאה של ה-KEK ב-Thales CipherTrust Manager. משתמשים ב-ciphertrustכפרוטוקול כדי לציין את Thales CipherTrust Manager כספק KMS – לדוגמה,ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
-
כדי ליצור קובץ שינוי ל-
alloydbomni18.serviceב-/etc/systemd/system/alloydbomni18.service.d/override.conf, מוסיפים את הטקסט הבא לקובץoverride.conf:[Service] Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME" Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD" Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"
מחליפים את מה שכתוב בשדות הבאים:
-
CIPHERTRUST_USERNAME: שם המשתמש שמשמש לאימות מול Thales CipherTrust Manager. -
CIPHERTRUST_PASSWORD: הסיסמה של המשתמש ב-Thales CipherTrust Manager. -
CIPHERTRUST_CERT_PATH: הנתיב שבו נמצאים האישורים (ca.crt,tls.crtו-tls.key) לחיבור של CipherTrust Manager בצמתים, לדוגמה/tde-tls. אם לא מגדירים את המדיניות, המערכת משתמשת באישורים במאגר האישורים שמוגדר כברירת מחדל.
-
כדי להחיל את השינויים, טוענים מחדש את ה-daemon של systemd.
sudo systemctl daemon-reload
KMS מבוסס-קבצים
השיטה הזו מיועדת למטרות בדיקה בלבד.
כדי לבדוק את TDE באופן מקומי באמצעות מפתח מבוסס-קובץ, קודם צריך ליצור KEK של 32 בייט במחשב.
יוצרים את הספרייה, יוצרים את המפתח ומגדירים את ההרשאות המתאימות.
KEK_DIR=KEK_DIR sudo mkdir -p $KEK_DIR openssl rand -base64 32 | sudo tee $KEK_DIR/key >/dev/null sudo chown -R postgres:postgres $KEK_DIR sudo chmod 0700 $KEK_DIR sudo chmod 0600 $KEK_DIR/key
מאתחלים את מסד הנתונים על ידי העברת ה-URI של הקובץ המקומי בתור כתובת ה-URL של ה-KEK.
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
מחליפים את מה שכתוב בשדות הבאים:
-
POSTGRES_PASSWORD: הסיסמה של המשתמש במסד הנתונים. -
DATA_DIR: הספרייה המקומית שרוצים לטעון בתור נפח הנתונים של AlloyDB Omni, לדוגמה/local/data. -
KEK_DIR: הספרייה שבה מאוחסן ה-KEK המקומי שמבוסס על קבצים, לדוגמה/tmp/alloydb/kms.
-
אחרי שמסד הנתונים מאותחל, פועלים לפי ההוראות במאמר התקנת AlloyDB Omni באמצעות RPM כדי להכין את מסד הנתונים, להגדיר את המארח ולהפעיל את השירות
systemd.כדי להפעיל TDE לנתוני מטמון של מנוע מבוסס-עמודות שמועברים לאחסון SSD, מתחברים למכונה של מסד הנתונים ומריצים את השאילתה הבאה:
ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';כדי שהשינויים ייכנסו לתוקף, צריך להפעיל מחדש את שרת מסד הנתונים.
הפניה למדדי TDE
אפשר לראות את כל מדדי ה-TDE בסוכן המעקב של AlloyDB Omni. בטבלה הבאה מתוארים כל המדדים.
| שם | תיאור | תווית | יחידה | סוג |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
מספר בלוקי הנתונים שפוענחו. | לא רלוונטי | מונה | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
מספר בלוקי הנתונים המוצפנים. | לא רלוונטי | מונה | |
alloydb_omni_database_tde_data_decryption_time_us_total |
משך הזמן הכולל שנדרש לפענוח של בלוק הנתונים. | לא רלוונטי | מיקרו-שניות | מונה |
alloydb_omni_database_tde_data_encryption_time_us_total |
הזמן הכולל שהוקדש להצפנת בלוק הנתונים. | לא רלוונטי | מיקרו-שניות | מונה |
alloydb_omni_database_tde_enabled |
סטטוס ההפעלה של TDE. | לא רלוונטי | תחנה הידרומטרית | |
alloydb_omni_database_tde_kek_info |
מידע על TDE KEK. |
|
תחנה הידרומטרית | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
מספר הבלוקים הזמניים שפוענחו. | לא רלוונטי | דלפק | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
מספר החסימות הזמניות המוצפנות. | לא רלוונטי | דלפק | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
הזמן הכולל שחלף מאז שההצפנה של הבלוק הזמני הוסרה. | לא רלוונטי | מיקרו-שניות | דלפק |
alloydb_omni_database_tde_temp_encryption_time_us_total |
הזמן הכולל שחלף מאז ההצפנה הזמנית של הבלוק. | לא רלוונטי | מיקרו-שניות | מונה |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
מספר בלוקי ה-WAL שפוענחו. | לא רלוונטי | מונה | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
מספר בלוקי ה-WAL שהוצפנו. | לא רלוונטי | דלפק | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
הזמן הכולל שחלף בפענוח של בלוק WAL. | לא רלוונטי | מיקרו-שניות | דלפק |
alloydb_omni_database_tde_wal_encryption_time_us_total |
משך הזמן הכולל של הצפנת בלוקים של WAL. | לא רלוונטי | מיקרו-שניות | מונה |
tde_chill_cache_blocks_encrypted |
מספר הבלוקים המוצפנים במטמון ה-chill. | לא רלוונטי | מונה | |
tde_chill_cache_blocks_decrypted |
מספר הבלוקים של המטמון שפוענחו. | לא רלוונטי | דלפק | |
tde_chill_cache_blocks_total_encryption_time_us |
הזמן הכולל שחלף בהצפנת בלוקים של מטמון במצב לא פעיל. | לא רלוונטי | מיקרו-שניות | דלפק |
tde_chill_cache_blocks_total_decryption_time_us |
הזמן הכולל שחלף בפענוח של בלוקים במטמון במצב רגוע. | לא רלוונטי | מיקרו-שניות | מונה |
tde_ce_cache_ssd_blocks_encrypted |
מספר בלוקים של מטמון טורי שנשפכו לאחסון SSD שהוצפן. | לא רלוונטי | דלפק | |
tde_ce_cache_ssd_blocks_decrypted |
מספר בלוקים של מטמון טורי שנשפכו לאחסון SSD ופוענחו. | לא רלוונטי | מונה | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
הזמן הכולל שנדרש להצפנת בלוקים של מטמון עמודות שגולשים לאחסון SSD. | לא רלוונטי | מיקרו-שניות | דלפק |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
משך הזמן הכולל שנדרש לפענוח בלוקים של מטמון טורי שהועברו לאחסון SSD. | לא רלוונטי | מיקרו-שניות | דלפק |