חיבור באמצעות חשבון IAM

כדי לאמת מכונה של AlloyDB ל-PostgreSQL באמצעות פרטי כניסה של ניהול זהויות והרשאות גישה (IAM) במקום סיסמאות מובנות של מסד נתונים, אתם יכולים להיכנס באמצעות טוקן גישה של OAuth 2.0 או להגדיר אימות אוטומטי ב-IAM. אפשר גם להיכנס באמצעות IAM באמצעות לקוח שורת הפקודה psql.

במאמר סקירה כללית על התחברות מוסבר איך מתחברים למכונות של AlloyDB.

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

כדי להיכנס למכונה של AlloyDB באמצעות פרטי כניסה של IAM, צריך להכין את הפרויקט, האשכול, המכונות וחשבונות המשתמשים ב-IAM.

מידע נוסף זמין במאמר ניהול אימות IAM.

אימות באמצעות טוקן OAuth 2.0

כדי לאמת משתמש או אפליקציה במסד נתונים של AlloyDB:

  1. אם עדיין לא עשיתם את זה, אמתו את ה-Google Cloud CLI באמצעות אותו חשבון משתמש או חשבון שירות שאתם רוצים להיכנס איתו למכונה של AlloyDB.

  2. מבקשים אסימון OAuth 2.0 מ- Google Cloud באמצעות הפקודה gcloud auth print-access-token:

    gcloud auth print-access-token

    ‫Google Cloud מדפיס אסימון OAuth 2.0 כפלט של הפקודה הזו.

    כדי להגביר את האבטחה, אתם יכולים להגביל את השימוש באסימון רק לאימות ב-AlloyDB. לשם כך, בצעו את השלבים החלופיים הבאים:

    1. אם עדיין לא עשיתם זאת, מוסיפים את ההיקף alloydb.login לפרטי הכניסה של הסביבה הנוכחית באמצעות הפקודה gcloud auth application-default login:

      gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
    2. מדפיסים טוקן OAuth 2.0 מוגבל באמצעות הפקודה gcloud auth application-default print-access-token, ומגדירים את היקף הטוקן רק לאימות של AlloyDB:

      gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/alloydb.login

    אסימון OAuth 2.0 מאפשר לך – או לכל אחד – לשלוח בקשות מאומתות אל Google Cloud בשמך. התייחסו לטוקן באותה רמת אבטחה כמו לסיסמה. צריך לאחסן את הטוקן באופן מאובטח או להימנע מאחסון שלו. בדוגמה לשימוש ב-psql בהמשך הדף, מוסבר איך לבקש אסימון OAuth 2.0, להשתמש בו ולמחוק אותו בפעולה אחת.

  3. נכנסים למכונה של AlloyDB באמצעות שיטות סטנדרטיות של PostgreSQL, עם פרטי הכניסה הבאים:

    • מציגים את אסימון הגישה שקיבלתם בשלב הקודם בתור הסיסמה.

    • בחשבון משתמש ב-IAM, שם המשתמש במסד הנתונים הוא כתובת האימייל המלאה של החשבון.

    • בחשבון שירות של IAM, שם המשתמש במסד הנתונים הוא כתובת האימייל של החשבון בלי הסיומת .gserviceaccount.com.

הפקודה הבאה של psql מדגימה דרך אחת להיכנס למשתמש IAM בשורת הפקודה. היא מקצה את הפלט של gcloud auth print-access-token למשתנה הסביבה PGPASSWORD, שמשמש לאחר מכן את psql כסיסמת התחברות למסד הנתונים.

PGPASSWORD=$(gcloud auth print-access-token) psql \
  -h INSTANCE_ADDRESS \
  -U USERNAME \
  -d DATABASE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫INSTANCE_ADDRESS: כתובת ה-IP של מכונת AlloyDB שאליה רוצים להתחבר.

  • ‫USERNAME: מזהה של משתמש IAM לאימות מול המכונה.

    בחשבון משתמש ב-IAM, צריך לציין את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה, kai@example.com.

    בחשבון שירות של IAM, צריך לציין את כתובת החשבון בלי הסיומת .gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירות my-service@my-project.iam.gserviceaccount.com, צריך להשתמש בערך my-service@my-project.iam.

  • ‫DATABASE: שם מסד הנתונים שאליו רוצים להתחבר.

שימו לב ש-psql חותך סיסמאות שהוזנו בשורת הפקודה אם הן ארוכות מ-100 תווים. כדי להשתמש ב-psql עם אסימון OAuth 2.0 כסיסמת התחברות, צריך להגדיר את משתנה הסביבה PGPASSWORD כמו שמוצג בדוגמה הזו, במקום להדביק אותו ידנית כשמוצגת בקשה.

אימות אוטומטי

כדי לאמת באופן אוטומטי משתמש AlloyDB שמבוסס על IAM בלי צורך באסימון OAuth 2.0, יש שתי אפשרויות: שרת proxy לאימות ב-AlloyDB ומחברי שפות ל-AlloyDB.

חשבון ה-IAM שבו אתם משתמשים כדי להריץ את לקוח ה-proxy או את Language Connectors צריך להיות אותו חשבון שהוספתם כמשתמש במסד הנתונים. לדוגמה, אם אתם מריצים את עומס העבודה באמצעות חשבון המשתמש kai@example.com ב-IAM, אתם יכולים להשתמש בלקוח ה-proxy או במחברי השפה כדי לאמת באופן אוטומטי את המשתמש kai@example.com במסד הנתונים, בלי לציין אסימון OAuth 2.0. בדוגמה הזו, האימות האוטומטי לא פועל עם אף משתמש אחר במסד הנתונים, חוץ מ-kai@example.com.

Auth Proxy

כדי להשתמש ב-Auth Proxy, צריך להריץ את לקוח Auth Proxy כשהדגל --auto-iam-authn מופעל.

מידע נוסף על הפעלת שרת ה-Proxy לאימות מופיע במאמר התחברות באמצעות שרת ה-Proxy לאימות של AlloyDB.

מחברי שפה

כדי להשתמש במחברי שפה, צריך להפעיל אימות IAM באופן פרוגרמטי. במחבר של AlloyDB ל-Python, יש תמיכה באימות אוטומטי ב-IAM‏ (enable_iam_auth=True) עם מנהלי ההתקנים pg8000 ו-asyncpg. לכל שפה יש אפשרות תואמת בהגדרת מחברי השפות ל-AlloyDB.

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