במאמר הזה מוסבר איך להגדיר אימות לתקשורת בין צמתים של Cassandra ובין לקוחות לצמתים של Cassandra.
איך מגדירים TLS ל-Cassandra במישור זמן הריצה
Cassandra מספקת תקשורת מאובטחת בין מכונת לקוח לבין אשכול מסדי נתונים, ובין צמתים באשכול. הפעלת ההצפנה מבטיחה שהנתונים בזמן ההעברה לא ייפגעו ויועברו בצורה מאובטחת. ב-Apigee hybrid, TLS מופעל כברירת מחדל לכל תקשורת בין צמתי Cassandra ובין לקוחות לצמתי Cassandra.
אפשר להגדיר את האימות באמצעות שילובים של שם משתמש וסיסמה, או להוסיף אותם ל-Kubernetes Secret, כמו שמוסבר בנושא הזה.
מידע על אימות משתמשים ב-Cassandra
פלטפורמת הכלאיים משתמשת ב-Cassandra כמאגר הנתונים של העורף (backend) לנתוני מישור זמן הריצה. כברירת מחדל, כל התקשורת של הלקוח עם Cassandra דורשת אימות. יש שלושה משתמשים שמשמשים לקוחות שמתקשרים עם Cassandra. למשתמשים האלה מסופקות סיסמאות ברירת מחדל, ולא צריך לשנות אותן.
המשתמשים האלה, כולל משתמש ברירת מחדל, מתוארים בהמשך:
- משתמש DML: משמש את תקשורת הלקוח לקריאה ולכתיבה של נתונים ב-Cassandra (KMS, KVM, Cache ו-Quota).
- משתמש DDL: משמש את MART לכל משימות הגדרת הנתונים, כמו יצירה, עדכון ומחיקה של מרחב מפתחות.
- משתמש אדמין: משמש לכל פעילות אדמיניסטרטיבית שמבוצעת באשכול cassandra.
- משתמש ברירת מחדל של Cassandra: Cassandra יוצרת משתמש ברירת מחדל כשהאימות מופעל ושם המשתמש הוא
cassandra - משתמש JMX: משמש לאימות ולתקשורת עם ממשק Cassandra JMX.
- משתמש Jolokia: משמש לאימות ולתקשורת עם Cassandra JMX API.
שינוי סיסמאות ברירת המחדל בקובץ ההחלפות
Apigee hybrid מספק סיסמאות ברירת מחדל למשתמשי Cassandra. אם רוצים לשנות את סיסמאות ברירת המחדל של המשתמשים, אפשר לעשות זאת בקובץ overrides.yaml. מוסיפים את ההגדרה הבאה, משנים את סיסמאות ברירת המחדל (iloveapis123) לפי הצורך ומחילים את השינוי על האשכול.
cassandra:
auth:
default: ## the password for the new default user (static username: cassandra)
password: "iloveapis123"
admin: ## the password for the admin user (static username: admin_user)
password: "iloveapis123"
ddl: ## the password for the DDL User (static username: ddl_user)
password: "iloveapis123"
dml: ## the password for the DML User (static username: dml_user)
password: "iloveapis123"
jmx:
username: "jmxuser" ## the username for the JMX User
password: "iloveapis123" ## the password for the JMX User
jolokia:
username: "jolokiauser" ## the username to access jolokia interface
password: "iloveapis123" ## the password for jolokia userשימו לב לנקודות הבאות:
- אין תמיכה ברוטציה של רשות אישורים (CA).
- אין תמיכה באישור שרת שנוצר באמצעות ביטוי גישה.
הגדרת שמות משתמש וסיסמאות ב-Kubernetes Secret
בקטע הזה מוסבר איך להגדיר את Cassandra כך שישתמש ב-Kubernetes Secrets לאימות.
יצירת הסוד
משתמשים בתבנית הבאה כדי להגדיר את הסוד של Kubernetes. שומרים את התבנית בקובץ ועורכים את המאפיינים הנדרשים. הערה: אם משתמשים באפשרות הזו, צריך לספק את שמות המשתמשים עם כל סיסמה.
apiVersion: v1 kind: Secret metadata: name: $SECRET_NAME namespace: $APIGEE_NAMESPACE type: Opaque data: default.password: $PASSWORD #base64-encoded string admin.user: $USERNAME #base64-encoded string admin.password: $PASSWORD #base64-encoded string dml.user: $USERNAME #base64-encoded string dml.password: $PASSWORD #base64-encoded string ddl.user: $USERNAME #base64-encoded string ddl.password: $PASSWORD #base64-encoded string jmx.user: $USERNAME #base64-encoded string jmx.password: $PASSWORD #base64-encoded string jolokia.user: $USERNAME #base64-encoded string jolokia.password: $PASSWORD #base64-encoded string
כאשר $SECRET_NAME הוא השם שבחרתם לסוד, $APIGEE_NAMESPACE הוא מרחב השמות שבו פודים של Apigee נפרסים (ברירת המחדל היא apigee), ו-$USERNAME ו-$PASSWORD הם שמות המשתמש והסיסמאות של כל משתמש. חשוב לשים לב ששם המשתמש והסיסמה חייבים להיות בקידוד Base64.
מחילים את הסוד על האשכול. לדוגמה:
kubectl apply -f $SECRET_FILE
מוסיפים את הסוד לקובץ השינויים:
cassandra:
auth:
secret: $SECRET_NAMEמחילים את ההחלפה המעודכנת של Cassandra על האשכול:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --datastore
בדיקת היומנים של Cassandra
בודקים את היומנים מיד אחרי הפעלת Cassandra. בלוג שלמטה אפשר לראות שהחיבורים של לקוח Cassandra מוצפנים.
kubectl logs apigee-cassandra-2 -n apigee -f INFO 00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)... INFO 00:44:36 Binding thrift service to /10.0.2.12:9160 INFO 00:44:36 enabling encrypted thrift connections between client and server INFO 00:44:36 Listening for thrift clients...