ปกป้องข้อมูลรับรองคลาวด์ของแอป Firebase ML Apple ของคุณ

หากแอป Apple ของคุณใช้ Cloud 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. ในส่วน คำขอ ให้ตั้ง ค่าคำขอต่อนาทีต่อโควต้าผู้ใช้ เป็นสิ่งที่สมเหตุสมผลสำหรับแอปของคุณ ตัวอย่างเช่น หากแอปของคุณเกี่ยวข้องกับการอัปโหลดรูปภาพของเอกสารเพื่อรับข้อความกลับ ก็ไม่น่าเป็นไปได้ที่ผู้ใช้จะดำเนินการดังกล่าวมากกว่าหนึ่งครั้งทุกๆ สองสามวินาที ดังนั้นโควต้า 30-40 ก็น่าจะปลอดภัย

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

4. เรียก Cloud API โดยใช้คีย์ Firebase ML API ของคุณ

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

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

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

หลังจากที่แอปของคุณได้รับคีย์ API อย่างปลอดภัยแล้ว เมื่อคุณต้องการเรียกใช้ Firebase ML Cloud 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)
}

วัตถุประสงค์-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 อื่นๆ