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

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

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

ฐานข้อมูลเรียลไทม์ของ Firebase มีฟีเจอร์ที่คล้ายกัน ซึ่งเรียกว่า กฎความปลอดภัยของฐานข้อมูลเรียลไทม์ของ Firebase

การรับรองความถูกต้อง

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

การอนุญาต

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

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

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

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

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

กฎความปลอดภัย Firebase สำหรับ 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/.*');
    }
  }
}

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