ปกป้องข้อมูลเข้าสู่ระบบระบบคลาวด์ของแอป Firebase ML สำหรับ Android

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

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

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

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

ตอนนี้คีย์ API ที่มีอยู่จะไม่ให้สิทธิ์เข้าถึงบริการ 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 การแก้ไขข้อบกพร่องในไฟล์ Manifest ของ Android ที่ใช้สำหรับบิลด์การแก้ไขข้อบกพร่องเท่านั้น เพื่อให้มั่นใจว่าคีย์ API การแก้ไขข้อบกพร่องใหม่จะไม่รั่วไหลไปกับแอปที่เผยแพร่

    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 ได้ในรายการตรวจสอบการเปิดตัว