Trong các ứng dụng thông thường, nhà phát triển phải xây dựng và duy trì nhiều máy chủ thực hiện xác thực, uỷ quyền và xác thực dữ liệu, cũng như logic kinh doanh. Các ứng dụng sử dụng Cloud Storage for Firebase tận dụng Firebase Authentication và Firebase Security Rules cho Cloud Storage để xử lý mô hình không máy chủ xác thực, uỷ quyền và xác thực dữ liệu.
Khi sử dụng Cloud Storage và Cloud Storage Security Rules, bạn có thể tập trung vào tạo nên trải nghiệm người dùng tuyệt vời mà không phải quản lý cơ sở hạ tầng hoặc viết mã xác thực và uỷ quyền phía máy chủ phức tạp!
Tổng quan
Cloud Storage Security Rules được dùng để xác định ai có quyền đọc và ghi
tệp được lưu trữ trong Cloud Storage, cũng như cách tệp được cấu trúc và
siêu dữ liệu nào trong đó. Loại quy tắc cơ bản là quy tắc allow
cho phép thực hiện thao tác read và write nếu điều kiện được chỉ định tùy chọn là
đáp ứng. Một số ví dụ về quy tắc là:
// Rules can optionally specify a condition allow write: if <condition>;
Đường dẫn tệp match của quy tắc biểu thị
Cloud Storage tệp đối chiếu. Quy tắc
có thể match một hoặc nhiều đường dẫn tệp và nhiều quy tắc có thể match tệp
đường dẫn trong một request nhất định:
// Rules match specific paths match /images/profilePhoto.png { allow write: if <condition>; } match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
Bối cảnh của việc đánh giá quy tắc cũng được thể hiện thông qua request và
Các đối tượng resource cung cấp thông tin như ngữ cảnh xác thực
(request.auth) và kích thước của đối tượng hiện tại (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; }
Tìm hiểu thêm về Cloud Storage Security Rules trong Phần Tệp an toàn.
Quy tắc mẫu
Trước tiên, Cloud Storage Security Rules phải chỉ định service (trong trường hợp này là
firebase.storage) và bộ chứa Cloud Storage
(thông qua match /b/{bucket}/o) là những quy tắc
được đánh giá dựa trên. Quy tắc mặc định yêu cầu Firebase Authentication, nhưng sau đây là
một số ví dụ về các quy tắc phổ biến khác với chế độ kiểm soát quyền truy cập khác.
Mặc định
// 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;
}
}
}
Công khai
// 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;
}
}
}
Người dùng
// 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;
}
}
}
Riêng tư
// 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;
}
}
}
Trong quá trình phát triển, bạn có thể sử dụng các quy tắc công khai thay cho quy tắc mặc định để đặt tệp của bạn có thể đọc và ghi công khai. Điều này rất hữu ích cho thử nghiệm, vì bạn có thể bắt đầu mà không cần thiết lập Firebase Authentication. Tuy nhiên, vì Cloud Storage dùng chung một bộ chứa với chế độ mặc định của bạn App Engine ứng dụng, quy tắc này cũng tạo bất kỳ dữ liệu nào mà ứng dụng đó sử dụng công khai.
Quy tắc người dùng cho phép bạn cung cấp cho mỗi người dùng đã xác thực của bạn thông tin cá nhân của riêng họ bộ nhớ tệp. Bạn cũng có thể khoá hoàn toàn các tệp của mình bằng cách sử dụng nhưng hãy lưu ý rằng người dùng của bạn sẽ không thể đọc hoặc ghi bất kỳ nội dung nào thông qua Cloud Storage bằng các quy tắc này. Người dùng truy cập vào các tệp từ ứng dụng App Engine của bạn hoặc Google Cloud Storage API có thể vẫn truy cập được.
Chỉnh sửa quy tắc
Cloud Storage giúp bạn dễ dàng chỉnh sửa Cloud Storage Security Rules của mình
thông qua thẻ Quy tắc trong phần Bộ nhớ của bảng điều khiển Firebase.
Trong tab Quy tắc, bạn có thể nhanh chóng và dễ dàng xem cũng như chỉnh sửa
quy tắc. Bạn có thể triển khai các quy tắc này bằng cách nhấp vào Xuất bản hoặc lưu tệp
(ctrl/cmd + s). Các quy tắc được tải ngay lên Cloud Storage
nhưng có thể mất tới 5 phút để hoạt động.
Bạn cũng có thể sử dụng CLI Firebase để triển khai các quy tắc. Nếu bạn chọn
Storage khi chạy firebase init, một tệp storage.rules có bản sao của
quy tắc mặc định sẽ được tạo
trong thư mục dự án của bạn. Bạn có thể triển khai các quy tắc này bằng cách sử dụng
Lệnh firebase deploy. Nếu có nhiều bộ chứa trong dự án, bạn
có thể sử dụng triển khai mục tiêu để triển khai quy tắc cho toàn bộ
cùng lúc từ cùng một thư mục dự án.
Tìm hiểu thêm về cách hoạt động của cơ chế bảo mật dựa trên tệp trong phần Tệp bảo mật hoặc hiểu rõ người dùng dựa trên bảo mật trong mục Bảo mật người dùng .