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

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

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

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

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

การรู้ว่าผู้ใช้ของคุณคือใครคือส่วนสำคัญในการสร้างแอปพลิเคชัน และ การตรวจสอบสิทธิ์ Firebase เป็นโซลูชันที่ใช้งานง่าย ปลอดภัย และฝั่งไคลเอ็นต์เท่านั้น การตรวจสอบสิทธิ์ กฎการรักษาความปลอดภัยของ Firebase สำหรับ Cloud Storage จะเชื่อมโยงกับการตรวจสอบสิทธิ์ Firebase เพื่อความปลอดภัยตามผู้ใช้ เมื่อผู้ใช้ได้รับการตรวจสอบสิทธิ์ด้วยการตรวจสอบสิทธิ์ Firebase ตัวแปร request.auth ในกฎความปลอดภัยของ Cloud Storage จะกลายเป็นออบเจ็กต์ที่ มีรหัสที่ไม่ซ้ำกัน (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/.*');
    }
  }
}

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