ป้องกันการละเมิด Gemini API ด้วย Firebase App Check

เมื่อคุณเรียก API จากแอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอปโดยตรง (เช่น API ที่อนุญาตให้เข้าถึงโมเดล Generative AI) API จะเสี่ยงต่อการถูกไคลเอ็นต์ที่ไม่ได้รับอนุญาตนำไปใช้ในทางที่ผิด คุณสามารถใช้ Firebase App Checkเพื่อยืนยันว่าการเรียก API ขาเข้าทั้งหมด มาจากแอปจริงและอุปกรณ์ที่ไม่ถูกดัดแปลง เพื่อช่วยปกป้อง API เหล่านี้จากการถูกนำไปใช้ในทางที่ผิด

Firebase AI Logic มีเกตเวย์พร็อกซีที่ช่วยให้คุณผสานรวมกับ Firebase App Check และปกป้อง API ของโมเดล Generative AI ที่ แอปบนอุปกรณ์เคลื่อนที่และเว็บแอปเรียกใช้ การใช้ App Check กับ Firebase AI Logic SDK รองรับการกำหนดค่าทั้งหมดของเรา ดังนี้

  • ปกป้องผู้ให้บริการ "Gemini API" ทั้ง 2 ราย ได้แก่ Gemini Developer API และ Agent Platform Gemini API (formerly Vertex AI)

  • ปกป้องโมเดลที่รองรับทั้งหมด ทั้ง Gemini โมเดล และ Imagen โมเดล

App Check ยังรองรับ การป้องกันการใช้โทเค็นซ้ำ ซึ่ง หมายความว่าโทเค็น App Check จะใช้ได้เพียงครั้งเดียว

ภาพรวมระดับสูงเกี่ยวกับวิธีการทำงานของ App Check

เมื่อใช้ App Check อุปกรณ์ที่เรียกใช้แอปของคุณจะใช้ผู้ให้บริการการรับรองแอปหรืออุปกรณ์ ที่ยืนยันสิ่งใดสิ่งหนึ่งหรือทั้ง 2 อย่างต่อไปนี้

  • คำขอมาจากแอปของแท้
  • คำขอมาจากอุปกรณ์ของแท้ที่ไม่ถูกดัดแปลง

การรับรองนี้จะแนบไปกับทุกคำขอที่แอปของคุณส่งโดยใช้ Firebase AI Logic SDK เมื่อมีการบังคับใช้ App Check ระบบจะปฏิเสธคำขอจากไคลเอ็นต์ ที่ไม่มีการรับรองที่ถูกต้อง รวมถึงคำขอที่มาจากแอปหรือแพลตฟอร์มที่คุณไม่ได้ให้สิทธิ์

เมื่อตั้งค่า App Check ให้พิจารณาเพิ่ม การป้องกันการใช้โทเค็นซ้ำ ซึ่งจะทำให้โทเค็น App Check ใช้ได้เพียงครั้งเดียว ตัวเลือกนี้ให้การปกป้องที่ดียิ่งขึ้นนอกเหนือจากการปกป้องพื้นฐาน และช่วยให้คุณกำหนดระดับการปกป้องที่เหมาะสมสำหรับแอปและกรณีการใช้งานของคุณได้

ดูข้อมูลโดยละเอียดเกี่ยวกับ App Check ได้ใน เอกสารประกอบ รวมถึงโควต้าและขีดจำกัด

ตั้งค่า App Check

เอกสารประกอบของ App Check มีคำอธิบายโดยละเอียดเกี่ยวกับผู้ให้บริการการรับรอง รวมถึงวิธีการติดตั้งใช้งานโดยละเอียด

  1. เลือกผู้ให้บริการการรับรอง แล้วทำตามวิธีการติดตั้งใช้งานที่ลิงก์ต่อไปนี้

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

  2. (จำเป็น) เปิดใช้การบังคับใช้ App Check ก่อนที่คุณจะส่งแอปไปยังระบบควบคุมซอร์สโค้ดที่พร้อมให้บริการแบบสาธารณะ แชร์แอป หรือทำให้แอปพร้อมให้บริการแบบสาธารณะ

  3. (แนะนำ) เพิ่มการปกป้องโดยเพิ่ม การป้องกันการใช้โทเค็นซ้ำ, ซึ่งหมายความว่าโทเค็น App Check จะใช้ได้เพียงครั้งเดียว

  4. สำหรับการพัฒนาในเครื่องเมื่อมีการบังคับใช้ App Check ให้กำหนดค่า App Check ผู้ให้บริการการดีบัก เพื่อข้ามการรับรองในขณะที่ยังคงรักษา การบังคับใช้ App Check ดูวิธีการตั้งค่าสำหรับแพลตฟอร์มของคุณ: iOS+ | Android | เว็บ | Flutter | Unity.

เพิ่มการปกป้องโดยเพิ่มการป้องกันการใช้โทเค็นซ้ำ

เราขอแนะนำให้ใช้ SDK เวอร์ชันล่าสุด แต่ โปรดตรวจสอบว่าคุณใช้เวอร์ชันใดเวอร์ชันหนึ่งต่อไปนี้เพื่อใช้ การป้องกันการใช้โทเค็นซ้ำ:
แพลตฟอร์ม Apple เวอร์ชัน 12.2.0 ขึ้นไป | Android BoM เวอร์ชัน 34.14.0 ขึ้นไป (App Check เวอร์ชัน 19.1.0 ขึ้นไป) | เว็บเวอร์ชัน 12.14.0 ขึ้นไป | Flutter เวอร์ชัน 4.15.0 ขึ้นไป (App Check เวอร์ชัน 4.10.0 ขึ้นไป) | Unity เวอร์ชัน 13.12.0 ขึ้นไป

โดยค่าเริ่มต้น App Check จะใช้ โทเค็นเซสชัน ซึ่งมี Time To Live (TTL) ที่กำหนดค่าได้ระหว่าง 30 นาที ถึง 7 วัน SDK จะแคชโทเค็นเซสชันเหล่านี้ ส่งไปพร้อมกับ คำขอจากแอป และนำกลับมาใช้ใหม่ได้จนกว่า TTL จะหมดอายุApp Check การใช้โทเค็นเซสชันถือเป็นการ ปกป้องพื้นฐาน

อย่างไรก็ตาม คุณสามารถเพิ่มการปกป้องนอกเหนือจากการป้องกันพื้นฐานนี้ได้โดยการบังคับใช้ การป้องกันการใช้โทเค็นซ้ำ ซึ่งจะใช้ โทเค็นแบบใช้ได้จำกัดแทน สิ่งที่จะเกิดขึ้นเมื่อมีการบังคับใช้การป้องกันการใช้โทเค็นซ้ำ ได้แก่

  • App Check จะบล็อกคำขอไปยัง Firebase AI Logic ที่ใช้ โทเค็นเซสชัน แต่ App Check จะอนุญาต คำขอไปยัง Firebase AI Logic ก็ต่อเมื่อคำขอนั้นใช้ โทเค็นที่จำกัดการใช้ที่เพิ่งสร้างขึ้นใหม่

  • หลังจากยืนยันโทเค็นที่จำกัดการใช้แล้ว ระบบจะใช้โทเค็นดังกล่าวเพื่อให้ใช้ได้เพียงครั้งเดียว ซึ่งจะป้องกันการโจมตีแบบใช้ซ้ำ

  • App Check SDK จะสร้างโทเค็นที่จำกัดการใช้ใหม่สำหรับคำขอ แต่ละ รายการ โปรดทราบว่ากระบวนการนี้อาจส่งผลต่อคำขอของคุณโดยการเพิ่มเวลาในการตอบสนองและบางครั้งอาจมีค่าใช้จ่าย (ขึ้นอยู่กับผู้ให้บริการการรับรอง)

ตั้งค่าและบังคับใช้การป้องกันการใช้โทเค็นซ้ำ

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาเฉพาะของผู้ให้บริการ และโค้ดในหน้านี้

วิธีตั้งค่าและบังคับใช้การป้องกันการใช้โทเค็นซ้ำมีดังนี้

  1. หากยังไม่ได้ดำเนินการ ให้ติดตั้งใช้งาน App Check และ เปิดใช้การบังคับใช้App Check สำหรับแอป

  2. เปิดใช้โทเค็นแบบใช้ได้จำกัด

    ในแอป ให้ตั้งค่าพารามิเตอร์ useLimitedUseAppCheckTokens เป็น true ในระหว่างการสร้างอินสแตนซ์ ดังนี้

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. บังคับใช้การป้องกันการใช้โทเค็นซ้ำ

    1. ในฐานของโค้ดของแอป ให้ตรวจสอบว่าคุณได้เปิดใช้โทเค็นแบบใช้ได้จำกัดแล้ว (ดูขั้นตอนก่อนหน้า)

    2. ในคอนโซล Firebase ให้ไปที่ ความปลอดภัย > App Check

    3. ขยายมุมมองเมตริกสำหรับ Firebase AI Logic

    4. ตรวจสอบว่า การปกป้องพื้นฐานบังคับใช้แล้ว จากนั้นคลิก ต่อไป

    5. สำหรับการป้องกันการใช้โทเค็นซ้ำ ให้เลือกไม่บังคับใช้ (ตรวจสอบเท่านั้น) หรือบังคับใช้

      พิจารณาสิ่งต่อไปนี้เพื่อตัดสินใจว่าจะบังคับใช้การป้องกันการใช้โทเค็นซ้ำเมื่อใด

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

      • คุณสามารถตรวจสอบเมตริกไม่ได้รับการยืนยัน: โทเค็นที่ใช้ซ้ำ ได้โดยเฉพาะ ซึ่งเป็นจำนวนคำขอที่มีโทเค็นที่ใช้ไปแล้วในคำขอก่อนหน้า ตรวจสอบเมตริกนี้ในคอนโซล Firebase (ไปที่แท็บความปลอดภัย > App Check > API)

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

ทำความเข้าใจวิธีที่ Firebase AI Logic ผสานรวมกับ App Check

หากต้องการใช้ Firebase AI Logic SDK คุณต้องเปิดใช้ Firebase AI Logic API (firebasevertexai.googleapis.com) ในโปรเจ็กต์ Firebase เนื่องจากระบบจะส่งคำขอที่ Firebase AI Logic SDK ส่งไปยังFirebase AI Logic เซิร์ฟเวอร์ก่อน ซึ่งทำหน้าที่เป็นเกตเวย์พร็อกซีที่การยืนยันFirebase App Check เกิดขึ้น ก่อน ที่คำขอจะได้รับอนุญาตให้ไปยังแบ็กเอนด์ของผู้ให้บริการ "Gemini API" ที่คุณเลือกและ API เพื่อเข้าถึงโมเดลGemini และImagen

(ไม่บังคับ) บังคับใช้ App Check โดยไม่มีผู้ให้บริการการรับรองเวอร์ชันใช้งานจริง (ผู้ให้บริการการดีบักเท่านั้น)

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

  1. ตรวจสอบว่ามีการบังคับใช้ App Check สำหรับ AI Logic แล้วหรือไม่

    1. ในคอนโซล Firebase ให้ไปที่แท็บความปลอดภัย > App Check > API

    2. ค้นหาแถวสำหรับ Firebase AI Logic หากแสดง Unenforced ให้ทำตามวิธีการที่เหลือต่อไป

  2. คลิกแถวสำหรับ Firebase AI Logic แล้วคุณจะเห็นกราฟเมตริก คลิกตั้งค่า ใต้กราฟเหล่านั้น

  3. ในหน้าจอแรกของกล่องโต้ตอบ (การปกป้องพื้นฐาน) ให้เลือก บังคับใช้ แล้วคลิก ต่อไป

  4. ในหน้าจอถัดไป (การป้องกันการใช้โทเค็นซ้ำ) ให้เลือกปิดใช้ คุณตั้งค่านี้ได้ทุกเมื่อในภายหลังและกลับไปที่เวิร์กโฟลว์การตั้งค่านี้ คลิกต่อไป

  5. ในหน้าจอสุดท้าย ให้ตรวจสอบข้อควรพิจารณาสำหรับการบังคับใช้ App Check เพื่อให้แน่ใจว่าคุณพร้อมที่จะบังคับใช้ App Check แล้ว หากพร้อมแล้ว ให้คลิกต่อไป

    คุณ ไม่ จำเป็นต้องลงทะเบียนแอปหากต้องการบังคับใช้ App Check และ ใช้เพียงผู้ให้บริการการดีบักกับ AI Logic ใน แอปก่อนการใช้งานจริง อย่างไรก็ตาม เมื่อพร้อมที่จะเผยแพร่แอปให้ผู้ใช้ปลายทาง แล้ว คุณต้องลงทะเบียนแอปเป็นส่วนหนึ่งของการตั้งค่าผู้ให้บริการการรับรองเวอร์ชันใช้งาน จริง (เช่น App Attest, Play Integrity หรือ reCAPTCHA Enterprise)

  6. สำหรับการพัฒนาในเครื่องเมื่อ App Check มีการบังคับใช้ คุณต้องกำหนดค่า App Check ผู้ให้บริการการดีบัก เพื่อข้ามการรับรองในขณะที่ยังคง บังคับใช้ App Check

    ดูรายละเอียดเกี่ยวกับการกำหนดค่าผู้ให้บริการการดีบักได้ในวิธีการสำหรับ แพลตฟอร์มของคุณ: iOS+ | Android | เว็บ | Flutter | Unity