שימוש בסודות לאחסון מידע אישי רגיש
אתם יכולים להשתמש בסוד כדי לאחסן באשכול GKE מידע רגיש על הגדרות אישיות, כמו סיסמאות ומפתחות גישה. בדף הזה מוסבר איך Config Connector משתמש בערכי Secret כשמגדירים את המשאבים של Google Cloud .
סקירה כללית
בקטע הזה מוסבר איך להשתמש בסודות עם Config Connector.
אבטחה והצפנה של סודות במנוחה
מכיוון שהסודות של Kubernetes מכילים פרטי כניסה רגישים ומחרוזות חיבור, צריך להפעיל באשכול הצפנת סודות בשכבת האפליקציה. כברירת מחדל, GKE מצפין סודות במנוחה. הצפנת סודות בשכבת האפליקציה מוסיפה עוד שכבת אבטחה באמצעות הצפנת מעטפה של Cloud Key Management Service.
בנוסף, כדאי להשתמש בבקרת גישה מבוססת-תפקידים (RBAC) כדי להגביל את הרשאת הקריאה של סודות רק לאדמינים מורשים של אשכולות. צריך להחיל את אותה הגבלה על משאבי Config Connector שמאחסנים ערכים רגישים בשדות status שלהם, כמו IAMServiceAccountKey.
שימוש ב-Secret כשיוצרים משאב
אתם יכולים להשתמש בנתונים שבתוך Secret כשאתם יוצרים משאב. במאמר העברת סוד למשאב, אתם יוצרים סוד שמכיל סיסמה, ואז מפנים לסוד של משתמש במסד נתונים של Cloud SQL.
עדכון סודות
כשמחילים עדכון על Secret, Config Connector מעדכן את המשאב בפעם הבאה שהוא מתאים את המצב הרצוי. לדוגמה, אם מעדכנים את הסוד שמשמש כסיסמה ל-SQLUser, Config Connector יעדכן את סיסמת המשתמש.
מחיקת סודות
אם מוחקים סוד שמשאב משתמש בו, Config Connector לא יסיר את ההפניה של המשאב לסוד. לדוגמה, אם יוצרים SQLUser עם סיסמה שמפנה ל-Secret ואז מוחקים את ה-Secret, הסיסמה תישאר ב-SQLUser.
פתרון בעיות
אם יוצרים משאב שמפנה לסוד שלא קיים, Config Connector יוצר אירוע מסוג DependencyNotFound או DependencyInvalid.
סודות ומרחבי שמות של Kubernetes
ב-Kubernetes אי אפשר לגשת לסודות במרחבי שמות שונים. לכן, אם אתם משתמשים באותו ערך סודי למשאבים ממרחבי שמות שונים, אתם צריכים להחיל סודות בכל מרחב שמות.
העברת סוד למשאב
בקטע הזה תיצרו שרת Cloud SQL ותגדירו את סיסמת ברירת המחדל של המשתמש באמצעות סוד.
לפני שמתחילים
כדי לבצע את השלבים האלה, צריך:
- Config Connector מותקן באשכול Kubernetes
Cloud SQL Admin API מופעל בפרויקט. כדי לוודא שה-API מופעל, מריצים את הפקודה הבאה של
gcloud:gcloud services list --filter=sqladmin.googleapis.comאם הפקודה מדפיסה את הערך
Listed 0 items., צריך להפעיל את ה-API. אפשר להפעיל את ה-API באמצעות Config Connector ו-Resource Manager API, או באמצעות פקודתgcloud.
Service Usage API
- Config Connector משתמש ב-Service Usage API כדי להפעיל ממשקי API של שירותים. כדי לבצע את השלבים האלה, צריך להפעיל את ה-API של Service Usage. אפשר להפעיל את ה-API הזה באמצעות Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
מעתיקים את קוד ה-YAML הבא לקובץ בשם
enable-sql.yamlapiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.comמחילים את
enable-sql.yamlעל האשכול באמצעותkubectl:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACEמחליפים את
CC_NAMESPACEבמרחב השמות שבו Config Connector מנהל את המשאבים.
gcloud
כדי להפעיל את SQL Admin API באמצעות Google Cloud CLI, מריצים את הפקודה הבאה:
gcloud services enable sqladmin.googleapis.com
יצירת שרת Cloud SQL
מעתיקים את קובץ ה-YAML שלמטה לקובץ בשם
sql-server-example.yaml. הפעולה הזו יוצרת שרת Cloud SQL בשםsqlserver-1ומשתמש בשםsqluser-sample. הסיסמה שלsqluser-sampleמוגדרת על ידי הפניה למשאב ל-secret בשםsecret-1.apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extractedמעתיקים את קובץ ה-YAML שלמטה לקובץ בשם
example-secret.yaml. לפני ששומרים, צריך לערוך את הערך שלpassword. כך מצהירים עלsecret-1, שמוזכר בקטע הקודם.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORDמחילים את ההגדרות על האשכול.
kubectl apply -n CC_NAMESPACE -f example-secret.yamlkubectl apply -n CC_NAMESPACE -f sql-server-example.yamlמחליפים את
CC_NAMESPACEבמרחב השמות שבו Config Connector מנהל את המשאבים.Config Connector יוצר את המכונה של Cloud SQL ומשתמש עם הסיסמה שציינתם. הפעולה עשויה להימשך כמה דקות.
מחכים כמה דקות ומוודאים שהמכונה זמינה:
gcloud sql instances list --filter="name=sqlserver-1"
הפלט צריך לכלול שרת עם
STATUSשלRUNNABLE.מוודאים שאפשר להתחבר למכונה של SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
תתבקשו להזין את הסיסמה.
סידור וארגון
אם אתם לא רוצים לשמור את המכונה, אתם יכולים למחוק את המכונה, המשתמש והסוד של Cloud SQL באמצעות kubectl.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
מחליפים את CC_NAMESPACE במרחב השמות שבו Config Connector מנהל את המשאבים.