בדף הזה מוסבר איך להתחבר למכונה של Cloud SQL באמצעות Cloud SQL Auth Proxy.
מידע נוסף על Cloud SQL Auth Proxy
סקירה כללית
השיטה המומלצת להתחברות למכונה של Cloud SQL היא באמצעות Cloud SQL Auth Proxy. Cloud SQL Auth Proxy:
- פועל גם עם נקודות קצה של כתובות IP ציבוריות וגם עם נקודות קצה של כתובות IP פרטיות
- מאמת את החיבורים באמצעות פרטי כניסה של משתמש או של חשבון שירות
- עוטף את החיבור בשכבת הצפנה של SSL/TLS שמאושרת למכונה שלכם ב-Cloud SQL.
Google Cloud חלק מהשירותים והאפליקציות משתמשים ב-Cloud SQL Auth Proxy כדי לספק חיבורים לנתיבי IP ציבוריים עם הצפנה והרשאה, כולל:
אפליקציות שפועלות ב- Google Kubernetes Engine יכולות להתחבר באמצעות Cloud SQL Auth Proxy.
במדריך למתחילים בנושא שימוש ב-Cloud SQL Auth Proxy מוסבר איך להשתמש בו.
אפשר גם להתחבר, עם או בלי Cloud SQL Auth Proxy, באמצעות לקוח sqlcmd ממכונה מקומית או מ-Compute Engine.
לפני שמתחילים
לפני שמתחברים למכונה של 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 ובוחרים באפשרות Save Link As כדי להוריד את 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 ובוחרים באפשרות Save Link As כדי להוריד את 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, משתמשים בקובץ האימג' של Cloud SQL Auth Proxy ל-Docker שזמין ב-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 לא ייחשף מחוץ למארח המקומי. הדגל --address 0.0.0.0 נדרש כדי שהיציאה תהיה נגישה מחוץ לקונטיינר של Docker.
התחברות באמצעות הלקוח 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.
- לוחצים על Create service account.
- בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
- משנים את הערך של Service account ID לערך ייחודי וקל לזיהוי, ולוחצים על Create and continue.
-
לוחצים על השדה בחירת תפקיד ובוחרים אחד מהתפקידים הבאים:
- Cloud SQL > Cloud SQL Client
- Cloud SQL > Cloud SQL Editor
- Cloud SQL > Cloud SQL Admin
- לוחצים על Done כדי לסיים ליצור את חשבון השירות.
- לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות Manage keys.
- לוחצים על התפריט הנפתח 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) מתקדמת, כמו ביצוע פעולת יתירות כשל או מעבר בין רפליקות. אם מתרחשת פעולת מעבר לגיבוי בעת כשל או פעולת החלפה של רפליקה במכונה הראשית, שרת ה-Proxy לאימות ב-Cloud SQL מזהה באופן אוטומטי שינויים ברשומת ה-DNS.
במאמר איך מחברים לקוחות של מסדי נתונים למכונות באמצעות Cloud SQL Auth Proxy או מחברי שפה של Cloud SQL מוסבר איך משתמשים ב-Cloud SQL Auth Proxy כדי להתחבר לנקודת קצה לכתיבה.
שימוש ב-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.
הפעלת Cloud SQL Auth Proxy בתהליך נפרד
כדי לא לערבב את הפלט של מסוף 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. כדי להתקין את קובץ האימג' של Cloud SQL Auth Proxy ב-Docker, משתמשים בפקודה הבאה:
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 כדי ש-Cloud SQL Auth Proxy לא ייחשף מחוץ למארח המקומי. הדגל --address 0.0.0.0 נדרש כדי שהיציאה תהיה נגישה מחוץ לקונטיינר של Docker.
אם אתם משתמשים בפרטי הכניסה שסופקו על ידי המכונה של 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
אתם יכולים לאכוף את השימוש ב-Cloud SQL Auth Proxy או במחברי השפה של Cloud SQL בחיבורים של מכונות Cloud SQL באמצעות ConnectorEnforcement.
אם אתם משתמשים במכונה שמופעל בה Private Service Connect, יש מגבלה. אם במכונה מופעלת אכיפת מחבר, אי אפשר ליצור רפליקות לקריאה בלבד של המכונה. באופן דומה, אם למכונה יש רפליקות לקריאה, אי אפשר להפעיל אכיפת מחברים במכונה.
gcloud
הפקודה הבאה אוכפת את השימוש במחברים של Cloud SQL.
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.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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 או ב-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
קובץ האימג' של Cloud SQL Auth Proxy ב-Docker מבוסס על גרסה ספציפית של 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.
במקרים רבים, הפלט של Cloud SQL Auth Proxy יכול לעזור לכם לזהות את מקור הבעיה ואת הדרך לפתור אותה. מעבירים את הפלט לקובץ או צופים בטרמינל של 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@appspot.gserviceaccount.com) יש את תפקיד הלקוח של Cloud SQL ב-IAM.
אם שירות App Engine נמצא בפרויקט אחד (פרויקט א') ומסד הנתונים נמצא בפרויקט אחר (פרויקט ב'), השגיאה הזו מציינת שחשבון השירות של App Engine לא קיבל את תפקיד ה-IAM של לקוח Cloud SQL בפרויקט עם מסד הנתונים (פרויקט ב').
חשוב לוודא ש-Cloud SQL Admin API מופעל.
אם לא, ביומנים של Cloud SQL Auth Proxy יופיע פלט כמו
Error 403: Access Not Configured.אם אתם כוללים כמה מכונות ברשימת המכונות, הקפידו להשתמש בפסיק כמפריד, ללא רווחים. אם אתם משתמשים ב-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.
- יוצרים משתמשים ומסדי נתונים.
- איך מתחברים למכונה מהאפליקציה
- מידע על אפשרויות התמיכה