เริ่มต้นใช้งานกฎความปลอดภัยของ Cloud Storage

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

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

ภาพรวม

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

// Rules can optionally specify a condition
allow write: if <condition>;

เส้นทางไฟล์ของกฎ match ที่แสดง ข้อมูลอ้างอิง Cloud Storage รายการ กฎ สามารถmatchเส้นทางไฟล์อย่างน้อย 1 เส้นทาง และกฎมากกว่า 1 ข้อสามารถmatchไฟล์ได้ เส้นทางใน request ที่ระบุ

// Rules match specific paths
match /images/profilePhoto.png {
  allow write: if <condition>;
}

match /images/croppedProfilePhoto.png {
  allow write: if <other_condition>;
}

บริบทของการประเมินกฎจะแสดงผ่าน request และ ออบเจ็กต์ resource ที่ให้ข้อมูล เช่น บริบทการตรวจสอบสิทธิ์ (request.auth) และขนาดของออบเจ็กต์ที่มีอยู่ (resource.size)

// Rules can specify conditions that consider the request context
match /images/profilePhoto.png {
  allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024;
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Storage Security Rules ใน ส่วนไฟล์ที่ปลอดภัย

กฎตัวอย่าง

Cloud Storage Security Rules ต้องระบุ service ก่อน (ในกรณีของเรา firebase.storage) และที่เก็บข้อมูล Cloud Storage (ผ่าน match /b/{bucket}/o) ว่ากฎใด เทียบกับคู่แข่ง กฎเริ่มต้นต้องใช้Firebase Authentication แต่ ตัวอย่างของกฎทั่วไปอื่นๆ ที่มีการควบคุมการเข้าถึงแตกต่างกัน

ค่าเริ่มต้น

// Only authenticated users can read or write to the folder
service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

สาธารณะ

// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write;
    }
  }
}

ผู้ใช้

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/file.txt"
    match /user/{userId}/{fileName} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

ส่วนตัว

// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

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

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

แก้ไขกฎ

Cloud Storage มอบวิธีง่ายๆ ในการแก้ไขCloud Storage Security Rules ผ่านแท็บกฎในส่วนพื้นที่เก็บข้อมูลของคอนโซล Firebase ในแท็บกฎ คุณสามารถดูและแก้ไขการแก้ไขปัจจุบันได้อย่างรวดเร็วและง่ายดาย กฎ ระบบจะนำกฎเหล่านี้ไปใช้ได้โดยคลิกเผยแพร่ หรือบันทึกไฟล์ (ctrl/cmd + s) ระบบจะอัปโหลดกฎไปยัง Cloud Storage ทันที แต่อาจใช้เวลาถึง 5 นาทีในการแสดงผล

คุณใช้ Firebase CLI เพื่อทำให้กฎใช้งานได้เช่นกัน หากคุณเลือก Storage เมื่อใช้ firebase init ซึ่งเป็นไฟล์ storage.rules ที่มีสำเนาของ ระบบจะสร้างกฎเริ่มต้น ในไดเรกทอรีโปรเจ็กต์ คุณสามารถทำให้กฎเหล่านี้ใช้งานได้โดยใช้ คำสั่ง firebase deploy หากคุณมีที่เก็บข้อมูลหลายรายการในโปรเจ็กต์ สามารถใช้การทำให้เป้าหมายใช้งานได้ เพื่อทำให้กฎใช้งานได้ หลายรายการพร้อมกันจากโฟลเดอร์โปรเจ็กต์เดียวกัน

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของการรักษาความปลอดภัยตามไฟล์ใน ส่วนไฟล์ที่ปลอดภัย หรือทำความเข้าใจเกี่ยวกับผู้ใช้ ในความปลอดภัยของผู้ใช้