ทำความเข้าใจกฎการรักษาความปลอดภัยของ 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 /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

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

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

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/.*');
    }
  }
}

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