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

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