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

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

סקירה כללית על חיבור למופעי AlloyDB זמינה במאמר סקירה כללית על חיבור.

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

צריך להכין את הפרויקט, האשכול, המופעים וחשבונות המשתמשים ב-IAM לפני שמתחברים למופע AlloyDB באמצעות פרטי כניסה של 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.

מחברים לשפות

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

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

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

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

    כניסה לדף 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. צריך לציין לפחות היקף אחד מתוך ההיקפים האלה.

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