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

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

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

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

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

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

בקשת תפקידים ב-IAM

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

  • אדמין IAM בפרויקט (project-iam-admin): יצירת חשבונות שירות וניהול של קישורי תפקידים במרחב השמות של הפרויקט.
  • ‫AI OCR Developer ‏ (ai-ocr-developer): אימות בקשות ל-OCR API.
  • מפתח AI Speech ‏ (ai-speech-developer): אימות בקשות ל-Speech-to-Text API.
  • מפתח הטמעת טקסט ב-AI ‏ (ai-text-embedding-developer): אימות בקשות למודל Text-Embedding-Gecko.
  • ‫AI Text Embedding Multilingual Developer‏ (ai-text-embedding-multilingual-developer): אימות בקשות למודל Text-Multilingual-Embedding.
  • מפתח AI Translation ‏ (ai-translation-developer): אימות בקשות ל-Vertex AI Translation API.
  • משתמש ב-Vertex AI Prediction ‏ (vertex-ai-prediction-user): אימות בקשות חיזוי למודלים של חיזוי אונליין.

מידע נוסף על התפקידים האלה זמין במאמר הכנת הרשאות IAM.

אימות לשירותי 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 בערך של אסימון האימות שמוצג בפלט.