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

בדף הזה מוסבר איך מתחברים למכונת AlloyDB ל-PostgreSQL באמצעות חשבון שהוכן עם ניהול זהויות והרשאות גישה (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@altostrat.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, יש שתי אפשרויות: AlloyDB Auth Proxy ו-AlloyDB Language Connectors.

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

שרת proxy לאימות

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

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

מחברים של שפות

כדי להשתמש ב-Language Connectors, צריך להפעיל אימות IAM באופן פרוגרמטי. לכל שפה יש אפשרות תואמת בהגדרת מחברי השפה של AlloyDB.

פתרון בעיות באימות IAM

כדי לזהות את הסיבה לניסיון אימות שנכשל שמבוסס על IAM, צריך לבצע את השלבים הבאים:

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה לדף Logs Explorer

  2. בקטע Resource type (סוג המשאב), לוחצים על AlloyDB instance (מופע AlloyDB).

  3. בקטע חומרה, לוחצים על התראה.

    אם האפשרות התראה לא מופיעה, סימן שלא נרשמו כשלים באימות בפרק הזמן שנבחר. יכול להיות שתצטרכו לשנות את גודל החלון באמצעות אמצעי הבקרה של Logs Explorer.

  4. בקטע תוצאות השאילתה, בודקים את הרשומות ביומן כדי לראות אם מופיעה אחת מההודעות הבאות:

    Request had invalid authentication credentials.
    טוקן הגישה לא תקין.
    Caller does not have required permission to use project.
    לחשבון המשתמש ב-IAM אין את התפקידים הנדרשים ב-IAM או את ההרשאות הנדרשות. בהודעת השגיאה המלאה מצוינים התפקידים או ההרשאות החסרים.
    IAM principal does not match database user.

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

    כדי להציג את החשבון הראשי שצוין באסימון, מריצים את הפקודה הבאה:

    curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
    

    מחליפים את ACCESS_TOKEN באסימון הגישה מסוג OAuth 2.0.

    Request had insufficient scopes.
    טוקן הגישה לא מכיל את היקף ההרשאות alloydb.login או את היקף ההרשאות cloud-platform. צריך לציין לפחות היקף הרשאה אחד.

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