חיבור לקוח של SQL Server באמצעות קובץ אימג' של Docker של שרת proxy ל-Cloud SQL Auth

בדף הזה מוסבר איך לחבר לקוח sqlcmd למכונה של Cloud SQL, ממכונת לקוח שמופעלת באמצעות Linux או מכונה של Compute Engine Linux, באמצעות קובץ אימג' של Docker של Cloud SQL Auth Proxy.

לפני שמתחילים

אתם צריכים:

חיבור לקוח sqlcmd באמצעות קובץ אימג' של Docker של שרת proxy ל-Cloud SQL Auth

כדי להתחבר באמצעות קובץ אימג' של Docker של Cloud SQL Auth Proxy:

  1. מפעילים את Cloud SQL Admin API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  2. אם אתם משתמשים במכונה של Compute Engine, צריך להכין את המכונה:
    1. הצגת המאפיינים של מכונת Compute Engine:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. בודקים את ההיקפים שמופעלים במופע.

      כדי לבצע אימות באמצעות היקפי הרשאות, צריך להשתמש בשני היקפי ההרשאות הבאים:

      • https://www.googleapis.com/auth/sqlservice.admin
      • https://www.googleapis.com/auth/devstorage.read_write

      לחלופין, היקף ההרשאות https://www.googleapis.com/auth/cloud-platform מאפשר גישה לכל ממשקי ה-API של Google Cloud Platform.

      אם למופע של Compute Engine אין את ההיקפים המתאימים, אפשר לעדכן את המופע כדי לכלול אותם. מידע נוסף זמין ב מאמרי העזרה של Compute Engine.

    3. פותחים חיבור לטרמינל למופע, לפי ההוראות שבמאמר חיבור למופעי Linux.
  3. אם הוא עדיין לא מותקן, מתקינים את לקוח sqlcmd במכונה של Compute Engine או במכונת הלקוח.
  4. אם צריך, מתקינים את לקוח Docker:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    אם אתם משתמשים במכונה של Compute Engine שעברה אופטימיזציה לשימוש בקונטיינרים, לקוח Docker כבר מותקן בה.

  5. מתקינים את קובץ האימג' של Docker של Cloud SQL Auth Proxy מ-Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4
  6. אם אתם מריצים את קובץ האימג' של Docker של Cloud SQL Auth Proxy במחשב מקומי (לא במכונה של Compute Engine), או אם למכונה של Compute Engine אין את ההיקפים המתאימים, צריך ליצור חשבון שירות ב-Google Cloud Platform.
    1. נכנסים לדף Service accounts במסוף Google Cloud .

      כניסה לדף Service accounts

    2. בוחרים את הפרויקט שמכיל את מכונת Cloud SQL.
    3. לוחצים על יצירת חשבון שירות.
    4. בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
    5. משנים את מזהה חשבון השירות לערך ייחודי וקל לזיהוי, ואז לוחצים על יצירה והמשך.
    6. לוחצים על השדה Select a role (בחירת תפקיד) ובוחרים באחד מהתפקידים הבאים:
      • ‫Cloud SQL > Cloud SQL Client
      • ‫Cloud SQL > Cloud SQL Editor
      • ‫Cloud SQL > Cloud SQL Admin
    7. לוחצים על Done כדי לסיים ליצור את חשבון השירות.
    8. לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות ניהול מפתחות.
    9. לוחצים על התפריט הנפתח Add key ואז על Create new key.
    10. מוודאים שסוג המפתח הוא JSON ולוחצים על Create.

      קובץ המפתח הפרטי יורד למחשב שלכם. אפשר להעביר אותו למיקום אחר. חשוב לשמור על קובץ המפתח מאובטח.

    כשמפעילים את Cloud SQL Auth Proxy, מציינים את הנתיב לקובץ המפתח כ-PATH_TO_KEY_FILE.

  7. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  8. בוחרים את המופע כדי לפתוח את הדף פרטי המופע ומעתיקים את שם החיבור של המופע.

    לדוגמה: myproject:us-central1:myinstance.

  9. מפעילים את שרת ה-proxy ל-Cloud SQL Auth.

    בהתאם לשפה ולסביבה שלכם, אתם יכולים להפעיל את שרת ה-proxy ל-Cloud SQL Auth באמצעות שקעי TCP או שקעי Unix. אין תמיכה בשקעי Unix באפליקציות שנכתבו בשפת התכנות Java או בסביבת Windows.

    שקעי TCP

    docker run -d \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      -p 127.0.0.1:1433:1433 \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4 \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>

    אם אתם משתמשים בפרטי הכניסה שסופקו על ידי מופע Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    תמיד מציינים את הקידומת 127.0.0.1 ב-‎-p כדי ששרת ה-proxy ל-Cloud SQL Auth לא ייחשף מחוץ למארח המקומי. הערך '0.0.0.0' בפרמטר instances נדרש כדי שהיציאה תהיה נגישה מחוץ לקונטיינר Docker.

    שקעי Unix

    docker run -d -v /cloudsql:/cloudsql \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4 //
      --unix-socket=/cloudsql \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>

    אם אתם משתמשים בפרטי הכניסה שסופקו על ידי מופע Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    אם אתם משתמשים בקובץ אימג' שעבר אופטימיזציה לקונטיינר, צריך להשתמש בספרייה שאפשר לכתוב בה במקום /cloudsql, לדוגמה:

    -v /mnt/stateful_partition/cloudsql:/cloudsql

    אפשר לציין יותר ממופע אחד, ולהפריד ביניהם באמצעות פסיקים. אפשר גם להשתמש במטא-נתונים של Compute Engine כדי לקבוע באופן דינמי את המכונות להתחבר אליהן. מידע נוסף על פרמטרים של שרת proxy

  10. מפעילים את הלקוח:

    מחרוזת החיבור שבה משתמשים תלויה בשיטה שבה הפעלתם את שרת ה-proxy ל-Cloud SQL Auth: באמצעות שקע TCP או Docker.

    שקעי TCP

    1. מפעילים את לקוח sqlcmd:
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

      כשמתחברים באמצעות שקעי TCP, מתבצעת גישה ל-Cloud SQL Auth Proxy דרך 127.0.0.1.

    2. אם מתבקשים, מזינים את הסיסמה.
    3. מופיעה שורת הפקודה של sqlcmd.
צריכים עזרה? לפתרון בעיות בשרת ה-proxy, אפשר לעיין במאמר פתרון בעיות בחיבורים של שרת proxy ל-Cloud SQL Auth או בדף תמיכה ב-Cloud SQL.

שמירה על עדכניות של קובץ אימג' של Docker של Cloud SQL Auth Proxy

קובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth מבוסס על גרסה ספציפית של שרת ה-proxy ל-Cloud SQL Auth. כשגרסה חדשה של שרת ה-proxy ל-Cloud SQL Auth זמינה, צריך למשוך את הגרסה החדשה של קובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth כדי לשמור על עדכניות הסביבה. כדי לראות את הגרסה הנוכחית של Cloud SQL Auth Proxy, אפשר לעיין ב דף הגרסאות של Cloud SQL Auth Proxy ב-GitHub.

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