בדף הזה מוסבר איך להתחבר למכונה של Cloud SQL באמצעות Cloud SQL Auth Proxy.
מידע נוסף על Cloud SQL Auth Proxy
סקירה כללית
השיטה המומלצת להתחברות למכונת Cloud SQL היא באמצעות Cloud SQL Auth Proxy. שרת ה-proxy ל-Cloud SQL Auth:
- פועל עם נקודות קצה של כתובות IP ציבוריות ופרטיות
- מאמת את החיבורים באמצעות פרטי כניסה של משתמש או של חשבון שירות
- עוטף את החיבור בשכבת הצפנה של SSL/TLS שמאושרת למכונה שלכם ב-Cloud SQL.
חלק Google Cloud מהשירותים והאפליקציות משתמשים ב-Cloud SQL Auth Proxy כדי לספק חיבורים לנתיבי כתובות IP ציבוריות עם הצפנה והרשאה, כולל:
אפליקציות שפועלות ב- Google Kubernetes Engine יכולות להתחבר באמצעות Cloud SQL Auth Proxy.
במדריך למתחילים לשימוש ב-Cloud SQL Auth Proxy יש מבוא בסיסי לשימוש בו.
אפשר גם להתחבר באמצעות לקוח sqlcmd ממחשב מקומי או מ-Compute Engine, עם או בלי Cloud SQL Auth Proxy.
לפני שמתחילים
לפני שמתחברים למכונת Cloud SQL, צריך לבצע את הפעולות הבאות:
-
- למשתמש או לחשבון שירות, מוודאים שיש לחשבון את התפקיד Cloud SQL Client. התפקיד הזה מכיל את ההרשאה
cloudsql.instances.connect, שמאפשרת לחשבון משתמש להתחבר לכל המכונות של Cloud SQL בפרויקט. - אפשר לכלול תנאי IAM בקישור של מדיניות ה-IAM, שנותן לחשבון הרשאה להתחבר רק למכונה ספציפית אחת של Cloud SQL.
- למשתמש או לחשבון שירות, מוודאים שיש לחשבון את התפקיד Cloud SQL Client. התפקיד הזה מכיל את ההרשאה
מפעילים את Cloud SQL Admin API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים- מתקינים ומפעילים את ה-CLI של gcloud.
- זה שינוי אופציונלי. מתקינים את לקוח Docker של Cloud SQL Auth Proxy.
הורדת Cloud SQL Auth Proxy
לפני שמתחילים, צריך לקבוע את הארכיטקטורה של המכונה.
אם מריצים ב-Linux או ב-Mac, אפשר למצוא את זה על ידי הרצת הפקודה הבאה:
uname -a
Linux 64 סיביות
- מורידים את Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.linux.amd64
- הופכים את Cloud SQL Auth Proxy לקובץ הפעלה:
chmod +x cloud-sql-proxy
Linux 32 סיביות
- מורידים את Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.linux.386
- אם הפקודה
curlלא נמצאה, מריצים אתsudo apt install curlוחוזרים על פקודת ההורדה. - הופכים את Cloud SQL Auth Proxy לקובץ הפעלה:
chmod +x cloud-sql-proxy
macOS 64 סיביות
- מורידים את Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.darwin.amd64
- הופכים את Cloud SQL Auth Proxy לקובץ הפעלה:
chmod +x cloud-sql-proxy
Mac M1
- מורידים את Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.darwin.arm64
- הופכים את Cloud SQL Auth Proxy לקובץ הפעלה:
chmod +x cloud-sql-proxy
Windows 64 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.x64.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את Cloud SQL Auth Proxy. משנים את שם הקובץ ל-cloud-sql-proxy.exe.
Windows 32 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.x86.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את Cloud SQL Auth Proxy. משנים את שם הקובץ ל-cloud-sql-proxy.exe.
קובץ אימג' של Docker ל-Cloud SQL Auth Proxy
ל-Cloud SQL Auth Proxy יש קובצי אימג' שונים של קונטיינרים, כמו 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.2
מערכת הפעלה אחרת
במערכות הפעלה אחרות שלא מופיעות כאן, אפשר להדר את Cloud SQL Auth Proxy מהמקור.הפעלת Cloud SQL Auth Proxy
אפשר להפעיל את Cloud SQL Auth Proxy באמצעות שקעי TCP או קובץ האימג' של Docker ב-Cloud SQL Auth Proxy. קובץ הבינארי של Cloud SQL Auth Proxy מתחבר למכונה אחת או יותר של 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.
אפשר גם לציין כתובת אחרת לחיבור המקומי.
לדוגמה, כך מגדירים את Cloud SQL Auth Proxy להאזין בכתובת 0.0.0.0:1234 לחיבור המקומי:
./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
מעתיקים את INSTANCE_CONNECTION_NAME. אפשר למצוא את המידע הזה בדף Overview של המכונה במסוףGoogle Cloud , או באמצעות הרצת הפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
לדוגמה: myproject:myregion:myinstance.
- אם למכונה מוגדרות גם כתובת IP ציבורית וגם כתובת IP פרטית, ואתם רוצים ש-Cloud SQL Auth Proxy ישתמש בכתובת ה-IP הפרטית, אתם צריכים לספק את האפשרות הבאה כשאתם מפעילים את Cloud SQL Auth Proxy:
--private-ip
- אם אתם משתמשים בחשבון שירות כדי לאמת את Cloud SQL Auth Proxy, שימו לב למיקום במכונת הלקוח של קובץ המפתח הפרטי שנוצר כשנוצר חשבון השירות.
- מפעילים את Cloud SQL Auth Proxy.
מחרוזות אפשריות להפעלת Cloud SQL Auth Proxy:
- שימוש באימות 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.
- שימוש באימות Cloud SDK:
Docker
כדי להריץ את Cloud SQL Auth Proxy במאגר Docker, משתמשים בקובץ האימג' של Docker של Cloud SQL Auth Proxy שזמין ב-Google Container Registry.
אפשר להפעיל את Cloud SQL Auth Proxy באמצעות שקעי TCP, עם הפקודה שמוצגת למטה. באפשרות הזו נעשה שימוש בINSTANCE_CONNECTION_NAME כמחרוזת החיבור כדי לזהות מכונת Cloud SQL. אפשר למצוא את הערך של INSTANCE_CONNECTION_NAME בדף Overview של המכונה במסוףGoogle Cloud , או על ידי הרצת הפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME
לדוגמה: myproject:myregion:myinstance.
שימוש בשקעי 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.2 \ --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 לא ייחשף מחוץ למארח המקומי. כדי שהיציאה תהיה נגישה מחוץ למאגר Docker, צריך להשתמש בדגל --address 0.0.0.0.
התחברות ללקוח sqlcmd
Debian/Ubuntu
ב-Debian וב-Ubuntu, מתקינים את כלי שורת הפקודה הרלוונטיים של SQL Server.
CentOS/RHEL
ב-CentOS/RHEL, מתקינים את כלי שורת הפקודה הרלוונטיים של SQL Server.
openSUSE
ב-openSUSE, מתקינים את כלי שורת הפקודה הרלוונטיים של SQL Server.
פלטפורמות אחרות
ב דף הנחיתה להתקנת SQL Server וב דף ההורדות של SQL Server מפורט מידע נוסף.
מחרוזת החיבור שבה משתמשים תלויה בשאלה אם הפעלתם את Cloud SQL Auth Proxy באמצעות שקע TCP או Docker.
שקעי TCP
- מפעילים את לקוח sqlcmd:
sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
כשמתחברים באמצעות שקעי TCP, מתבצעת גישה ל-Cloud SQL Auth Proxy דרך
127.0.0.1. - אם מתבקשים, מזינים את הסיסמה.
- מופיעה שורת הפקודה של sqlcmd.
דרושה לך עזרה? לקבלת עזרה בפתרון בעיות ב-Cloud SQL Auth Proxy, אפשר לעיין במאמר פתרון בעיות בחיבורים של Cloud SQL Auth Proxy או בדף התמיכה ב-Cloud SQL.
קישור לאפליקציה
אפשר להתחבר ל-Cloud SQL Auth Proxy מכל שפה שמאפשרת להתחבר לשקע TCP. בהמשך מופיעים קטעי קוד מתוך דוגמאות פתורות ב-GitHub, שיעזרו לכם להבין איך הם פועלים יחד באפליקציה שלכם.
חיבור באמצעות TCP
הצהרת הפעלה של Cloud SQL Auth Proxy:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME &
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
הערה:
- המשתנה CLOUD_SQL_CONNECTION_NAME צריך להיות מיוצג בתור <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- השימוש בארגומנט ipTypes=PRIVATE יאלץ את SocketFactory להתחבר לכתובת ה-IP הפרטית שמשויכת למכונה
- דרישות הגרסה של JDBC socket factory לקובץ pom.xml
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
C#
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Ruby
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
נושאים נוספים
ארגומנטים של שורת הפקודה ב-Cloud SQL Auth Proxy
הדוגמאות שלמעלה כוללות את תרחישי השימוש הנפוצים ביותר, אבל ל-Cloud SQL Auth Proxy יש גם אפשרויות הגדרה אחרות שאפשר להגדיר באמצעות ארגומנטים של שורת הפקודה. כדי לקבל עזרה בנושא ארגומנטים בשורת הפקודה, משתמשים בדגל --help כדי לראות את התיעוד העדכני:
./cloud-sql-proxy --helpב-README במאגר של Cloud SQL Auth Proxy ב-GitHub יש דוגמאות נוספות לשימוש באפשרויות של שורת הפקודה של Cloud SQL Auth Proxy.
אפשרויות לאימות של Cloud SQL Auth Proxy
בכל האפשרויות האלה נעשה שימוש ב-INSTANCE_CONNECTION_NAME כמחרוזת החיבור כדי לזהות מכונת Cloud SQL. אפשר למצוא את INSTANCE_CONNECTION_NAME בדף Overview של המופע במסוףGoogle Cloud , או על ידי הפעלת הפקודה הבאה:
gcloud sql instances describe --project PROJECT_ID INSTANCE_CONNECTION_NAME.
לדוגמה: gcloud sql instances describe --project myproject myinstance .
בחלק מהאפשרויות האלה משתמשים בקובץ פרטי כניסה בפורמט JSON, שכולל את המפתח הפרטי של RSA לחשבון. במאמר יצירת חשבון שירות מוסבר איך יוצרים קובץ פרטי כניסה בפורמט JSON לחשבון שירות.
Cloud SQL Auth Proxy מספק כמה חלופות לאימות, בהתאם לסביבה שלכם. Cloud SQL Auth Proxy בודק כל אחד מהפריטים הבאים, לפי הסדר הבא, ומשתמש בפריט הראשון שהוא מוצא כדי לנסות לבצע אימות:
פרטי כניסה שסופקו על ידי הדגל credentials-file.
משתמשים בחשבון שירות כדי ליצור ולהוריד את קובץ ה-JSON המשויך, ומגדירים את הדגל--credentials-fileלנתיב של הקובץ כשמפעילים את Cloud SQL Auth Proxy. לחשבון השירות צריכות להיות ההרשאות הנדרשות למכונת Cloud SQL.כדי להשתמש באפשרות הזו בשורת הפקודה, מפעילים את הפקודה
cloud-sql-proxyכשהדגל--credentials-fileמוגדר לנתיב ולשם הקובץ של קובץ JSON שמכיל את פרטי הכניסה. הנתיב יכול להיות מוחלט או יחסי לספריית העבודה הנוכחית. לדוגמה:./cloud-sql-proxy --credentials-file PATH_TO_KEY_FILE \ INSTANCE_CONNECTION_NAME
הוראות מפורטות להוספת תפקידי IAM לחשבון שירות מופיעות במאמר הקצאת תפקידים לחשבונות שירות.
מידע נוסף על התפקידים שנתמכים ב-Cloud SQL זמין במאמר תפקידי IAM ב-Cloud SQL.
פרטי הכניסה שסופקו על ידי אסימון גישה.
יוצרים אסימון גישה ומפעילים את הפקודהcloud-sql-proxyכשהדגל--tokenמוגדר לאסימון גישה מסוג OAuth 2.0. לדוגמה:./cloud-sql-proxy --token ACCESS_TOKEN \ INSTANCE_CONNECTION_NAME
פרטי כניסה שסופקו על ידי משתנה סביבה.
האפשרות הזו דומה לשימוש בדגל--credentials-file, אבל במקום להשתמש בארגומנט שורת הפקודה--credentials-file, מציינים את קובץ פרטי הכניסה בפורמט JSON שהגדרתם במשתנה הסביבהGOOGLE_APPLICATION_CREDENTIALS.פרטי כניסה מלקוח מאומת של ה-CLI של gcloud.
אם התקנתם את ה-CLI של gcloud ואתם מאומתים באמצעות החשבון האישי שלכם, Cloud SQL Auth Proxy יכול להשתמש באותם פרטי כניסה לחשבון. השיטה הזו שימושית במיוחד להגדרה ולהפעלה של סביבת פיתוח.
כדי לאפשר ל-Cloud SQL Auth Proxy להשתמש בפרטי הכניסה של ה-CLI של gcloud, צריך להשתמש בפקודה הבאה כדי לאמת את ה-CLI של gcloud:
gcloud auth application-default login
פרטי הכניסה שמשויכים למכונה של Compute Engine.
אם מתחברים ל-Cloud SQL ממכונת Compute Engine, שרת ה-Cloud SQL Auth Proxy יכול להשתמש בחשבון השירות שמשויך למכונת Compute Engine. אם לחשבון השירות יש את ההרשאות הנדרשות למכונה של Cloud SQL, Cloud SQL Auth Proxy יבצע אימות בהצלחה.אם המכונה של Compute Engine נמצאת באותו פרויקט כמו המכונה של Cloud SQL, לחשבון השירות שמוגדר כברירת מחדל למכונה של Compute Engine יש את ההרשאות שנדרשות לאימות של Cloud SQL Auth Proxy. אם שתי המכונות נמצאות בפרויקטים שונים, צריך להוסיף את חשבון השירות של המכונה ב-Compute Engine לפרויקט שמכיל את המכונה ב-Cloud SQL.
חשבון השירות שמוגדר כברירת מחדל בסביבה
אם Cloud SQL Auth Proxy לא מוצא פרטי כניסה באף אחד מהמקומות שצוינו קודם, הוא פועל לפי הלוגיקה שמתועדת במאמר הגדרת אימות לאפליקציות בסביבת ייצור של שרת לשרת. בסביבות מסוימות (כמו Compute Engine, App Engine ואחרות) יש חשבון שירות שמוגדר כברירת מחדל, שבו האפליקציה יכולה להשתמש כדי לבצע אימות. אם משתמשים בחשבון שירות שמוגדר כברירת מחדל, צריך להקצות לו את ההרשאות שמפורטות בקטע תפקידים והרשאות. למידע נוסף על גישת האימות של Google Cloud, קראו את הסקירה הכללית על אימות.
יצירה של חשבון שירות
- נכנסים לדף Service accounts במסוף Google Cloud .
- בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL.
- לוחצים על יצירת חשבון שירות.
- בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
- משנים את מזהה חשבון השירות לערך ייחודי וקל לזיהוי, ואז לוחצים על יצירה והמשך.
-
לוחצים על השדה בחירת תפקיד ובוחרים אחד מהתפקידים הבאים:
- Cloud SQL > Cloud SQL Client
- Cloud SQL > Cloud SQL Editor
- Cloud SQL > Cloud SQL Admin
- לוחצים על Done כדי לסיים ליצור את חשבון השירות.
- לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות ניהול מפתחות.
- לוחצים על התפריט הנפתח Add key ואז על Create new key.
-
מוודאים שסוג המפתח הוא JSON ולוחצים על Create.
קובץ המפתח הפרטי יורד למחשב. אפשר להעביר אותו למיקום אחר. חשוב לשמור על קובץ המפתח מאובטח.
שימוש ב-Cloud SQL Auth Proxy עם כתובת IP פרטית
כדי להתחבר למכונת Cloud SQL באמצעות כתובת IP פרטית, ה-Cloud SQL Auth Proxy צריך להיות במשאב עם גישה לאותה רשת VPC כמו המכונה.
ה-Cloud SQL Auth Proxy משתמש ב-IP כדי ליצור חיבור למכונה שלכם ב-Cloud SQL. כברירת מחדל, Cloud SQL Auth Proxy מנסה להתחבר באמצעות כתובת IPv4 ציבורית.
אם למכונת Cloud SQL יש רק כתובת IP פרטית, או אם למכונה יש כתובת IP ציבורית וגם כתובת IP פרטית, ואתם רוצים ש-Cloud SQL Auth Proxy ישתמש בכתובת ה-IP הפרטית, אתם צריכים לספק את האפשרות הבאה כשאתם מפעילים את Cloud SQL Auth Proxy:
--private-ip
שימוש ב-Cloud SQL Auth Proxy כדי להתחבר לנקודת קצה לכתיבה
אתם יכולים להשתמש ב-Cloud SQL Auth Proxy כדי להתחבר למכונה ראשית של Cloud SQL שמוגדרת עם נקודת קצה לכתיבה. נקודת קצה לכתיבה היא שם גלובלי של שירות שמות דומיין (DNS) שאפשר להשתמש בו לחיבורים במקום בכתובת IP לצורך שחזור מתקדם אחרי אסון (DR), כמו ביצוע מעבר גיבוי או פעולת מעבר. אם מתרחש גיבוי או מעבר לגיבוי (failover או switchover) של המופע הראשי, Cloud SQL Auth Proxy מזהה את השינויים ברשומת ה-DNS באופן אוטומטי.
למידע נוסף על השימוש בשרת proxy ל-Cloud SQL Auth כדי להתחבר לנקודת קצה לכתיבה, אפשר לעיין במאמר חיבור לקוחות של מסד נתונים למכונות באמצעות שרת proxy ל-Cloud SQL Auth או מחברי שפה של Cloud SQL.
שימוש ב-Cloud SQL Auth Proxy עם מכונות שמופעל בהן Private Service Connect
אפשר להשתמש ב-Cloud SQL Auth Proxy כדי להתחבר למכונה של Cloud SQL עם Private Service Connect מופעל.
Cloud SQL Auth Proxy הוא מחבר שמספק גישה מאובטחת למכונה הזו בלי צורך ברשתות מורשות או בהגדרת SSL.
כדי לאפשר חיבורים של לקוחות Cloud SQL Auth Proxy, צריך להגדיר רשומת DNS שתואמת לשם ה-DNS המומלץ שסופק למכונה. רשומת ה-DNS היא מיפוי בין משאב DNS לבין שם דומיין.
מידע נוסף על השימוש ב-Cloud SQL Auth Proxy כדי להתחבר למכונות שמופעל בהן Private Service Connect זמין במאמר התחברות באמצעות Cloud SQL Auth Proxy.
הפעלת שרת proxy ל-Cloud SQL Auth בתהליך נפרד
כדי לא לערבב את הפלט של מסוף Cloud SQL Auth Proxy עם פלט מתוכנות אחרות, כדאי להריץ אותו בתהליך נפרד של מסוף Cloud Shell. כדי להפעיל את Cloud SQL Auth Proxy בתהליך נפרד, משתמשים בתחביר שמוצג בהמשך.
Linux
ב-Linux או ב-macOS, משתמשים ב-& בסוף שורת הפקודה כדי להפעיל את Cloud SQL Auth Proxy בתהליך נפרד:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME
--credentials-file PATH_TO_KEY_FILE &
Windows
ב-Windows PowerShell, משתמשים בפקודה Start-Process כדי להפעיל את Cloud SQL Auth Proxy בתהליך נפרד:
Start-Process --filepath "cloud-sql-proxy.exe"
--ArgumentList "
--credentials-file PATH_TO_KEY_FILEINSTANCE_CONNECTION_NAME"
הפעלת Cloud SQL Auth Proxy בקונטיינר של Docker
כדי להריץ את Cloud SQL Auth Proxy בקונטיינר של Docker, משתמשים בקובץ האימג' של Cloud SQL Auth Proxy ל-Docker שזמין ב-Google Container Registry. כדי להתקין את קובץ אימג' של Docker של Cloud SQL Auth Proxy, משתמשים בפקודה הבאה:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.2
שקעי 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.2 \ --address 0.0.0.0 --port 1433 \ --credentials-file /path/to/service-account-key.json \ INSTANCE_CONNECTION_NAME
תמיד מציינים את הקידומת 127.0.0.1 ב--p כדי ששרת ה-proxy ל-Cloud SQL Auth לא ייחשף מחוץ למארח המקומי. כדי שהיציאה תהיה נגישה מחוץ למאגר Docker, צריך להשתמש בדגל --address 0.0.0.0.
אם אתם משתמשים בפרטי הכניסה שסופקו על ידי המכונה של Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.
הפעלת Cloud SQL Auth Proxy כשירות
אפשר להריץ את Cloud SQL Auth Proxy כשירות שפועל ברקע לעומסי עבודה של פיתוח מקומי וייצור. במהלך פיתוח, כשצריך לגשת למכונת Cloud SQL, אפשר להפעיל את השירות ברקע ולהפסיק אותו כשמסיימים.
בשלב הזה, Cloud SQL Auth Proxy לא מספק תמיכה מובנית להפעלה כשירות Windows בעומסי עבודה בסביבת ייצור, אבל אפשר להשתמש במנהלי שירותים של צד שלישי כדי להפעיל אותו כשירות. לדוגמה, אפשר להשתמש ב-NSSM כדי להגדיר את Cloud SQL Auth Proxy כשירות של Windows, ו-NSSM עוקב אחרי Cloud SQL Auth Proxy ומפעיל אותו מחדש באופן אוטומטי אם הוא מפסיק להגיב. מידע נוסף מופיע במאמרי העזרה בנושא NSSM.
חיבור כשנדרש SSL
אכיפת השימוש ב-Cloud SQL Auth Proxy
מפעילים את השימוש ב-Cloud SQL Auth Proxy ב-Cloud SQL באמצעות ConnectorEnforcement.
אם אתם משתמשים במופע עם Private Service Connect, יש מגבלה. אם האכיפה של המחבר מופעלת במופע, אי אפשר ליצור רפליקות לקריאה עבור המופע. באופן דומה, אם למכונה יש רפליקות לקריאה, אי אפשר להפעיל אכיפת מחברים במכונה.
gcloud
הפקודה הבאה אוכפת את השימוש ב-Cloud SQL Connectors.
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement REQUIRED
כדי להשבית את האכיפה, משתמשים בשורת הקוד הבאה:
--connector-enforcement NOT_REQUIRED
העדכון לא מפעיל הפעלה מחדש.
REST v1
הפקודה הבאה אוכפת את השימוש במחברי Cloud SQL
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט.
- instance-id: מזהה המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings": {
"connectorEnforcement": "REQUIRED"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
כדי להשבית את האכיפה, משתמשים במדיניות "connectorEnforcement": "NOT_REQUIRED" במקום זאת. העדכון לא מפעיל מחדש את המכשיר.
REST v1beta4
הפקודה הבאה אוכפת את השימוש ב-Cloud SQL Connectors.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט.
- instance-id: מזהה המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings": {
"connectorEnforcement": "REQUIRED"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
כדי להשבית את האכיפה, משתמשים במדיניות "connectorEnforcement": "NOT_REQUIRED" במקום זאת. העדכון לא מפעיל מחדש את המכשיר.
טיפים לעבודה עם Cloud SQL Auth Proxy
שימוש ב-Cloud SQL Auth Proxy כדי להתחבר למספר מכונות
אפשר להשתמש בלקוח מקומי אחד של Cloud SQL Auth Proxy כדי להתחבר לכמה מכונות Cloud SQL. הדרך שבה עושים את זה תלויה בשאלה אם משתמשים ב-Unix sockets או ב-TCP.
שקעי TCP
כשמתחברים באמצעות TCP, מציינים יציאה במכונה שבה Cloud SQL Auth Proxy יאזין לכל מכונה של Cloud SQL. כשמתחברים לכמה מכונות של Cloud SQL, כל יציאה שמציינים צריכה להיות ייחודית וזמינה לשימוש במכונה.
לדוגמה:
# Start the Cloud SQL Auth Proxy to connect to two different Cloud SQL instances. # Give the Cloud SQL Auth Proxy a unique port on your machine to use for each Cloud SQL instance. ./cloud-sql-proxy "myProject:us-central1:myInstance?port=1433" \ "myProject:us-central1:myInstance2?port=1234" # Connect to "myInstance" using port 1433 on your machine: sqlcmd -U myUser -S "127.0.0.1,1433" # Connect to "myInstance2" using port 1234 on your machine: sqlcmd -U myUser -S "127.0.0.1,1234"
פתרון בעיות בחיבורים של Cloud SQL Auth Proxy
קובץ האימג' של Docker של Cloud SQL Auth Proxy מבוסס על גרסה ספציפית של Cloud SQL Auth Proxy. כשגרסה חדשה של Cloud SQL Auth Proxy זמינה, צריך למשוך את הגרסה החדשה של קובץ האימג' של Cloud SQL Auth Proxy Docker כדי שהסביבה תהיה מעודכנת. כדי לראות את הגרסה הנוכחית של Cloud SQL Auth Proxy, אפשר להיכנס ל דף הגרסאות של Cloud SQL Auth Proxy ב-GitHub.
אם אתם לא מצליחים להתחבר למכונה של Cloud SQL באמצעות Cloud SQL Auth Proxy, נסו את הפתרונות הבאים כדי לגלות מה גורם לבעיה.
בודקים את הפלט של Cloud SQL Auth Proxy.
לרוב, הפלט של שרת ה-Proxy ל-Cloud SQL Auth יכול לעזור לכם לקבוע מה מקור הבעיה ואיך לפתור אותה. מעבירים את הפלט לקובץ או צופים בטרמינל של Cloud Shell שבו הפעלתם את Cloud SQL Auth Proxy.
אם אתם מקבלים שגיאה
403 notAuthorizedואתם משתמשים בחשבון שירות כדי לאמת את Cloud SQL Auth Proxy, ודאו שלחשבון השירות יש את ההרשאות הנכונות.כדי לבדוק את חשבון השירות, מחפשים את המזהה שלו בדף IAM. צריכה להיות לו ההרשאה
cloudsql.instances.connect. התפקידים המוגדרים מראשCloud SQL Admin,Clientו-Editorכוללים את ההרשאה הזו.אם אתם מתחברים מ-App Engine ומופיעה השגיאה
403 notAuthorized, בדקו את הערךapp.yamlשלcloud_sql_instancesכדי לוודא ששם החיבור של המכונה נכון ומאוית נכון. שמות החיבור של המכונות מוצגים תמיד בפורמטPROJECT:REGION:INSTANCE.בנוסף, צריך לוודא שלחשבון השירות של App Engine (לדוגמה, $PROJECT_ID@) יש את תפקיד הלקוח של Cloud SQL ב-IAM.
אם שירות App Engine נמצא בפרויקט אחד (פרויקט א') ומסד הנתונים נמצא בפרויקט אחר (פרויקט ב'), השגיאה הזו מציינת שחשבון השירות של App Engine לא קיבל את תפקיד ה-IAM של לקוח Cloud SQL בפרויקט עם מסד הנתונים (פרויקט ב').
חשוב להפעיל את Cloud SQL Admin API.
אם לא, יופיע פלט כמו
Error 403: Access Not Configuredביומני Cloud SQL Auth Proxy.אם אתם כוללים כמה מכונות ברשימת המכונות, הקפידו להשתמש בפסיק כמפריד, ללא רווחים. אם אתם משתמשים ב-TCP, הקפידו לציין יציאות שונות לכל מופע.
אם אתם מתחברים באמצעות שקעי UNIX, ודאו שהשקעים נוצרו על ידי הצגת הספרייה שסיפקתם כשהפעלתם את Cloud SQL Auth Proxy.
אם יש לכם מדיניות חומת אש ליציאה, ודאו שהיא מאפשרת חיבורים ליציאה 3307 במופע היעד של Cloud SQL.
כדי לוודא ש-Cloud SQL Auth Proxy הופעל כמו שצריך, אפשר לבדוק את היומנים בקטע Operations > Logging > Logs explorer במסוףGoogle Cloud . אם הפעולה בוצעה ללא שגיאות, התגובה אמורה להיות דומה לדוגמה הבאה:
2021/06/14 15:47:56 Listening on /cloudsql/$PROJECT_ID:$REGION:$INSTANCE_NAME/1433 for $PROJECT_ID:$REGION:$INSTANCE_NAME 2021/06/14 15:47:56 Ready for new connectionsבעיות במכסות: כשחורגים מהמכסה של Cloud SQL Admin API, Cloud SQL Auth Proxy מופעל עם הודעת השגיאה הבאה:
There was a problem when parsing a instance configuration but ignoring due to the configuration. Error: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceededאחרי שאפליקציה מתחברת לשרת ה-proxy, שרת ה-proxy מדווח על השגיאה הבאה:
failed to refresh the ephemeral certificate for $INSTANCE_CONNECTION_NAME: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceededפתרון: צריך לזהות את מקור הבעיה במכסה. לדוגמה, יכול להיות שאפליקציה משתמשת במחבר בצורה לא נכונה ויוצרת חיבורים חדשים שלא לצורך. אפשרות נוספת היא לפנות לתמיכה כדי לבקש הגדלה של מכסת Cloud SQL Admin API. אם שגיאת המכסה מופיעה בהפעלה, צריך לפרוס מחדש את האפליקציה כדי להפעיל מחדש את ה-proxy. אם שגיאת המכסה מופיעה אחרי ההפעלה, אין צורך בפריסה מחדש.
המאמרים הבאים
- מידע נוסף על Cloud SQL Auth Proxy
- מידע נוסף על ניהול זהויות והרשאות גישה (IAM)
- מידע נוסף על חשבונות שירות
- מידע ולמידה על שתי רמות של בקרת גישה למכונות Cloud SQL.
- יוצרים משתמשים ומסדי נתונים.
- מידע על התחברות למכונה מהאפליקציה
- מידע על אפשרויות התמיכה