הטמעת Firebase App Check כדי להגן על ממשקי API מפני לקוחות לא מורשים

כשמפעילים API ישירות מאפליקציה לנייד או מאפליקציית אינטרנט (לדוגמה, ממשקי ה-API שמאפשרים גישה למודלים של AI גנרטיבי), ה-API חשוף לניצול לרעה על ידי לקוחות לא מורשים. כדי להגן על ממשקי ה-API האלה, אפשר להשתמש ב-Firebase App Check כדי לוודא שכל הקריאות הנכנסות ל-API מגיעות מהאפליקציה שלכם.

Firebase AI Logic מספקת שער פרוקסי שמאפשר לכם לשלב עם Firebase App Check ולהגן על ממשקי ה-API של מודלים של AI גנרטיבי שמופעלים על ידי אפליקציות לנייד ואפליקציות אינטרנט. השימוש ב-App Check עם ערכות ה-SDK של Firebase AI Logic תומך בכל ההגדרות שלנו:

  • מגן על שני ספקי Gemini API: Gemini Developer API ו-Vertex AI Gemini API.

  • ההגנה חלה על כל המודלים הנתמכים, גם על מודלים של Gemini וגם על מודלים של Imagen.

סיכום כללי של אופן הפעולה של App Check

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

  • הבקשות מגיעות מהאפליקציה המאומתת שלכם
  • הבקשות מגיעות ממכשיר מקורי שלא בוצעו בו שינויים

האישור הזה מצורף לכל בקשה שהאפליקציה שולחת באמצעות SDK מסוג Firebase AI Logic. כשמפעילים את האכיפה של App Check, בקשות מלקוחות ללא אישור תקף יידחו, וכך גם בקשות שמקורן באפליקציה או בפלטפורמה שלא אישרתם.

מומלץ להגדיר את App Check כך שתתכוננו להגנה משופרת (שנקראת הגנה מפני שידור חוזר).

במסמכי התיעוד של App Check אפשר למצוא מידע מפורט על App Check, כולל מכסות ומגבלות.

ספקים זמינים והוראות הטמעה

במאמרי העזרה של App Check יש תיאורים של ספקי אימות והוראות להטמעה.

  1. בוחרים ספק ברירת מחדל ופועלים לפי הוראות ההטמעה בקישורים הבאים:

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

  2. (מומלץ) הכנה להגנה משופרת שתופעל בקרוב מ-App Check (הידועה בשם הגנה מפני הפעלה חוזרת).

  3. (חובה) לפני שמפרסמים את האפליקציה למשתמשים אמיתיים, צריך להפעיל את האכיפה של App Check.

נדרשת יצירה מיוחדת של מופע ב-Flutter

לוחצים על הספק Gemini API כדי לראות בדף הזה תוכן וקוד שספציפיים לספק.

כשמשתמשים ב-App Check עם Firebase AI Logic באפליקציות Flutter, צריך להעביר את App Check באופן מפורש במהלך יצירת המופע, כך:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

הכנה לקראת הגנה משופרת שתופעל בקרוב

הפעלת השימוש בטוקנים לשימוש מוגבל נתמכת בפלטפורמות של Apple (גרסה 12.2.0 ואילך), ב-Android (גרסה 17.2.0 ואילך, BoM גרסה 34.2.0 ואילך), באינטרנט (גרסה 12.3.0 ואילך) וב-Flutter (גרסה 3.2.0 ואילך, BoM גרסה 4.2.0 ואילך). בקרוב תהיה תמיכה גם ב-Unity.

כברירת מחדל, App Check משתמש באסימוני סשן עם אורך חיים (TTL) שניתן להגדרה בין 30 דקות ל-7 ימים. אסימוני הסשן האלה נשמרים במטמון על ידי App Check SDK ונשלחים יחד עם בקשות מהאפליקציה שלכם.

בעתיד, App Check תוסיף אפשרות להפעיל הגנה מפני הפעלה חוזרת של Firebase AI Logic (בדומה לתמיכה ש-App Check כבר מציעה למשאבים אחרים). כשההגנה מפני שידור חוזר מופעלת, היא משפרת את ההגנה בדרכים הבאות:

  • App Check יאפשר רק בקשות שמצורף אליהן סוג מיוחד של טוקן שנקרא טוקן לשימוש מוגבל.

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

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

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

  • App Check לא חוסם את השימוש בטוקנים תקינים של סשנים.

  • בדומה לאסימוני סשן, אסימונים לשימוש מוגבל נשמרים במטמון על ידי App Check SDK ונשלחים יחד עם הבקשות. אסימוני השימוש המוגבל מספקים הגנה נוספת בהיקף קטן יותר מאסימוני הסשן שמוגדרים כברירת מחדל, כי אסימוני השימוש המוגבל הם בעלי TTL קצר יותר (5 דקות בלבד, ואי אפשר לשנות את זה) בהשוואה לאסימוני הסשן.

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

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

הפעלת השימוש באסימונים לשימוש מוגבל

לוחצים על הספק Gemini API כדי לראות בדף הזה תוכן וקוד שספציפיים לספק.

כך מאפשרים שימוש באסימונים לשימוש מוגבל:

  1. מטמיעים את App Check ומוודאים שהפעלתם את האכיפה של App Check באפליקציה.

  2. באפליקציה, במהלך יצירת המופע, מפעילים את השימוש בטוקנים לשימוש מוגבל על ידי הגדרת הפרמטר useLimitedUseAppCheckTokens לערך true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    שימוש באסימונים לשימוש מוגבל במשחקי Unity ייתמך בגרסה עתידית. בדוק שוב בקרוב!

איך Firebase AI Logic משתלב עם App Check

כדי להשתמש בערכות ה-SDK של Firebase AI Logic, צריך להפעיל את Firebase AI Logic API (firebasevertexai.googleapis.com) בפרויקט Firebase. הסיבה לכך היא שבקשות שנשלחות על ידי ערכות ה-SDK של Firebase AI Logic נשלחות קודם לשרת Firebase AI Logic, שפועל כשער פרוקסי שבו מתבצעת אימות Firebase App Check לפני שהבקשה מקבלת אישור להמשיך אל הקצה העורפי של ספק Gemini API שבחרתם ואל ממשקי ה-API לגישה למודלים של Gemini ושל Imagen.