Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

เปิดใช้งานการตรวจสอบแอปด้วย App Attest บน iOS

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

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

หากคุณต้องการที่จะใช้ตรวจสอบกับผู้ให้บริการ App ของคุณเองดู Implement ผู้ให้บริการตรวจสอบที่กำหนดเอง App

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

  1. เพิ่ม Firebase กับโครงการ iOS ของคุณ ถ้าคุณยังไม่ได้ดำเนินการ

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

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

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

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

    TTL ที่เริ่มต้น 1 ชั่วโมงเป็นที่เหมาะสมสำหรับแอปมากที่สุด

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

  1. เพิ่มการพึ่งพาสำหรับ App ตรวจสอบโครงการของคุณ Podfile :

    pod 'Firebase/AppCheck'

    หรือหรือคุณสามารถใช้ สวิฟท์แพคเกจจัดการ แทน

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

  2. เรียก pod install และเปิดสร้าง .xcworkspace ไฟล์

  3. ใน Xcode เพิ่มความสามารถใน App ยืนยันถึงแอปของคุณ

  4. ในโครงการของคุณ .entitlements ไฟล์ตั้งค่าสภาพแวดล้อมต่างยืนยันถึง production

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

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

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

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

Swift

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

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

@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

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

@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 ชั้นกำหนดค่าแอปตรวจสอบการใช้งาน:

Swift

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

FirebaseApp.configure()

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

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

[FIRApp configure];

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

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

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

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

ฐานข้อมูลเรียลไทม์และที่เก็บข้อมูลบนคลาวด์

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

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

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

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

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

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

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

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

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

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

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

  • หากแอปของคุณยังไม่เปิดตัว คุณควรเปิดใช้การบังคับใช้ 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 โดย การสร้างบันทึกตามตัวชี้วัดที่เคาน์เตอร์ ที่มีตัวกรองตัวชี้วัดต่อไปนี้:

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. เปิดใช้งานการบังคับใช้

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

ฐานข้อมูลเรียลไทม์และที่เก็บข้อมูลบนคลาวด์

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

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

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

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

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

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

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

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

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

ดู การตรวจสอบการใช้งาน App กับผู้ให้บริการตรวจแก้จุดบกพร่องบน iOS