ปกป้องข้อมูลเข้าสู่ระบบระบบคลาวด์ของแอป Firebase ML ใน Apple

หากแอป Apple ใช้ API ของ Firebase ML รายการใดรายการหนึ่ง คุณควรดำเนินการเพิ่มเติมเพื่อไม่ให้มีการเข้าถึง API ที่ไม่ได้รับอนุญาตก่อนที่จะเปิดตัวแอปที่ใช้งานจริง

1. ลดขอบเขตของคีย์ 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 ที่เกี่ยวข้อง

2. สร้างคีย์ API ใหม่เพื่อใช้กับ Firebase ML

ถัดไป ให้สร้างคีย์ API ใหม่สําหรับ Firebase ML ที่อนุญาตเฉพาะการเรียกใช้ Cloud Vision API เท่านั้น โดยทำดังนี้

  1. กลับไปที่หน้าข้อมูลเข้าสู่ระบบ ตรวจสอบว่า ยังคงเลือกโปรเจ็กต์ Firebase อยู่

  2. คลิกสร้างข้อมูลเข้าสู่ระบบ > คีย์ API โปรดจดบันทึกคีย์ API ใหม่ จากนั้น ให้คลิกจำกัดคีย์

  3. ในส่วนการจำกัด API ให้เลือกจำกัดคีย์ แล้วเพิ่มลงใน เฉพาะ Cloud Vision API

คีย์ API นี้จะให้สิทธิ์เข้าถึง Cloud Vision API เท่านั้นและใช้งานได้โดย Firebase ML เพื่อเข้าถึงโมเดลในระบบคลาวด์

คุณควรลดโควต้าต่อผู้ใช้ของ Cloud Vision API จากการตั้งค่าเริ่มต้นเพื่อช่วยบรรเทาผลกระทบจากคีย์ที่ถูกบุกรุก วิธีการมีดังนี้

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

  2. ในส่วนคำขอ ให้กำหนดโควต้าคำขอต่อนาทีต่อผู้ใช้ เป็นตัวเลือกที่สมเหตุสมผลสำหรับแอปของคุณ ตัวอย่างเช่น หากแอปของคุณเกี่ยวข้องกับ อัปโหลดรูปภาพของเอกสารเพื่อเรียกข้อความกลับคืน อาจเป็นไปได้ว่า ผู้ใช้จะทำแบบนั้นมากกว่า 1 ครั้งในทุกๆ 2-3 วินาที ดังนั้น โควต้าจึงเท่ากับ 30-40 น่าจะปลอดภัย

    โปรดทราบว่าในบริบทนี้ "คำขอต่อผู้ใช้" หมายถึงคำขอจาก ที่อยู่ IP เดียว คุณอาจต้องพิจารณาใช้วิธีนี้หากคาดว่า ผู้ใช้สามารถใช้แอปของคุณพร้อมกัน จากเบื้องหลัง NAT

4. เรียกใช้ Cloud API โดยใช้คีย์ API Firebase ML

สุดท้าย ให้กำหนดค่า Firebase ML ในแอปของคุณเพื่อใช้คีย์ API ใหม่

เนื่องจากFirebase MLคีย์ API อนุญาตให้เข้าถึง Cloud Vision API โดยไม่ผ่านการตรวจสอบสิทธิ์ คุณจึงควรเก็บคีย์ไว้เป็นความลับเพื่อป้องกันการใช้งานที่ไม่ได้รับอนุญาตและการเรียกเก็บเงินในบัญชีการเรียกเก็บเงิน ในกรณีดังกล่าว คุณไม่ควรใส่ คีย์ API ในไบนารีของแอป แต่ให้ตรวจสอบว่าผู้ใช้ที่รู้จักและเชื่อถือได้ลงชื่อเข้าใช้อยู่เมื่อรันไทม์ของแอป จากนั้นจึงดึงข้อมูลคีย์ API จากเซิร์ฟเวอร์

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

หลังจากที่แอปได้รับคีย์ API อย่างปลอดภัยแล้ว เมื่อต้องการเรียกใช้ Firebase ML Cloud API ให้ระบุคีย์ดังนี้

Swift

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

นอกจากนี้ คุณควรทำตามคำแนะนำทั่วไปในหัวข้อการรักษาคีย์ API ให้ปลอดภัย

ขั้นตอนถัดไป

ดูข้อมูลเกี่ยวกับการเตรียมแอปให้พร้อมเปิดตัวเมื่อใช้ฟีเจอร์อื่นๆ ของ Firebase ได้ในรายการตรวจสอบการเปิดตัว