ה-Operator של AlloyDB Omni Kubernetes מבצע אוטומציה של מחזור החיים של אשכולות של הצפנת נתונים שקופה (TDE) באמצעות המשאב המותאם אישית TdeConfig. המשאב הזה מאחסן את פרטי החיבור של Key Management Service (KMS) ל-HashiCorp Vault או ל-Thales CipherTrust Manager, ומאפשר למפעיל להחדיר באופן מאובטח את פרטי הכניסה הנדרשים לפודים של מסד הנתונים.
לפני שמתחילים
HashiCorp Vault KMS
- מגדירים את מנוע הסודות KV-V2 של HashiCorp Vault כדי לוודא שזמינים נתיב מפתח ההצפנה (KEK) ואסימון האינטרנט מסוג JSON (JWT).
- מוודאים של-AlloyDB Omni יש הרשאה לקרוא את קובץ ה-JSON Web Token (JWT), שהוא אסימון האימות.
-
אופציונלי: כדי לפרוס אשכול עם TDE ב-OpenShift, צריך להקצות את אילוץ הקשר האבטחה (SCC) של
hostmount-anyuidלחשבון השירותDBClusterשמריץ את אשכול מסד הנתונים.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
מחליפים את DBCLUSTER_NAME בשם של
DBClusterואת DBCLUSTER_NAMESPACE במרחב השמות שבו רוצים ליצור את המשאבDBCluster.
Thales CipherTrust KMS
- מגדירים את Thales CipherTrust Manager כדי לוודא שמפתח ההצפנה הסודי (KEK) נוצר וניתן לייצוא.
- מוודאים שיש לכם חשבון משתמש ב-CipherTrust Manager (
usernameו-password) עם הרשאה לאימות ולייצוא של הסוד של ה-KEK. -
אופציונלי: כדי לפרוס אשכול עם הצפנה שקופה של נתונים ב-OpenShift, צריך להעניק את האילוץ
hostmount-anyuidSecurity Context Constraint (SCC) לחשבון השירותDBClusterשמריץ את אשכול מסד הנתונים.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
מחליפים את DBCLUSTER_NAME בשם של
DBClusterואת DBCLUSTER_NAMESPACE במרחב השמות שבו רוצים ליצור את המשאבDBCluster.
הגדרת הגישה ל-KMS
יוצרים את המשאבים ConfigMap ו-Secret של Kubernetes שמכילים את הנתיב של ה-KEK ואת פרטי הכניסה לאימות ב-KMS. חשוב ליצור את המשאבים האלה באותו מרחב שמות שבו אתם מתכננים לפרוס את DBCluster.
HashiCorp Vault KMS
יוצרים משאב ConfigMap שמכיל את כתובת ה-URL של ה-KEK ואת נתיב המארח לטוקן ה-JWT:
apiVersion: v1 kind: ConfigMap metadata: name: CONFIG_MAP_NAME data: kek_url: "KEK_URL" token_path: "JWT_TOKEN_PATH"
מחליפים את מה שכתוב בשדות הבאים:
-
CONFIG_MAP_NAME: השם של ConfigMap. הערכים שמוגדרים ב-kek_urlוב-token_pathמשמשים בהגדרת המשאבTdeConfig. -
KEK_URL: כתובת ה-URL המלאה של KEK ב-HashiCorp Vault. כדי לציין את HashiCorp Vault כספק ה-KMS, משתמשים ב-vaultכפרוטוקול, לדוגמהvault://vault.default.svc:8200/v1/secret/data/alloydb_kek. -
JWT_TOKEN_PATH: הנתיב לאסימון JWT בצומת. לדוגמה:/tmp/token. נתיב הגישה של אסימון ה-JWT חייב להיות זהה בכל הצמתים באשכול.
Thales CipherTrust KMS
יוצרים משאב ConfigMap שמכיל את כתובת ה-URL של ה-KEK ומשאב Secret שמכיל את פרטי הכניסה לאימות של Thales CipherTrust Manager:
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"
מחליפים את מה שכתוב בשדות הבאים:
-
CONFIG_MAP_NAME: השם של ConfigMap. הערך שמוגדר ב-kek_urlמשמש בהגדרת המשאבTdeConfig. -
KEK_URL: כתובת ה-URL המלאה של ה-KEK ב-Thales CipherTrust Manager. כדי לציין את Thales CipherTrust Manager כספק ה-KMS, משתמשים בפרוטוקולciphertrust, לדוגמהciphertrust://ciphertrust.default.svc:443/api/v1/vault/secrets/alloydb_kek. -
CREDENTIALS_SECRET_NAME: השם של הסוד ב-Kubernetes שבו מאוחסנים פרטי הכניסה של CipherTrust Manager, לדוגמהciphertrust-credentials. -
CIPHERTRUST_USERNAME: שם המשתמש שמשמש לאימות מול Thales CipherTrust Manager. -
CIPHERTRUST_PASSWORD: הסיסמה של המשתמש ב-Thales CipherTrust Manager.
יצירת סוד TLS
כדי ליצור סוד TLS לאחסון האישורים לאימות החיבור לשרת KMS (HashiCorp Vault או Thales CipherTrust Manager), מריצים את הפקודות הבאות:
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
מחליפים את מה שכתוב בשדות הבאים:
-
TLS_SECRET_NAME: שם הסוד של TLS (לדוגמה,vault-secretאוciphertrust-tls-secret). משתמשים בשם הסוד הזה כשיוצרים את המשאב המותאם אישיתTdeConfig. -
CLIENT_CERT_FILE: הנתיב לקובץ של אישור ה-TLS של הלקוח (שמאוחסן בתורtls.crtבסוד). -
CLIENT_KEY_FILE: הנתיב לקובץ של המפתח הפרטי של הלקוח ב-TLS (שנשמר כ-tls.keyבסוד). -
CA_CERT_FILE: הנתיב לקובץ האישור של רשות האישורים (CA) שמשמש לאימות האישור של שרת ה-KMS (מאוחסן בתורca.crtבסוד).
יצירת המשאב המותאם אישית TdeConfig
יוצרים משאב TdeConfig שמגדיר איך AlloyDB Omni מתקשר עם ספק KMS חיצוני כדי לאחזר את ה-KEK. חשוב לוודא שאתם יוצרים את המשאב TdeConfig באותו מרחב שמות של המשאב DBCluster.
מוודאים שאפשר להגיע למכונה של KMS דרך הרשת מה-pods של מסד הנתונים.
HashiCorp Vault KMS
מוודאים שלמשתמש postgres יש גישה לנתיב אל טוקן ה-JWT בצומת המארח. יוצרים ומחילים מניפסט למשאב 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"
מחליפים את מה שכתוב בשדות הבאים:
-
TDE_CONFIG_NAME: השם של המשאב ב-TdeConfig. -
CONFIG_MAP_NAME: השם של ה-ConfigMap שנוצר בשלב הקודם. -
JWT_AUTH_MOUNT_PATH: הנתיב שבו מותקן מנוע האימות ב-HashiCorp Vault, כפי שמוגדר בהגדרות האישיות שלכם, לדוגמהauth/kms. - אופציונלי:
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרות של Vault. תפקיד הלקוח מאמת את ה-JWT ומשקף את זכויות הגישה והזהות הספציפיות שמוענקות לתפקיד ב-HashiCorp Vault. -
TLS_SECRET_NAME: השם של הסוד שמכיל את אישורי ה-TLS לחיבור ל-Vault, לדוגמהvault-secret.
Thales CipherTrust KMS
יוצרים ומחילים מניפסט למשאב TdeConfig באמצעות הספק 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"
מחליפים את מה שכתוב בשדות הבאים:
-
TDE_CONFIG_NAME: השם של המשאב ב-TdeConfig. -
CONFIG_MAP_NAME: השם של ה-ConfigMap שמכיל אתkek_url. -
CREDENTIALS_SECRET_NAME: השם של סוד Kubernetes שמכיל את המפתחות של CipherTrust Managerusernameו-password, לדוגמהciphertrust-credentials. -
TLS_SECRET_NAME: שם הסוד שמכיל את אישורי ה-TLS לחיבור CipherTrust Manager, לדוגמהciphertrust-tls-secret.
פריסת ה-DBCluster
יוצרים ומחילים מניפסט כדי ליצור משאב
DBClusterשמפנה למשאבTdeConfig. מידע נוסף על יצירת אשכול מסדי נתונים זמין במאמר יצירת אשכול מסדי נתונים.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.4.0" primarySpec: features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]מחליפים את
TDE_CONFIG_NAMEבשם של המשאבTdeConfigואתDBCLUSTER_NAMEבשם שלDBClusterשרוצים ליצור.אופציונלי: אם אתם פורסים את
DBClusterבסביבת OpenShift, אתם צריכים להוסיף הערה למשאבDBClusterבאמצעות ההערהhostmount-anyuid.kubectl annotate dbclusters.alloydbomni.dbadmin.goog DBCLUSTER_NAME -n DBCLUSTER_NAMESPACE openshift.io/scc=anyuidמחליפים את
DBCLUSTER_NAMEבשם של המשאבDBClusterואתDBCLUSTER_NAMESPACEבמרחב השמות שבו רוצים ליצור את המשאבDBCluster.
כדי להפעיל TDE למטמון טורי שגולש ל-SSD, צריך להחיל תיקון על DBCluster באופן הבא:
kubectl patch dbcluster DBCLUSTER_NAME \
-n DBCLUSTER_NAMESPACE \
-p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
--type=merge
הפניה למדדי 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. | לא רלוונטי | מיקרו-שניות | דלפק |