אימות של בקשות Vertex AI API

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

הדף הזה מיועד למפתחי אפליקציות בקבוצות של מפעילים שאחראים להגדיר את סביבות הפיתוח והאפליקציות שלהם כדי להפעיל תכונות מבוססות-AI. מידע נוסף זמין במאמר בנושא קהלים ב-GDC עם air gap.

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

צריך להגדיר את הפרויקט לשימוש ב-Vertex AI. מידע נוסף זמין במאמר בנושא הגדרת פרויקט ל-Vertex AI.

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

אימות לשירותי Vertex AI

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

יש שתי דרכים להגדיר אימות:

אימות באמצעות חשבון המשתמש

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

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

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

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

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

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

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

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

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

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

     -H "Authorization: Bearer TOKEN"
    

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

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

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

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

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

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

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

  5. מגדירים את משתנה הסביבה הבא:

    export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SERVICE_KEY
    

    מחליפים את PATH_TO_SERVICE_KEY בנתיב של קובץ ה-JSON שמכיל את צמדי המפתחות של חשבון השירות.

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

    pip install google-auth
    
  7. מוסיפים את הקוד הבא לסקריפט 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: נקודת קצה ל-API שבה אתם משתמשים בארגון. למידע נוסף, אפשר לראות את סטטוס השירות ונקודות הקצה. בהתאם לשימוש המיועד של אסימון האימות, יכול להיות שתצטרכו לכלול את היציאה אחרי נקודת הקצה של השירות בנתיב של קהל היעד, באופן הבא:

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

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

      python SCRIPT_NAME
    

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

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

     -H "Authorization: Bearer TOKEN"
    

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