หากแอป 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 ใหม่
เนื่องจากคีย์ API ของ Firebase ML อนุญาตการเข้าถึง 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 ได้ในรายการตรวจสอบการเปิดตัว