אימות בקשות API

מכשיר Vertex AI ב-Google Distributed Cloud ‏ (GDC) עם בידוד פיזי מספק ממשקי API ושירותים שדורשים אימות. אימות הוא הדרך שבה אתם מוכיחים את הזהות שלכם כדי לגשת לשירותים באמצעות אסימונים.

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

בדף הזה מוסבר איך לבצע אימות בממשקי Vertex AI API באופן פרוגרמטי. בדף הזה מוסבר איך לקבל אסימון אימות לבקשות API, בהתאם לאופן הגישה ל-Vertex AI APIs – כמשתמש או באמצעות חשבון שירות.

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

חשבון משתמש

כדי לקבל אסימון אימות עם הרשאות משתמש:

  1. שימו לב לנקודת הקצה של ה-API שבו אתם רוצים להשתמש.

  2. כדי לקבל גישה לשירות Vertex AI שבו רוצים להשתמש, צריך להעניק לחשבון המשתמש את התפקיד המתאים שמופיע בקטע הכנת הרשאות IAM.

  3. נכנסים למכשיר GDC עם air gap באמצעות חשבון המשתמש שדרכו רוצים לבצע אינטראקציה עם ה-API:

    gdcloud auth login
    
  4. מקבלים את טוקן האימות:

    gdcloud auth print-identity-token --audiences=https://ENDPOINT
    

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

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

    • אם משתמשים בספריית לקוח בשביל הבקשה, צריך לכלול את הפורט :443 אחרי נקודת הקצה של השירות בנתיב של הקהלים. לכן, הנתיב --audiences בפקודה צריך להיות https://ENDPOINT:443.
    • אם אתם משתמשים ב-gRPC, ב-curl או בקריאות REST פרוגרמטיות לבקשה, אל תכללו את היציאה. לכן, הנתיב --audiences בפקודה צריך להיות https://ENDPOINT.

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

-H "Authorization: Bearer TOKEN"

מחליפים את TOKEN בערך של אסימון האימות שמוצג בפלט.

חשבון שירות

כדי לקבל אסימון אימות באמצעות חשבון שירות:

  1. שימו לב לנקודת הקצה של ה-API שבו אתם רוצים להשתמש.

  2. מגדירים את חשבון השירות שרוצים להשתמש בו כדי לגשת לשירות Vertex AI.

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

  4. קבלת זוגות מפתחות לנותני שירות של חשבון השירות

  5. מתקינים את ספריית הלקוח של google-auth:

    pip install google-auth
    
  6. מוסיפים את הקוד הבא לסקריפט Python:

    import os
    import google.auth
    from google.auth.transport import requests
    import requests as reqs
    
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "PATH_TO_SERVICE_KEY"
    os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "CERT_NAME"
    
    # If you use a client library for your request,
    # you must include port :443 after the service endpoint
    # in the audience path.
    audience = "https://ENDPOINT"
    
    creds, project_id = google.auth.default()
    print(project_id)
    creds = creds.with_gdch_audience(audience)
    
    def test_get_token():
      sesh = reqs.Session()
      req = requests.Request(session=sesh)
      creds.refresh(req)
      print(creds.token)
    
    if __name__=="__main__":
      test_get_token()
    

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

    • ‫PATH_TO_SERVICE_KEY: הנתיב לקובץ ה-JSON שמכיל את צמדי המפתחות של חשבון השירות.
    • ‫CERT_NAME: השם של קובץ האישור של רשות האישורים (CA), למשל org-1-trust-bundle-ca.cert. הערך הזה נדרש רק אם אתם נמצאים בסביבת פיתוח. אחרת, משמיטים אותו.
    • ‫ENDPOINT: נקודת הקצה של השירות שבה אתם משתמשים בארגון. למידע נוסף, אפשר לראות את סטטוס השירות ונקודות הקצה. בהתאם לשימוש המיועד של אסימון האימות, יכול להיות שתצטרכו לכלול את היציאה אחרי נקודת הקצה של השירות בנתיב של קהל היעד, באופן הבא:

      • אם משתמשים בספריית לקוח בשביל הבקשה, צריך לכלול את היציאה :443 אחרי נקודת הקצה של השירות בנתיב של קהל היעד. לכן, הנתיב audience בסקריפט צריך להיות "https://ENDPOINT:443".
      • אם אתם משתמשים ב-gRPC, ב-curl או בקריאות REST פרוגרמטיות לבקשה, אל תכללו את היציאה. לכן, הנתיב audience בסקריפט צריך להיות "https://ENDPOINT".
  7. שומרים את סקריפט Python.

  8. מריצים את סקריפט Python כדי לאחזר את האסימון:

    python SCRIPT_NAME
    

    מחליפים את SCRIPT_NAME בשם שנתתם לסקריפט Python, למשל token.py.

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

-H "Authorization: Bearer TOKEN"

מחליפים את TOKEN בערך של אסימון האימות שמוצג בפלט.