หากแอป Apple ใช้ 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 ใหม่
เนื่องจาก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 ได้ในรายการตรวจสอบการเปิดตัว