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

אתם יכולים להשתמש בסוד כדי לאחסן באשכול GKE מידע רגיש על הגדרות, כמו סיסמאות ומפתחות גישה. בדף הזה מוסבר איך Config Connector משתמש בערכי Secret כשמגדירים את המשאבים. Google Cloud

סקירה כללית

בקטע הזה מופיעה סקירה כללית על השימוש ב-Secrets עם Config Connector.

שימוש בסוד כשיוצרים משאב

אתם יכולים להשתמש בנתונים בתוך Secret כשאתם יוצרים משאב. במאמר העברת סוד למשאב, יוצרים סוד שמכיל סיסמה, ואז מפנים לסוד עבור משתמש במסד נתונים של Cloud SQL.

עדכון סודות

כשמחילים עדכון על Secret, ‏ Config Connector מעדכן את המשאב בפעם הבאה שהוא מבצע גישור בין המצב הרצוי לבין המצב בפועל. לדוגמה, אם מעדכנים את הסוד שמוגדר כסיסמה עבור SQLUser, ‏ Config Connector יעודכן בהתאם את הסיסמה של המשתמש.

מחיקת סודות

אם מוחקים סוד שנמצא בשימוש על ידי משאב, Config Connector לא יסיר את ההפניה של המשאב לסוד. לדוגמה, אם יוצרים SQLUser עם סיסמה שמפנה אל Secret ואז מוחקים את ה-Secret, הסיסמה תישאר ב-SQLUser.

פתרון בעיות

אם יוצרים משאב שמפנה ל-Secret שלא קיים, Config Connector ייצור DependencyNotFound או DependencyInvalid Event.

סודות ומרחבי שמות של 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 של שירותים. כדי לבצע את השלבים האלה, צריך להפעיל את Service Usage API. אפשר להפעיל את ה-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-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 מנהל ממנו משאבים.

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