יצירת אשכול עם TDE

בוחרים גרסת תיעוד:

אתם יכולים לאבטח את הנתונים במצב מנוחה ולהגן על מידע רגיש על ידי הפעלת הצפנת נתונים שקופה (TDE) ב-AlloyDB Omni. במסמך הזה מוסבר איך ליצור אשכול עם הצפנת TDE על ידי ציון משתני הסביבה הנדרשים של Key Management Service ‏ (KMS) (בשביל HashiCorp Vault או Thales CipherTrust Manager) והדגל --tde-kek-url במשתנה הסביבה POSTGRES_INITDB_ARGS במהלך אתחול מסד הנתונים.

לפני שמתחילים

HashiCorp Vault KMS

Thales CipherTrust KMS

  • מגדירים את Thales CipherTrust Manager כדי לוודא שהמפתח הסודי להצפנת מפתחות (KEK) נוצר וניתן לייצוא.
  • מוודאים שיש לכם חשבון משתמש ב-CipherTrust Manager (username ו-password) עם הרשאה לאימות ולייצוא של הסוד של ה-KEK.

יצירת האשכול

כדי ליצור אשכול עם TDE, צריך להעביר את הגדרות Key Management Service‏ (KMS) הנדרשות ואת פרטי הכניסה לאימות במהלך האיניציאליזציה של מסד הנתונים. פועלים לפי ההוראות בקטע HashiCorp Vault KMS (באמצעות אימות jwt) או בקטע Thales CipherTrust KMS (באמצעות אימות של שם משתמש וסיסמה).

HashiCorp Vault KMS

בוחרים את הכרטיסייה של זמן הריצה של מאגר התגים כדי לאתחל את AlloyDB Omni באמצעות HashiCorp Vault.

Docker

docker run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \
-e VAULT_AUTH_TYPE=jwt \
-e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
-e VAULT_JWT_PATH=JWT_FILE_PATH \
-e VAULT_ROLE=VAULT_ROLE \
-e VAULT_CERT_PATH=VAULT_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \
-e VAULT_AUTH_TYPE=jwt \
-e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
-e VAULT_JWT_PATH=JWT_FILE_PATH \
-e VAULT_ROLE=VAULT_ROLE \
-e VAULT_CERT_PATH=VAULT_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \
-e VAULT_AUTH_TYPE=jwt \
-e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
-e VAULT_JWT_PATH=JWT_FILE_PATH \
-e VAULT_ROLE=VAULT_ROLE \
-e VAULT_CERT_PATH=VAULT_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \
-e VAULT_AUTH_TYPE=jwt \
-e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
-e VAULT_JWT_PATH=JWT_FILE_PATH \
-e VAULT_ROLE=VAULT_ROLE \
-e VAULT_CERT_PATH=VAULT_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

מחליפים את מה שכתוב בשדות הבאים:

  • ‫CONTAINER_NAME: השם של מאגר התגים שרוצים ליצור. לדוגמה, alloydb-tde.
  • ‫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_ON_DISK: הנתיב לאישורי Vault במחשב המארח. לדוגמה, /local/vault/config.
  • ‫VAULT_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור ל-Vault בקונטיינר. לדוגמה, /tde-tls. אם לא מגדירים את המדיניות, המערכת תשתמש באישורים במאגר האישורים שמוגדר כברירת מחדל.
  • ‫KEK_URL: כתובת ה-URL המלאה של KEK ב-HashiCorp Vault. כדי לציין את HashiCorp Vault כספק ה-KMS, משתמשים ב-vault כפרוטוקול, לדוגמה vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
  • ‫IMAGE_TAG: משתמשים ב-18.4.0 בשביל קובץ האימג' העדכני של Debian או ב-18.4.0-ubi בשביל קובץ האימג' העדכני של UBI.

Thales CipherTrust KMS

כדי להפעיל את AlloyDB Omni עם Thales CipherTrust Manager, בוחרים את הכרטיסייה של סביבת זמן הריצה של הקונטיינר.

Docker

docker run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
-e POSTGRES_INITDB_ARGS=" \
--tde-kek-url=KEK_URL" \
google/alloydbomni:IMAGE_TAG

מחליפים את מה שכתוב בשדות הבאים:

  • ‫CONTAINER_NAME: השם של מאגר התגים שרוצים ליצור. לדוגמה, alloydb-tde.
  • ‫DATA_DIR: הספרייה המקומית שרוצים לטעון כנפח הנתונים של AlloyDB Omni. לדוגמה, /local/data.
  • ‫CIPHERTRUST_USERNAME: שם המשתמש שמשמש לאימות באמצעות Thales CipherTrust Manager.
  • ‫CIPHERTRUST_PASSWORD: הסיסמה של המשתמש ב-Thales CipherTrust Manager.
  • ‫CIPHERTRUST_CERT_PATH_ON_DISK: הנתיב לאישורי ה-TLS של CipherTrust Manager במכונה המארחת. לדוגמה, /local/ciphertrust/certs.
  • ‫CIPHERTRUST_CERT_PATH: הנתיב שבו נמצאים האישורים לחיבור ל-CipherTrust Manager‏ (ca.crt,‏ tls.crt ו-tls.key) בקונטיינר. לדוגמה, /tde-tls. אם המדיניות לא מוגדרת, המערכת תשתמש באישורים שבמאגר האישורים שמוגדר כברירת מחדל.
  • ‫KEK_URL: כתובת ה-URL המלאה של ה-KEK ב-Thales CipherTrust Manager. כדי לציין את Thales CipherTrust Manager כספק ה-KMS, משתמשים ב-ciphertrust כפרוטוקול, לדוגמה: ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
  • ‫IMAGE_TAG: משתמשים ב-18.4.0 בשביל קובץ האימג' העדכני של Debian או ב-18.4.0-ubi בשביל קובץ האימג' העדכני של UBI.

כדי להפעיל 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.
  • ‫kek_version: הגרסה של ה-KEK שמשמשת לאריזת המפתח.
  • ‫kek_url: הנתיב המלא ל-KEK ב-KMS.
  • ‫kek_creation_timestamp: זמן היצירה של גרסת ה-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 מספר הבלוקים במטמון המצב הקריר שמוצפנים. לא רלוונטי מונה
tde_chill_cache_blocks_decrypted מספר הבלוקים במטמון המקורר שפוענחו. לא רלוונטי מונה
tde_chill_cache_blocks_total_encryption_time_us הזמן הכולל שחלף בהצפנת בלוקים של מטמון במצב לא פעיל. לא רלוונטי מיקרו-שניות דלפק
tde_chill_cache_blocks_total_decryption_time_us הזמן הכולל שהושקע בפענוח של בלוק המטמון של Chill. לא רלוונטי מיקרו-שניות מונה
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. לא רלוונטי מיקרו-שניות דלפק