הגנה על פרטי הכניסה לאפליקציית Firebase ML ל-Android ב-Cloud

אם האפליקציה שלך ל-Android משתמשת באחד מממשקי ה-API בענן של Firebase ML, לפני ההפעלה של בסביבת הייצור, צריך לבצע כמה פעולות נוספות כדי למנוע גישה לא מורשית ל-API.

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

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

1. רישום האפליקציות בסביבת הייצור ב-Firebase

קודם כול, רושמים ב-Firebase את האפליקציות בסביבת הייצור.

  1. חשוב לוודא שיש לכם את חתימות SHA-1 של האפליקציה שלכם. במאמר אימות הלקוח מוסבר איך עושים את זה.

  2. מעבר אל הגדרות הפרויקט במסוף Firebase ובוחרים באפשרות הגדרות .

  3. גוללים למטה אל הכרטיס האפליקציות שלך ובוחרים את האפליקציה ל-Android.

  4. מוסיפים את חתימת SHA-1 של האפליקציה לפרטי האפליקציה.

2. הגבלת ההיקף של מפתחות ה-API

בשלב הבא, מגדירים את מפתחות ה-API הקיימים כך שלא יאפשרו גישה ל-Cloud Vision API:

  1. פותחים את הדף Credentials מסוף Google Cloud. כשתתבקשו, בוחרים את הפרויקט.

  2. פותחים את תצוגת העריכה של כל מפתח API קיים ברשימה.

  3. בקטע API restrictions, בוחרים באפשרות Restrict key, ואז מוסיפים את מציינים את כל ממשקי ה-API שאליהם רוצים שלמפתח ה-API תהיה גישה. לוודא לא לכלול את Cloud Vision API.

    כשמגדירים הגבלות על ממשקי API של מפתח API, צריך הצהרה על ממשקי ה-API שאליהם יש למפתח גישה. כברירת מחדל, כשבקטע API restrictions מסומן האפשרות Don't restrict key, אפשר להשתמש במפתח API כדי לגשת לכל ממשק API שמופעל בפרויקט.

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

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

3. יצירת מפתח API לניפוי באגים בלבד ושימוש בו

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

  1. יוצרים מפתח API חדש שישמש לפיתוח:

    1. פותחים את הדף Credentials מסוף Google Cloud. כשתתבקשו, בוחרים את הפרויקט.

    2. לוחצים על Create credentials > מפתח API ושימו לב ל-API החדש. מקש. המפתח הזה מאפשר גישה ל-API מאפליקציות לא מאומתות, לשמור על הסודיות של המפתח הזה.

  2. כדי להבטיח שמפתח ה-API החדש לניפוי באגים לא דלף לאפליקציה שפורסמה, לציין את מפתח ה-API לניפוי באגים בקובץ מניפסט של Android שמשמש לניפוי באגים בלבד יוצר:

    1. אם עדיין אין לך מניפסט לניפוי באגים, אפשר ליצור אותו בלחיצה קובץ > חדש > אחר > קובץ מניפסט של Android ובחירה ב-debug מהקבוצות של מקורות היעד.

    2. במניפסט של ניפוי הבאגים, מוסיפים את ההצהרה הבאה:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
  3. באפליקציה שלך, צריך להגדיר את Firebase ML לשימוש בהתאמה של טביעת אצבע לאישור אל לאמת את הלקוח בסביבת הייצור ולהשתמש במפתחות API – ניפוי הבאגים מפתח - רק בגרסאות build של ניפוי באגים:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

השלבים הבאים

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