ה-Operator של AlloyDB Omni Kubernetes מבצע אוטומציה של מחזור החיים של אשכולות של הצפנת נתונים שקופה (TDE) באמצעות המשאב המותאם אישית TdeConfig. במשאב הזה מאוחסנים פרטי החיבור של Key Management Service (KMS), שמאפשרים לאופרטור להחדיר בצורה מאובטחת את פרטי הכניסה הנדרשים ל-pods של מסד הנתונים.
לפני שמתחילים
- מגדירים את מנוע הסודות KV-V2 של HashiCorp Vault כדי לוודא שהנתיב של המפתח להצפנת מפתחות (KEK) ושל אסימון האינטרנט מסוג JSON (JWT) זמינים.
- מוודאים של-AlloyDB Omni יש הרשאה לקרוא את קובץ ה-JSON Web Token (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.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.
יצירת ה-CRD TdeConfig
יוצרים משאב 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. - (אופציונלי)
VAULT_ROLE: תפקיד הלקוח שמוגדר בהגדרות של הכספת. תפקיד הלקוח מאמת את ה-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. | לא רלוונטי | מיקרו-שניות | דלפק |