หากแอป Apple ของคุณใช้ Cloud API ของ Firebase ML คุณควรดำเนินการเพิ่มเติมเพื่อป้องกันการเข้าถึง API ที่ไม่ได้รับอนุญาตก่อนที่จะเปิดตัวแอปในเวอร์ชันที่ใช้งานจริง
1. ลดขอบเขตของคีย์ API ที่มีอยู่
ก่อนอื่น ให้กำหนดค่าคีย์ API ที่มีอยู่เพื่อไม่อนุญาตการเข้าถึง Cloud Vision API โดยทำดังนี้
เปิดหน้าข้อมูลเข้าสู่ระบบของคอนโซล Google Cloud เมื่อได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์
สำหรับคีย์ API ที่มีอยู่แต่ละรายการในรายการ ให้เปิดมุมมองการแก้ไข
ในส่วนการจำกัด API ให้เลือกจำกัดคีย์ แล้วเพิ่ม API ทั้งหมดที่คุณต้องการให้คีย์ API มีสิทธิ์เข้าถึงลงในรายการ โปรดไม่รวม Cloud Vision API
เมื่อกำหนดค่าข้อจำกัด API ของคีย์ API คุณจะประกาศอย่างชัดเจน ว่าคีย์มีสิทธิ์เข้าถึง API ใด โดยค่าเริ่มต้น เมื่อส่วนข้อจำกัดของ API เลือกไม่จำกัดคีย์ คีย์ API จะใช้เพื่อเข้าถึง API ใดก็ได้ที่เปิดใช้สำหรับโปรเจ็กต์
ตอนนี้คีย์ API ที่มีอยู่จะไม่ให้สิทธิ์เข้าถึงบริการ ML บนคลาวด์ แต่คีย์แต่ละรายการจะยังคงใช้ได้กับ API ที่คุณเพิ่มลงในรายการข้อจำกัดของ API
โปรดทราบว่าหากเปิดใช้ API เพิ่มเติมในอนาคต คุณจะต้องเพิ่ม API เหล่านั้นลงในรายการข้อจำกัดของ API สำหรับคีย์ API ที่เกี่ยวข้อง
2. สร้างคีย์ API ใหม่เพื่อใช้กับ Firebase ML
จากนั้นสร้างคีย์ API ใหม่สำหรับ Firebase ML ที่อนุญาตเฉพาะการเรียกไปยัง Cloud Vision API โดยทำดังนี้
กลับไปที่หน้าข้อมูลเข้าสู่ระบบ ตรวจสอบว่าได้เลือกโปรเจ็กต์ Firebase แล้ว
คลิกสร้างข้อมูลเข้าสู่ระบบ > คีย์ API จดคีย์ API ใหม่ แล้วคลิกจำกัดคีย์
ในส่วนการจำกัด API ให้เลือกจำกัดคีย์ แล้วเพิ่ม Cloud Vision API เท่านั้นลงในรายการ
คีย์ API นี้ให้สิทธิ์เข้าถึงเฉพาะ Cloud Vision API และใช้ได้โดย Firebase ML เพื่อเข้าถึงโมเดลที่อิงตามระบบคลาวด์
3. แนะนํา: ลดโควต้าของ Cloud Vision API
คุณควรลดโควต้าต่อผู้ใช้ของ Cloud Vision API จากการตั้งค่าเริ่มต้นเพื่อช่วยลดผลกระทบจากคีย์ที่ถูกบุกรุก วิธีการมีดังนี้
เปิดหน้าโควต้า Cloud Vision API ของ Google Cloud คอนโซล เมื่อได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์
ในส่วนคำขอ ให้ตั้งค่าโควต้าคำขอต่อนาทีต่อผู้ใช้ ให้เหมาะสมกับแอปของคุณ ตัวอย่างเช่น หากแอปของคุณเกี่ยวข้องกับ การอัปโหลดรูปภาพเอกสารเพื่อรับข้อความกลับมา ผู้ใช้ไม่น่าจะ ทำเช่นนั้นมากกว่า 1 ครั้งในทุกๆ 2-3 วินาที ดังนั้นโควต้า 30-40 จึงน่าจะปลอดภัย
โปรดทราบว่าในบริบทนี้ "คำขอต่อผู้ใช้" หมายถึงคำขอจากที่อยู่ IP เดียว คุณอาจต้องพิจารณาเรื่องนี้หากคาดว่าจะมีผู้ใช้หลายคนใช้แอปพร้อมกันจากเบื้องหลัง NAT
4. เรียกใช้ Cloud API โดยใช้คีย์ API Firebase ML
สุดท้าย ให้กำหนดค่า Firebase ML ในแอปเพื่อใช้คีย์ API ใหม่
เนื่องจากคีย์ API Firebase ML อนุญาตให้เข้าถึง Cloud Vision API โดยไม่ต้องมีการตรวจสอบสิทธิ์ จึงควรเก็บคีย์ไว้เป็นความลับเพื่อป้องกันการใช้งานที่ไม่ได้รับอนุญาตและการเรียกเก็บเงินจากบัญชีสำหรับการเรียกเก็บเงิน ดังนั้น คุณจึงไม่ควรรวมคีย์ API ไว้ในไบนารีของแอป แต่ให้ตรวจสอบว่าผู้ใช้ที่เชื่อถือได้ลงชื่อเข้าใช้แล้วในเวลาที่แอปทำงาน จากนั้นจึงดึงคีย์ API จากเซิร์ฟเวอร์
แม้จะปฏิบัติตามแนวทางเหล่านี้ แต่ก็อาจมีกรณีที่คีย์ API ถูก บุกรุกได้ คุณควรดำเนินการเพื่อช่วยลดผลกระทบจากคีย์ที่ถูกบุกรุก เช่น ลดโควต้าต่อผู้ใช้ของ API ตามที่อธิบายไว้ข้างต้น ใช้การหมุนเวียนคีย์ และออกคีย์ที่แตกต่างกันให้กับกลุ่มผู้ใช้ต่างๆ
หลังจากที่แอปได้รับคีย์ API อย่างปลอดภัยแล้ว เมื่อต้องการเรียกใช้ Firebase MLCloud API ให้ระบุคีย์ดังนี้
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)
}
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 ได้ในรายการตรวจสอบการเปิดตัว