Check out what’s new from Firebase at Google I/O 2022. Learn more

เปิดใช้งาน App Check with App Attest บนแพลตฟอร์ม Apple

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

App Check ใช้ App Attest เพื่อยืนยันว่าคำขอไปยังบริการ Firebase นั้นมาจากแอปจริงของคุณ ปัจจุบัน App Check ไม่ได้ใช้ App Attest เพื่อ วิเคราะห์ความเสี่ยงจากการฉ้อโกง

หากคุณต้องการใช้ App Check กับผู้ให้บริการที่คุณกำหนดเอง โปรดดู ที่ Implement a custom App Check provider

1. ตั้งค่าโปรเจ็กต์ Firebase ของคุณ

  1. คุณจะต้องใช้ Xcode 12.5+ เพื่อใช้ App Attest

  2. เพิ่ม Firebase ในโครงการ Apple หากคุณยังไม่ได้ดำเนินการ

  3. ลงทะเบียนแอปของคุณเพื่อใช้ App Check กับผู้ให้บริการ App Attest ในส่วน App Check ของคอนโซล Firebase

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

  4. ไม่บังคับ : ในการตั้งค่าการลงทะเบียนแอพ ตั้งค่า time-to-live (TTL) แบบกำหนดเองสำหรับโทเค็น App Check ที่ออกโดยผู้ให้บริการ คุณสามารถตั้งค่า TTL เป็นค่าใดก็ได้ระหว่าง 30 นาทีถึง 7 วัน เมื่อเปลี่ยนค่านี้ โปรดระวังการประนีประนอมต่อไปนี้:

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

    TTL เริ่มต้น 1 ชั่วโมง นั้นสมเหตุสมผลสำหรับแอปส่วนใหญ่ โปรดทราบว่าไลบรารี App Check จะรีเฟรชโทเค็นที่ระยะเวลา TTL ประมาณครึ่งหนึ่ง

2. เพิ่มไลบรารี App Check ในแอปของคุณ

  1. เพิ่มการพึ่งพา App Check ให้กับ Podfile ของโครงการของคุณ:

    pod 'FirebaseAppCheck'

    หรือคุณสามารถใช้ Swift Package Manager แทนได้

    ตรวจสอบว่าคุณใช้ Firebase SDK เวอร์ชันล่าสุดที่ใช้อยู่ด้วย

  2. เรียกใช้การ pod install และเปิดไฟล์ . .xcworkspace ที่สร้างขึ้น

  3. ใน Xcode เพิ่มความสามารถ App Attest ให้กับแอปของคุณ

  4. ในไฟล์ .entitlements ของโปรเจ็กต์ของคุณ ตั้งค่าสภาพแวดล้อม App Attest เป็น production

3. เริ่มต้นการตรวจสอบแอป

คุณจะต้องเริ่มต้น App Check ก่อนจึงจะใช้ Firebase SDK อื่นๆ

ขั้นแรก เขียนการใช้งาน AppCheckProviderFactory ลักษณะเฉพาะของการใช้งานของคุณจะขึ้นอยู่กับกรณีการใช้งานของคุณ

ตัวอย่างเช่น หากคุณมีเฉพาะผู้ใช้บน iOS 14 และใหม่กว่า คุณสามารถสร้างวัตถุ AppAttestProvider ได้ตลอดเวลา:

Swift

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

วัตถุประสงค์-C

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

หรือคุณสามารถสร้างออบเจ็กต์ AppAttestProvider บน iOS 14 และใหม่กว่า และถอยกลับไปที่ DeviceCheckProvider ในเวอร์ชันก่อนหน้า:

Swift

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

วัตถุประสงค์-C

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

หลังจากที่คุณได้ใช้คลาส AppCheckProviderFactory แล้ว ให้กำหนดค่า App Check เพื่อใช้งาน:

Swift

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

วัตถุประสงค์-C

หมายเหตุ: ผลิตภัณฑ์ Firebase นี้ไม่มีในเป้าหมาย watchOS

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

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

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

5. ตรวจสอบตัวชี้วัดคำขอ

ขณะนี้แอปที่อัปเดตของคุณอยู่ในมือของผู้ใช้แล้ว คุณสามารถเปิดใช้การบังคับใช้ App Check สำหรับผลิตภัณฑ์ Firebase ที่คุณใช้ได้ อย่างไรก็ตาม ก่อนที่คุณจะดำเนินการดังกล่าว คุณควรตรวจสอบให้แน่ใจว่าการทำเช่นนั้นจะไม่รบกวนผู้ใช้ที่ถูกต้องตามกฎหมายที่มีอยู่ของคุณ

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

เครื่องมือสำคัญที่คุณสามารถใช้ในการตัดสินใจนี้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage คือหน้าจอตัววัดคำขอ App Check

หากต้องการดูเมตริกคำขอ App Check สำหรับผลิตภัณฑ์ ให้เปิดส่วนการ ตรวจสอบแอป ของคอนโซล Firebase ตัวอย่างเช่น:

ภาพหน้าจอของหน้าเมตริก App Check

ตัวชี้วัดคำขอสำหรับแต่ละผลิตภัณฑ์แบ่งออกเป็นสี่หมวดหมู่:

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

  • คำขอ ของไคลเอ็นต์ที่ล้าสมัย คือคำขอที่ไม่มีโทเค็นการตรวจสอบแอป คำขอเหล่านี้อาจมาจาก Firebase SDK เวอร์ชันเก่าก่อนที่ App Check จะรวมอยู่ในแอป

  • คำขอ ต้นทางที่ไม่รู้จัก คือคำขอที่ไม่มีโทเค็นการตรวจสอบแอป และดูเหมือนว่าไม่ได้มาจาก Firebase SDK สิ่งเหล่านี้อาจมาจากคำขอที่สร้างด้วยคีย์ API ที่ถูกขโมยหรือคำขอที่ปลอมแปลงซึ่งทำโดยไม่มี Firebase SDK

  • คำขอที่ ไม่ถูกต้อง คือคำขอที่มีโทเค็นการตรวจสอบแอปที่ไม่ถูกต้อง ซึ่งอาจมาจากไคลเอ็นต์ปลอมที่พยายามแอบอ้างเป็นแอปของคุณ หรือจากสภาพแวดล้อมที่จำลองขึ้น

การแจกจ่ายหมวดหมู่เหล่านี้สำหรับแอปของคุณควรแจ้งเมื่อคุณตัดสินใจเปิดใช้การบังคับใช้ นี่คือแนวทางปฏิบัติบางประการ:

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

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

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

ฟังก์ชั่นคลาวด์

สำหรับ Cloud Functions คุณสามารถรับเมตริก App Check ได้โดยตรวจสอบบันทึกของฟังก์ชัน การเรียกใช้ฟังก์ชันที่เรียกได้ทุกครั้งจะปล่อยรายการบันทึกที่มีโครงสร้างดังตัวอย่างต่อไปนี้

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

คุณวิเคราะห์เมตริกเหล่านี้ได้ใน Google Cloud Console โดย สร้างตัวนับตามบันทึกโดยใช้ ตัวกรองเมตริกต่อไปนี้

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

ติดป้ายกำกับตัววัด โดยใช้ฟิลด์ jsonPayload.verifications.appCheck

6. เปิดใช้งานการบังคับใช้

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

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

ในการเปิดใช้การบังคับใช้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore (iOS และ Android) และที่เก็บข้อมูลบนคลาวด์:

  1. เปิดส่วนการ ตรวจสอบแอป ของคอนโซล Firebase

  2. ขยายมุมมองเมตริกของผลิตภัณฑ์ที่คุณต้องการเปิดใช้การบังคับใช้

  3. คลิก บังคับ ใช้และยืนยันการเลือกของคุณ

โปรดทราบว่าอาจใช้เวลาถึง 15 นาทีหลังจากที่คุณเปิดใช้การบังคับใช้เพื่อให้มีผล

ฟังก์ชั่นคลาวด์

โปรดดูที่ เปิดใช้การบังคับใช้การตรวจสอบแอปสำหรับฟังก์ชันระบบคลาวด์

ขั้นตอนถัดไป

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

ดู ใช้การตรวจสอบแอปกับผู้ให้บริการแก้ไขข้อบกพร่องบนแพลตฟอร์ม Apple