שימוש בסודות לאחסון מידע אישי רגיש

אתם יכולים להשתמש בסוד כדי לאחסן באשכול 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

  1. ‫Config Connector משתמש ב-Service Usage API כדי להפעיל ממשקי API של שירותים. כדי לבצע את השלבים האלה, צריך להפעיל את ה-API של Service Usage. אפשר להפעיל את ה-API הזה באמצעות Google Cloud CLI:
    gcloud services enable serviceusage.googleapis.com
  2. מעתיקים את קוד ה-YAML הבא לקובץ בשם enable-sql.yaml

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sqladmin.googleapis.com
    
  3. מחילים את 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

  1. מעתיקים את קובץ ה-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
    
  2. מעתיקים את קובץ ה-YAML שלמטה לקובץ בשם example-secret.yaml. לפני ששומרים, צריך לערוך את הערך של password. כך מצהירים על secret-1, שמוזכר בקטע הקודם.

    apiVersion: v1
    kind: Secret
    metadata:
      name:  secret-1
    stringData:
      password: PASSWORD
    
  3. מחילים את ההגדרות על האשכול.

    kubectl apply -n CC_NAMESPACE -f example-secret.yaml
    kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
    

    מחליפים את CC_NAMESPACE במרחב השמות שבו Config Connector מנהל את המשאבים.

    ‫Config Connector יוצר את המכונה של Cloud SQL ומשתמש עם הסיסמה שציינתם. הפעולה עשויה להימשך כמה דקות.

  4. מחכים כמה דקות ומוודאים שהמכונה זמינה:

    gcloud sql instances list --filter="name=sqlserver-1"

    הפלט צריך לכלול שרת עם STATUS של RUNNABLE.

  5. מוודאים שאפשר להתחבר למכונה של 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 מנהל את המשאבים.

המאמרים הבאים