האופרטור AlloyDB Omni Kubernetes מבצע אוטומציה של מחזור החיים של אשכולות של הצפנת נתונים שקופה (TDE) באמצעות המשאב המותאם אישית TdeConfig. המשאב הזה מאחסן את פרטי החיבור של Key Management Service (KMS), ומאפשר למפעיל להחדיר בצורה מאובטחת את פרטי הכניסה הנדרשים ל-pods של מסד הנתונים.
לפני שמתחילים
- מגדירים את מנוע הסודות KV-V2 של HashiCorp Vault כדי לוודא שנתיב מפתח ההצפנה (KEK) ואסימון האינטרנט מסוג JSON (JWT) זמינים.
- מוודאים של-AlloyDB Omni יש הרשאה לקרוא את קובץ ה-JWT.
אופציונלי: כדי לפרוס אשכול עם TDE ב-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.
הגדרת גישה לכספת
יוצרים משאב סודי שמכיל את הנתיב של KEK ואת פרטי האימות.
apiVersion: v1
kind: ConfigMap
metadata:
name: CONFIG_MAP_NAME
data:
kek_url: "KEK_URL"
token_path: "JWT_TOKEN_PATH"
מחליפים את מה שכתוב בשדות הבאים:
-
CONFIG_MAP_NAME: השם של מפת ההגדרות. הערכים שמוגדרים ב-kek_urlוב-token_pathמשמשים בהגדרת המשאבTdeConfig. -
KEK_URL: כתובת ה-URL המלאה של מפתח ה-KEK ב-HashiCorp Vault. משתמשים ב-vaultכפרוטוקול כדי לציין את HashiCorp Vault כספק KMS – לדוגמה,vault.vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek -
JWT_TOKEN_PATH: הנתיב לאסימון JWT בצומת. לדוגמה,/tmp/token. נתיב הגישה של אסימון ה-JWT צריך להיות זהה בכל הצמתים באשכול.
יצירת סוד TLS
כדי ליצור סוד TLS לאחסון האישורים, מריצים את הפקודות הבאות:
kubectl create secret tls VAULT_SECRET_NAME \
--cert=vault.crt \
--key=vault.key
kubectl patch secret VAULT_SECRET_NAME \
-p '{"data":{"ca.crt":"'$(base64 -w 0 vault.crt)'"}}' \
--type=merge
מחליפים את VAULT_SECRET_NAME בשם של ה-Secret של TLS.
משתמשים בשם הסוד הזה כשיוצרים את TdeConfig המשאב המותאם אישית.
יצירת TdeConfig CRD
יוצרים משאב TdeConfig שמגדיר איך AlloyDB Omni מתקשר עם הכספת כדי לאחזר את מפתח הצפנה של מפתח. סוג האימות הנתמך היחיד הוא jwt. חשוב לוודא שיוצרים את המשאב TdeConfig באותו מרחב שמות שבו נוצר המשאב DbCluster.
מוודאים שלמשתמש postgres יש גישה לנתיב של אסימון ה-JWT, ושאפשר להגיע למופע של הכספת דרך הרשת.
כדי ליצור את משאב TdeConfig, פועלים לפי השלבים הבאים:
יוצרים ומחילים קובץ מניפסט עבור המשאב 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: "VAULT_SECRET_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
TDE_CONFIG_NAME: השם של משאבTdeConfig. -
JWT_AUTH_MOUNT_PATH: הנתיב שבו מותקן מנוע האימות ב-HashiCorp Vault, כפי שמוגדר בתצורה. לדוגמה,auth/kms. - (Optional)
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרות של Vault. תפקיד הלקוח מאמת את ה-JWT ומשקף את זכויות הגישה והזהות הספציפיות שהתפקיד מקבל ב-HashiCorp Vault. -
VAULT_SECRET_NAME: השם של הסוד שמכיל את האישורים לחיבור לכספת. לדוגמה,vault-secret.
פריסת ה-DBCluster
יוצרים מניפסט ומחילים אותו כדי ליצור משאב
DBClusterשמפנה למשאבTdeConfig. מידע נוסף על יצירת אשכול מסדי נתונים זמין במאמר יצירת אשכול מסדי נתונים.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.3.0" 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 |
פרטי 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. | לא רלוונטי | מיקרו-שניות | מונה |