המחברים של Cloud SQL הם ספריות שמספקות הצפנה ואימות שמבוסס על ניהול זהויות והרשאות גישה (IAM) כשמתחברים למכונה של Cloud SQL. הם לא יכולים לספק נתיב רשת למכונה של Cloud SQL אם הוא לא קיים.
אפשר להתחבר למכונה של Cloud SQL גם בדרכים אחרות, כמו שימוש בלקוח של מסד נתונים או ב-Cloud SQL Auth Proxy. למידע נוסף על התחברות למכונה של Cloud SQL, ראו מידע על אפשרויות החיבור.
בדף הזה נסביר על המחברים הבאים של Cloud SQL:
- מחבר Java ל-Cloud SQL
- המחבר של Cloud SQL ל-Python (פתיחה ב-Colab)
- Cloud SQL Go Connector
- Cloud SQL Node.js Connector
יתרונות
השימוש במחבר של Cloud SQL מספק את היתרונות הבאים:
- הרשאת IAM: משתמשת בהרשאות IAM כדי לקבוע מי או מה יכולים להתחבר למכונות Cloud SQL.
- נוחות: לא צריך לנהל אישורי SSL, להגדיר כללים של חומת אש או להפעיל רשתות מורשות.
- אימות IAM של מסד נתונים: תמיכה בתכונה אימות IAM אוטומטי של מסד נתונים ב-Cloud SQL.
לפני שמתחילים
- מפעילים את Cloud SQL Admin API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - יצירת מכונה של Cloud SQL, כולל הגדרת משתמש ברירת המחדל.
מידע נוסף על יצירת מכונות זמין במאמר יצירת מכונות.
למידע נוסף על הגדרת משתמש ברירת המחדל, קראו את המאמר הגדרת הסיסמה לחשבון המשתמש שמוגדר כברירת מחדל.
- מגדירים את התפקידים וההרשאות שנדרשים כדי להתחבר למכונה של Cloud SQL.
הגדרה
Java
Cloud SQL Java Connector הוא ספרייה שמספקת הצפנה והרשאה שמבוססת על IAM כשמתחברים למכונה של Cloud SQL. הוא לא יכול לספק נתיב רשת למכונה של Cloud SQL אם אין כבר נתיב כזה.
התקנה
בקישורים הבאים מוסבר איך ליצור את מנהלי ההתקנים של JDBC ו-R2DBC ולהשתמש בהם עם Cloud SQL Java Connector:
- JDBC: התחברות ל-Cloud SQL באמצעות JDBC.
- R2DBC: התחברות ל-Cloud SQL באמצעות R2DBC.
באפליקציות לדוגמה האלה אפשר לראות דוגמאות לשימוש בספרייה הזו בהקשר של אפליקציה.
אמת
הספרייה הזו משתמשת ב-Application Default Credentials כדי לאמת את החיבור לשרת Cloud SQL.
כדי להפעיל את פרטי הכניסה באופן מקומי, משתמשים בפקודת gcloud הבאה:
gcloud auth application-default login
חיבור באמצעות Intellij
כדי לחבר את IntelliJ למכונה של Cloud SQL, צריך להוסיף את הספרייה כקובץ JAR עם יחסי תלות בקטע Additional Files בדף ההגדרות של מנהל ההתקן. לדוגמה, אפשר למצוא קובצי fat jar מוכנים מראש בדף Cloud SQL Java Connector Releases למטרה הזו.
Python
הספרייה Cloud SQL Python Connector משמשת לצד מנהל התקן של מסד נתונים, ומאפשרת למשתמשים עם הרשאות מתאימות להתחבר למסד נתונים ב-Cloud SQL בלי להוסיף ידנית כתובות IP לרשימת ההיתרים או לנהל אישורי SSL.
כדי לראות דוגמאות אינטראקטיביות לשימוש ב-Cloud SQL Python Connector, פתחו את ה-notebook של Cloud SQL Python Connector.
מנהלי ההתקנים שנתמכים ב-PostgreSQL הם pg8000 ו-asyncpg.
התקנה
כדי להתקין את הגרסה האחרונה של Cloud SQL Python Connector, משתמשים בפקודה pip install ומציינים את מנהל ההתקן pg8000 או asyncpg של מסד הנתונים:
pip install "cloud-sql-python-connector[pg8000]"
או
pip install "cloud-sql-python-connector[asyncpg]"
אמת
הספרייה הזו משתמשת ב-Application Default Credentials כדי לאמת את החיבור לשרת Cloud SQL.
כדי להפעיל את פרטי הכניסה באופן מקומי, משתמשים בפקודת gcloud הבאה:
gcloud auth application-default login
המשך
המחבר של Cloud SQL ל-Go הוא מחבר של Cloud SQL שמיועד לשימוש עם שפת Go. כדי לשפר את האבטחה, המחבר הזה משתמש בהצפנת TLS 1.3 חזקה שמאומתת באופן ידני בין מחבר הלקוח לבין שרת ה-proxy בצד השרת, ללא תלות בפרוטוקול של מסד הנתונים.
התקנה
אפשר להתקין את המאגר הזה באמצעות go get:
go get cloud.google.com/go/cloudsqlconn
Node.js
המחבר של Node.js הוא ספרייה שמיועדת לשימוש עם סביבת זמן הריצה של Node.js, ומאפשרת להתחבר באופן מאובטח למכונה של Cloud SQL.
התקנה
אפשר להתקין את הספרייה באמצעות npm install:
npm install @google-cloud/cloud-sql-connector
שימוש
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, עיינו ב-README ב-GitHub.
Python
במאמר איך משתמשים במחבר הזה מוסבר בפירוט איך משתמשים בספרייה. דוגמה לקוד של בדיקת חיבור ב-GitHub.
המשך
בקטע שימוש מפורטות הוראות לשימוש בספרייה. דוגמה לקוד של בדיקת חיבור ב-GitHub.
Node.js
הוראות מפורטות לשימוש בספרייה מופיעות בקטע שימוש.
לאכוף
באמצעות אכיפת מחברים, אתם יכולים לאכוף שימוש רק ב-Cloud SQL Auth Proxy או במחברי שפה של Cloud SQL כדי להתחבר למכונות של Cloud SQL. כשמפעילים אכיפת מחברים, Cloud SQL דוחה חיבורים ישירים למסד הנתונים.
אם אתם משתמשים במכונה שמופעל בה Private Service Connect, יש מגבלה. אם במכונה מופעלת אכיפת מחבר, אי אפשר ליצור רפליקות לקריאה בלבד של המכונה. באופן דומה, אם למכונה יש רפליקות לקריאה בלבד, אי אפשר להפעיל את אכיפת המחבר במכונה.
gcloud
כדי לאכוף שימוש רק ב-Cloud SQL Auth Proxy או ב-Cloud SQL Language Connectors להתחברות למכונה, משתמשים בפקודה gcloud sql instances patch:
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement=REQUIRED
מחליפים את INSTANCE_NAME בשם של מכונת Cloud SQL.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Cloud de Confiance שמכיל את המכונה
- INSTANCE_NAME: השם של מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
תוכן בקשת JSON:
{
"kind": "sql#instance",
"name": INSTANCE_NAME,
"project": PROJECT_ID,
"settings": {
"connectorEnforcement": "REQUIRED",
"kind": "sql#settings"
}
}כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
פתרון בעיות
גרסאות של מנהלי התקנים
כדי למנוע בעיות תאימות, חשוב לוודא שאתם משתמשים בגרסה העדכנית של מחברי Cloud SQL ושל מנהל ההתקן של מסד הנתונים. חלק מהגרסאות הישנות של מנהלי ההתקנים לא נתמכות.
נתיבי חיבור
המחברים של Cloud SQL מספקים הרשאה לחיבורים, אבל הם לא מספקים נתיבים חדשים לקישוריות. לדוגמה, כדי להתחבר למכונה של Cloud SQL באמצעות כתובת IP פרטית, לאפליקציה כבר צריכה להיות גישה ל-VPC.
ניפוי באגים בבעיות בחיבור
לקבלת עזרה נוספת בבעיות חיבור, עיינו בדפים פתרון בעיות וניפוי באגים בבעיות חיבור.