ปกป้องข้อมูลรับรองคลาวด์ของแอป Firebase ML Android ของคุณ

หากแอป Android ของคุณใช้หนึ่งใน Cloud 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. เปิดหน้า ข้อมูลประจำตัว ของ Google Cloud Console เมื่อได้รับแจ้ง ให้เลือกโครงการของคุณ

  2. สำหรับแต่ละคีย์ API ที่มีอยู่ในรายการ ให้เปิดมุมมองการแก้ไข

  3. ในส่วน ข้อจำกัด API ให้เลือก คีย์จำกัด จากนั้นเพิ่ม API ทั้งหมดที่คุณต้องการให้คีย์ API เข้าถึงในรายการ ตรวจสอบให้แน่ใจ ว่าไม่ได้ รวม Cloud Vision API

    เมื่อคุณกำหนด ค่าข้อจำกัด API ของคีย์ API คุณกำลังประกาศ API ที่คีย์นั้นสามารถเข้าถึงได้อย่างชัดเจน ตามค่าเริ่มต้น เมื่อส่วน ข้อจำกัดของ API เลือก "ไม่จำกัดคีย์" คุณ จะสามารถใช้คีย์ API เพื่อเข้าถึง API ใดๆ ที่เปิดใช้งานสำหรับโครงการได้

ตอนนี้ คีย์ API ที่มีอยู่ของคุณจะไม่ให้สิทธิ์เข้าถึงบริการ ML บนคลาวด์ แต่แต่ละคีย์จะยังคงทำงานต่อไปสำหรับ API ใดๆ ที่คุณเพิ่มลงในรายการ ข้อจำกัด API

โปรดทราบว่าหากคุณเปิดใช้งาน API เพิ่มเติมใดๆ ในอนาคต คุณต้องเพิ่มลงในรายการ ข้อจำกัด API สำหรับคีย์ API ที่เกี่ยวข้อง

3. สร้างและใช้คีย์ API สำหรับแก้ไขจุดบกพร่องเท่านั้น

สุดท้าย สร้างคีย์ API ใหม่เพื่อใช้สำหรับการพัฒนาเท่านั้น Firebase ML สามารถใช้คีย์ API นี้เพื่อเข้าถึงบริการ Google Cloud ในสภาพแวดล้อมที่ตรวจสอบสิทธิ์แอปไม่ได้ เช่น เมื่อทำงานบนโปรแกรมจำลอง

  1. สร้างคีย์ API ใหม่เพื่อใช้สำหรับการพัฒนา:

    1. เปิดหน้า ข้อมูลประจำตัว ของ Google Cloud Console เมื่อได้รับแจ้ง ให้เลือกโครงการของคุณ

    2. คลิก สร้างข้อมูลประจำตัว > คีย์ API และจดบันทึกคีย์ API ใหม่ คีย์นี้อนุญาตให้เข้าถึง API จากแอปที่ไม่ได้ตรวจสอบสิทธิ์ ดังนั้น ควรเก็บคีย์นี้ไว้เป็นความลับ

  2. เพื่อให้แน่ใจว่าคีย์ API ดีบักใหม่จะไม่รั่วไหลไปกับแอปที่เผยแพร่ของคุณ ให้ระบุคีย์ API ดีบั๊กในไฟล์ Manifest ของ 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 ซึ่งเป็นคีย์ดีบัก เฉพาะในบิลด์การแก้ไขข้อบกพร่อง:

    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