Tìm hiểu các quy tắc bảo mật của Firebase dành cho Cloud Storage

Thông thường, bảo mật là một trong những phần phức tạp nhất của ứng dụng phát triển ứng dụng. Trong hầu hết các ứng dụng, nhà phát triển phải xây dựng và chạy một máy chủ xử lý quy trình xác thực (người dùng là ai) và uỷ quyền (những việc người dùng có thể làm). Việc xác thực và uỷ quyền khó thiết lập, khó thực hiện hơn và cực kỳ quan trọng đến sự thành công của sản phẩm.

Tương tự như cách Firebase Authentication giúp bạn dễ dàng xác thực người dùng, Firebase Security Rules cho Cloud Storage sẽ giúp bạn dễ dàng cấp quyền cho người dùng và xác thực yêu cầu. Cloud Storage Security Rules giúp bạn giải quyết những vấn đề phức tạp bằng cách cho phép bạn chỉ định các quyền dựa trên đường dẫn. Chỉ trong vài dòng mã, bạn có thể ghi các quy tắc uỷ quyền hạn chế các yêu cầu Cloud Storage vào một người dùng cụ thể hoặc giới hạn kích thước của tệp tải lên.

Firebase Realtime Database có một tính năng tương tự là Firebase Realtime Database Security Rules

Xác thực

Việc biết được người dùng của bạn là ai là một phần quan trọng trong việc tạo ứng dụng và Firebase Authentication cung cấp giải pháp chỉ ở phía máy khách, dễ sử dụng, an toàn vào xác thực. Firebase Security Rules cho Cloud Storage trận hoà với Firebase Authentication nhằm tăng cường bảo mật cho người dùng. Khi người dùng được xác thực bằng Firebase Authentication, biến request.auth trong Cloud Storage Security Rules sẽ trở thành đối tượng chứa mã nhận dạng duy nhất của người dùng (request.auth.uid) và tất cả người dùng khác trong mã thông báo (request.auth.token). Khi người dùng không đã xác thực, request.authnull. Tính năng này cho phép bạn kiểm soát một cách an toàn quyền truy cập dữ liệu của từng người dùng. Bạn có thể tìm hiểu thêm trong Mục Xác thực.

Ủy quyền

Việc nhận dạng người dùng chỉ là một phần của quá trình bảo mật. Khi đã biết họ là ai, bạn cần cách kiểm soát quyền truy cập của họ vào các tệp trong Cloud Storage.

Cloud Storage cho phép bạn chỉ định việc uỷ quyền theo từng tệp và mỗi đường dẫn các quy tắc nằm trên máy chủ của chúng tôi và xác định quyền truy cập vào các tệp trong ứng dụng của bạn. Ví dụ: Cloud Storage Security Rules mặc định yêu cầu Firebase Authentication trong để thực hiện thao tác read hoặc write bất kỳ trên tất cả tệp:

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

Bạn có thể chỉnh sửa các quy tắc này bằng cách chọn một ứng dụng Firebase trong bảng điều khiển của Firebase và xem thẻ Rules của phần Bộ nhớ.

Xác thực dữ liệu

Firebase Security Rules của Cloud Storage cũng có thể được dùng để xác thực dữ liệu, bao gồm xác thực tên và đường dẫn tệp cũng như các thuộc tính siêu dữ liệu của tệp như contentTypesize.

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

Các bước tiếp theo