אתם יכולים לאבטח את הנתונים במצב מנוחה ולהגן על מידע רגיש על ידי הפעלת הצפנת נתונים שקופה (TDE) ב-AlloyDB Omni. במסמך הזה מוסבר איך ליצור אשכול עם הצפנה שקופה של נתונים (TDE) על ידי ציון משתני הסביבה הנדרשים של הכספת והדגל --tde-kek-url במשתנה הסביבה POSTGRES_INITDB_ARGS במהלך אתחול מסד הנתונים.
לפני שמתחילים
- מומלץ לקרוא את המאמר תכנון ההתקנה של AlloyDB Omni.
- כשמתכננים את הפריסה של AlloyDB Omni עם TDE מופעל, חשוב לקחת בחשבון שימוש נוסף במעבד בהתאם לעומס העבודה ולנפח הנתונים הצפויים. הצפנה ופענוח הן פעולות שדורשות הרבה משאבי מחשוב.
- מגדירים את מנוע הסודות KV-V2 של HashiCorp Vault כדי לוודא שנתיב מפתח ההצפנה (KEK) ואסימון האינטרנט מסוג JSON (JWT) זמינים.
- מוודאים של-AlloyDB Omni יש הרשאה לקרוא את קובץ ה-JSON Web Token (JWT), שהוא אסימון האימות.
יצירת האשכול
כדי ליצור אשכול עם TDE, צריך להעביר את ההגדרות הנדרשות של שירות ניהול המפתחות (KMS) ואת פרטי האימות במהלך האתחול של מסד הנתונים. סוג האימות הנתמך היחיד הוא jwt.
התקנת AlloyDB Omni באמצעות RPM כדי להכין את הסביבה ולהתקין את חבילת ה-RPM של AlloyDB Omni.
מפעילים את מסד הנתונים.
HashiCorp Vault KMS
מומלץ להשתמש בגישה הזו לעומסי עבודה בסביבת ייצור.
מריצים את הפקודה הבאה כדי לאתחל את מסד הנתונים עם 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/alloydbomniproduct_major_version_numeric-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: תפקיד הלקוח שמוגדר בהגדרת הכספת ומאפשר ל-HashiCorp Vault לאמת את האותנטיות של אסימון ה-JWT. -
VAULT_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור לכספת בצמתים שלכם. לדוגמה,/tde-tls. אם לא מגדירים את המדיניות, המערכת משתמשת באישורים במאגר האישורים שמוגדר כברירת מחדל. -
KEK_URL: כתובת ה-URL המלאה של KEK ב-HashiCorp Vault. משתמשים ב-vaultכפרוטוקול כדי לציין את HashiCorp Vault כספק KMS – לדוגמה,vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek.
-
כדי ליצור קובץ החלפה בשביל
alloydbomni18.serviceב-/etc/systemd/system/alloydbomni18.service.d/override.conf, מוסיפים את השורות הבאות לקובץoverride.conf:[Service] Environment="VAULT_AUTH_TYPE=VAULT_AUTH_TYPE" 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"
מחליפים את מה שכתוב בשדות הבאים:
-
VAULT_AUTH_TYPE: סוג האימות שמשמש לחיבור לכספת. יש תמיכה רק ב-jwt. -
JWT_AUTH_ENGINE_MOUNT: הנתיב שבו מותקן מנוע האימות של HashiCorp Vault, לדוגמה/auth/jwt. -
JWT_FILE_PATH: הנתיב שבו אסימון ה-JWT של Vault מאוחסן בצמתים. לדוגמה:tde-tls/jwt-token. - (אופציונלי)
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרת הכספת ומאפשר ל-HashiCorp Vault לאמת את האותנטיות של אסימון ה-JWT. -
VAULT_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור לכספת בצמתים שלכם. לדוגמה,/tde-tls. אם לא מגדירים את המדיניות, המערכת משתמשת באישורים במאגר האישורים שמוגדר כברירת מחדל.
-
כדי להחיל את השינויים, צריך לטעון מחדש את ה-daemon של systemd.
sudo systemctl daemon-reload
KMS מבוסס-קובץ
הגישה הזו מיועדת למטרות בדיקה בלבד.
כדי לבדוק TDE באופן מקומי באמצעות מפתח מבוסס-קובץ, קודם צריך ליצור KEK של 32 בייט במחשב.
יוצרים את הספרייה, יוצרים את המפתח ומגדירים את ההרשאות המתאימות.
KEK_DIR=KEK_DIR mkdir -p $KEK_DIR sudo chown 999:999 $KEK_DIR openssl rand -base64 32 | sudo tee $KEK_DIR/key sudo chmod 0755 $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/alloydbomniproduct_major_version_numeric-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 |
מידע על KEK של TDE. |
|
מד | |
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 |
מספר הבלוקים במטמון המקורר שהוצפנו. | לא רלוונטי | דלפק | |
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. | לא רלוונטי | מיקרו-שניות | דלפק |