ปกป้องข้อมูลเข้าสู่ระบบระบบคลาวด์ของแอป 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 เมื่อได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์

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

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

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

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

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

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

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

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

    1. เปิดหน้าข้อมูลเข้าสู่ระบบของ คอนโซล Google Cloud เลือกโปรเจ็กต์เมื่อได้รับข้อความแจ้ง

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

  2. เพื่อให้มั่นใจว่าคีย์ API การแก้ไขข้อบกพร่องใหม่ไม่ได้รั่วไหลจากแอปที่เผยแพร่แล้ว ระบุคีย์ API การแก้ไขข้อบกพร่องในไฟล์ Manifest ของ Android ที่ใช้สำหรับการแก้ไขข้อบกพร่องเท่านั้น บิลด์:

    1. หากยังไม่มีไฟล์ Manifest สำหรับการแก้ไขข้อบกพร่อง ให้สร้างโดยคลิกไฟล์ > ใหม่ > อื่นๆ > ไฟล์ Manifest ของ Android แล้วเลือก debugจากชุดแหล่งที่มาเป้าหมาย

    2. เพิ่มการประกาศต่อไปนี้ในไฟล์ Manifest ของการแก้ไขข้อบกพร่อง

      <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