ทำความเข้าใจกฎการรักษาความปลอดภัยของ 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 คอนโซล แล้วดูแท็บ 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/.*');
    }
  }
}

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