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

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

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

אתם צריכים:

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לחיבור למכונה של Cloud SQL באמצעות קובץ אימג' של Docker ל-Cloud SQL Auth Proxy, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM ברמת הפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

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

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

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

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

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

    להפעלת ה-API

  2. אם משתמשים במכונה של Compute Engine, צריך להכין את המכונה:
    1. מציגים את המאפיינים של המכונה ב-Compute Engine:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. מאמתים את חשבון השירות ואת היקפי הגישה שהוגדרו במכונה:
      • מוודאים שלחשבון השירות שמצורף למכונה הווירטואלית יש את התפקיד המוגדר מראש לקוח Cloud SQL (roles/cloudsql.client) בניהול זהויות והרשאות גישה (IAM), כדי להתחבר באמצעות Cloud SQL Auth Proxy או Cloud SQL Admin API. אם אתם משתמשים באימות של מסד נתונים ב-IAM, צריך להקצות גם את התפקיד משתמש במכונה של Cloud SQL (roles/cloudsql.instanceUser). למידע נוסף על תפקידים מוגדרים מראש, קראו את המאמר התפקידים הנדרשים.
      • מוודאים שהיקף הגישה של ה-VM מוגדר ל-cloud-platform (https://www.googleapis.com/auth/cloud-platform, או Allow full access to all Cloud APIs במסוף Google Cloud ). היקפי הרשאות גישה הם שיטה מדור קודם להגדרת הרשאה למכונה וירטואלית, והם מגדירים רק את היקף ההרשאה המקסימלי של OAuth לבקשות. לנהל את בקרת הגישה באמצעות תפקידים מוגדרים מראש ב-IAM במקום היקפי גישה.

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

      כניסה לדף Service accounts

    2. בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL.
    3. לוחצים על Create service account.
    4. בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
    5. משנים את הערך של Service account ID לערך ייחודי וקל לזיהוי, ולוחצים על Create and continue.
    6. לוחצים על השדה בחירת תפקיד ובוחרים אחד מהתפקידים הבאים:
      • Cloud SQL > Cloud SQL Client
      • Cloud SQL > Cloud SQL Editor
      • Cloud SQL > Cloud SQL Admin
    7. לוחצים על Done כדי לסיים ליצור את חשבון השירות.
    8. לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות Manage keys.
    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. בוחרים את המכונה כדי לפתוח את הדף Instance details ומעתיקים את הערך של Instance connection name.

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

  9. מפעילים את Cloud SQL Auth Proxy.

    שקעי 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.27.0
    --address 0.0.0.0 --port 1433
    --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 כדי ש-Cloud SQL Auth Proxy לא ייחשף מחוץ למארח המקומי. הדגל --address 0.0.0.0 נדרש כדי שהיציאה תהיה נגישה מחוץ למאגר Docker.

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

    מחרוזת החיבור שבה משתמשים תלויה בשאלה אם הפעלתם את Cloud SQL Auth Proxy באמצעות שקע 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, קראו את המאמר פתרון בעיות בחיבורים של Cloud SQL Auth Proxy או עיינו בדף התמיכה של Cloud SQL.

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

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

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