ทำความเข้าใจกฎการรักษาความปลอดภัยของ Firebase สำหรับ Cloud Storage

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

Firebase Authenticationช่วยให้คุณตรวจสอบสิทธิ์ผู้ใช้ได้ง่าย เช่นเดียวกับที่ Firebase Security Rules สำหรับ Cloud Storage ช่วยให้คุณให้สิทธิ์ผู้ใช้และตรวจสอบคำขอได้ง่าย Cloud Storage Security Rules จัดการความซับซ้อนให้คุณโดย อนุญาตให้คุณระบุสิทธิ์ตามเส้นทาง คุณสามารถเขียนกฎการให้สิทธิ์ที่จำกัดCloud Storageคำขอไปยังผู้ใช้บางรายหรือจำกัดขนาดการอัปโหลดได้โดยใช้โค้ดเพียงไม่กี่บรรทัด

Firebase Realtime Database มีฟีเจอร์ที่คล้ายกันชื่อ Firebase Realtime Database Security Rules

การตรวจสอบสิทธิ์

การทราบว่าผู้ใช้คือใครเป็นส่วนสำคัญในการสร้างแอปพลิเคชัน และ Firebase Authenticationมีโซลูชันที่ใช้งานง่าย ปลอดภัย และฝั่งไคลเอ็นต์เท่านั้น สำหรับการตรวจสอบสิทธิ์ Firebase Security Rules สำหรับ Cloud Storage เชื่อมโยงกับ Firebase Authentication เพื่อความปลอดภัยตามผู้ใช้ เมื่อมีการตรวจสอบสิทธิ์ผู้ใช้ด้วย Firebase Authentication ตัวแปร request.auth ใน Cloud Storage Security Rules จะกลายเป็นออบเจ็กต์ที่มี รหัสที่ไม่ซ้ำกันของผู้ใช้ (request.auth.uid) และข้อมูลผู้ใช้อื่นๆ ทั้งหมด ในโทเค็น (request.auth.token) เมื่อผู้ใช้ไม่ได้รับการตรวจสอบสิทธิ์ request.auth จะเป็น null ซึ่งจะช่วยให้คุณควบคุมการเข้าถึงข้อมูลได้อย่างปลอดภัย ตามผู้ใช้แต่ละราย ดูข้อมูลเพิ่มเติมได้ในส่วนการตรวจสอบสิทธิ์

การให้สิทธิ์

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

Cloud Storage ช่วยให้คุณระบุการให้สิทธิ์ต่อไฟล์และต่อเส้นทาง ซึ่งอยู่ในเซิร์ฟเวอร์ของเราและกำหนดการเข้าถึงไฟล์ในแอปได้ เช่น Cloud Storage Security Rules เริ่มต้นต้องใช้ Firebase Authentication ใน การดำเนินการ read หรือ write ใดๆ กับไฟล์ทั้งหมด

service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

คุณแก้ไขกฎเหล่านี้ได้โดยเลือกแอป Firebase ในFirebase Console แล้วดูแท็บ Rules ของส่วน Storage

การตรวจสอบข้อมูล

Firebase Security Rules สำหรับ Cloud Storage ยังใช้ในการตรวจสอบข้อมูลได้ด้วย ซึ่งรวมถึง การตรวจสอบชื่อและเส้นทางไฟล์ รวมถึงพร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์ เช่น contentType และ size

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

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