התחברות מ-Compute Engine

בדף הזה מוסבר איך להשתמש בלקוח sqlcmd, שמותקן במכונה של Compute Engine, כדי להתחבר ל-Cloud SQL.

אפשר להשתמש בכתובת IP פרטית, בכתובת IP ציבורית, בשרת proxy ל-Cloud SQL Auth או בקובץ אימג' של Docker של שרת proxy ל-Cloud SQL Auth.

הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה ב-Compute Engine שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מ-Compute Engine.

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

המשימה הזו לא כוללת הוראות להגדרת מכונת Compute Engine. אם אתם צריכים עזרה ביצירה ובהגדרה של מכונה של Compute Engine, תוכלו לעיין במאמרי העזרה של Compute Engine.

כתובת IP פרטית

כדי להתחבר ל-Cloud SQL ממכונת Compute Engine באמצעות כתובת IP פרטית, צריך להגדיר גישה לשירותים פרטיים בסביבה שלכם, ולהגדיר את מכונת Cloud SQL כך שתשתמש בכתובת IP פרטית. המופע של Compute Engine צריך להיות באותו אזור כמו המופע של Cloud SQL, וברשת שהוגדרה לחיבור פרטי. מידע נוסף

1. הגדרת כתובת IP פרטית למכונה

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

2. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.

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

אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.

3. אם הוא עדיין לא מותקן, מתקינים את לקוח sqlcmd במכונה של Compute Engine.

4. מתחברים ללקוח sqlcmd.

sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

אפשר למצוא את כתובת ה-IP הפרטית בדף המכונות של Cloud SQL או באמצעות הפקודה הבאה של gcloud:

gcloud sql instances list

כתובת IP ציבורית

כדי להתחבר באמצעות כתובת IP ציבורית:

1. מוסיפים כתובת IPv4 סטטית למכונת Compute Engine, אם עדיין אין לה כתובת כזו.

אי אפשר להתחבר ל-Compute Engine באמצעות IPv6. מידע על הוספת כתובת IP סטטית מופיע במאמר שמירת כתובת IP חיצונית סטטית חדשה במסמכי התיעוד של Compute Engine.

2. מאשרים את כתובת ה-IP הסטטית של מכונת Compute Engine כרשת שיכולה להתחבר למכונת Cloud SQL.

מידע נוסף זמין במאמר הגדרת גישה לחיבורי IP ציבוריים.

3. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.

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

אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.

4. אם הוא עדיין לא מותקן, מתקינים את לקוח sqlcmd במכונה של Compute Engine.

5. מתחברים ללקוח sqlcmd.

sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

אפשר למצוא את כתובת ה-IP הציבורית בדף המכונות של Cloud SQL או על ידי הפעלת הפקודה gcloud הבאה:

gcloud sql instances list

דוגמה לחיבור באמצעות SSL מופיעה במאמר בנושא חיבור באמצעות SSL.

6. מופיעה שורת הפקודה של sqlcmd.

שרת proxy ל-Cloud SQL Auth

כדי להתחבר באמצעות שרת proxy ל-Cloud SQL Auth מ-Compute Engine:

1. מפעילים את Cloud SQL Admin API.

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

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

להפעלת ה-API

2. יוצרים חשבון שירות.

  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.

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

אם מכונת Compute Engine נמצאת בפרויקט אחר ממכונת Cloud SQL, צריך לוודא שלחשבון השירות שלה יש את ההרשאות המתאימות בפרויקט שמכיל את מכונת Cloud SQL:

  1. נכנסים לרשימת המכונות של Compute Engine במסוף Google Cloud .

    מעבר לרשימת המכונות של Compute Engine

  2. אם צריך, בוחרים את הפרויקט שמשויך למופע של Compute Engine.
  3. בוחרים את מופע Compute Engine כדי להציג את המאפיינים שלו.
  4. במאפיינים של מכונת Compute Engine, מעתיקים את השם של חשבון השירות.
  5. נכנסים לדף IAM & Admin Projects במסוף Google Cloud .

    כניסה לדף Projects ב-IAM & Admin

  6. בוחרים את הפרויקט שמכיל את מכונת Cloud SQL.
  7. מחפשים את השם של חשבון השירות.
  8. אם חשבון השירות כבר מופיע ברשימה ומוקצה לו תפקיד שכולל את ההרשאה cloudsql.instances.connect, אפשר להמשיך לשלב 4.

    התפקידים Cloud SQL Client, Cloud SQL Editor ו-Cloud SQL Admin מספקים את ההרשאה הנדרשת, וכך גם תפקידי הפרויקט מדור קודם Editor ו-Owner.

  9. אחרת, לוחצים על הוספה כדי להוסיף את חשבון השירות.
  10. בתיבת הדו-שיח Add principals (הוספת חשבונות), מציינים את השם של חשבון השירות ובוחרים תפקיד שכולל את ההרשאה cloudsql.instances.connect (כל תפקיד מוגדר מראש של Cloud SQL מלבד Viewer יתאים).

    אפשר גם להשתמש בתפקיד הבסיסי 'עריכה' על ידי בחירה באפשרות פרויקט > עריכה, אבל התפקיד הזה כולל הרשאות בכל Google Cloud.

    אם אתם לא רואים את התפקידים האלה, יכול להיות שלמשתמש Google Cloud שלכם אין את ההרשאה resourcemanager.projects.setIamPolicy. כדי לבדוק את ההרשאות, נכנסים לדף IAM במסוף Google Cloud ומחפשים את מזהה המשתמש.

  11. לוחצים על הוספה.

    חשבון השירות יופיע ברשימה עם התפקיד שצוין.

3. פותחים חיבור לטרמינל למכונה של Compute Engine.

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

אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.

4. אם הוא עדיין לא מותקן, מתקינים את לקוח sqlcmd במכונה של Compute Engine.

5. מתקינים את Cloud SQL Auth Proxy במכונה של Compute Engine.

לפני שמתחילים, צריך לקבוע את הארכיטקטורה של המכונה.

אם מריצים ב-Linux או ב-Mac, אפשר למצוא את זה על ידי הרצת הפקודה הבאה:

  uname -a
  

‏Linux‏ 64 סיביות

  1. מורידים את שרת ה-proxy ל-Cloud SQL Auth:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.amd64
  2. הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
    chmod +x cloud-sql-proxy

‏Linux‏ 32 סיביות

  1. מורידים את שרת ה-proxy ל-Cloud SQL Auth:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.386
  2. אם הפקודה curl לא נמצאה, מריצים את הפקודה sudo apt install curl וחוזרים על פקודת ההורדה.
  3. הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
    chmod +x cloud-sql-proxy

‏Windows‏ 64 סיביות

לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x64.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.

‏Windows‏ 32 סיביות

לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x86.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.

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

לשרת ה-proxy ל-Cloud SQL Auth יש תמונות קונטיינר שונות, כמו distroless,‏ alpine ו-buster. קובץ האימג' של קונטיינר ברירת המחדל של Cloud SQL Auth Proxy משתמש ב-distroless, שלא מכיל מעטפת. אם אתם צריכים מעטפת או כלים קשורים, אתם יכולים להוריד תמונה שמבוססת על alpine או על buster. מידע נוסף זמין במאמר תמונות קונטיינר של Cloud SQL Auth Proxy.

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

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.0

מערכת הפעלה אחרת

במערכות הפעלה אחרות שלא נכללות כאן, אפשר לקמפל את שרת ה-proxy ל-Cloud SQL Auth ממקור.

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

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

שקעי TCP

בחיבורי TCP, שרת ה-Proxy ל-Cloud SQL Auth מאזין ל-localhost(127.0.0.1) כברירת מחדל. לכן, כשמציינים --port PORT_NUMBER למכונה, החיבור המקומי הוא בכתובת 127.0.0.1:PORT_NUMBER.

אפשר גם לציין כתובת אחרת לחיבור המקומי. לדוגמה, כך מגדירים את שרת ה-proxy ל-Cloud SQL Auth להאזין בכתובת 0.0.0.0:1234 לחיבור המקומי:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. מעתיקים את INSTANCE_CONNECTION_NAME. אפשר למצוא את כתובת ה-IP בדף Overview של המופע במסוףGoogle Cloud או על ידי הפעלת הפקודה הבאה:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    לדוגמה: myproject:myregion:myinstance.

  2. אם למכונה מוגדרות כתובות IP ציבוריות ופרטיות, ואתם רוצים ששרת proxy ל-Cloud SQL Auth ישתמש בכתובת IP פרטית, אתם צריכים לספק את האפשרות הבאה כשמפעילים את שרת proxy ל-Cloud SQL Auth:
    --private-ip
  3. אם אתם משתמשים בחשבון שירות כדי לאמת את שרת ה-proxy ל-Cloud SQL Auth, שימו לב למיקום במכונת הלקוח של קובץ המפתח הפרטי שנוצר כשנוצר חשבון השירות.
  4. מפעילים את שרת ה-proxy ל-Cloud SQL Auth.

    מחרוזות אפשריות להפעלת שרת proxy ל-Cloud SQL Auth:

    • שימוש באימות Cloud SDK:
      ./cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
      היציאה שצוינה לא יכולה להיות בשימוש, למשל על ידי שרת מסד נתונים מקומי.
    • שימוש בחשבון שירות וציון השם של חיבור המופע (מומלץ לסביבות ייצור):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    מידע נוסף על האפשרויות של Cloud SQL Auth Proxy זמין במאמר אפשרויות לאימות של Cloud SQL Auth Proxy.

Docker

כדי להריץ את שרת ה-proxy ל-Cloud SQL Auth במאגר Docker, משתמשים בקובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth שזמין ב-Google Container Registry.

אפשר להפעיל את Cloud SQL Auth Proxy באמצעות שקעי TCP או שקעי Unix, עם הפקודות שמוצגות בהמשך. האפשרויות משתמשות ב-INSTANCE_CONNECTION_NAME כמחרוזת החיבור כדי לזהות מכונת Cloud SQL. אפשר למצוא את INSTANCE_CONNECTION_NAME בדף Overview של המופע במסוףGoogle Cloud , או על ידי הפעלת הפקודה הבאה:

gcloud sql instances describe INSTANCE_NAME
.

לדוגמה: myproject:myregion:myinstance.

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

7. מתחילים את הסשן של sqlcmd.

מחרוזת החיבור שבה משתמשים תלויה בשיטה שבה הפעלתם את שרת ה-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.

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