传统上,安全性一直是应用程序开发中最复杂的部分之一。在大多数应用程序中,开发人员必须构建并运行一个服务器来处理身份验证(用户是谁)和授权(用户可以做什么)。身份验证和授权很难设置,更难正确设置,并且对产品的成功至关重要。
与 Firebase 身份验证让您轻松验证用户身份的方式类似,适用于云存储的 Firebase 安全规则让您轻松授权用户和验证请求。云存储安全规则允许您指定基于路径的权限,从而为您管理复杂性。只需几行代码,您就可以编写授权规则,将 Cloud Storage 请求限制为特定用户或限制上传大小。
Firebase 实时数据库具有类似的功能,称为Firebase 实时数据库规则
验证
了解您的用户是谁是构建应用程序的重要部分,而 Firebase 身份验证提供了一种易于使用、安全且仅在客户端进行身份验证的解决方案。 Cloud Storage 的 Firebase 安全规则与基于用户的安全性的 Firebase 身份验证相关联。当用户通过 Firebase Authentication 进行身份验证时,Cloud Storage Security Rules 中的request.auth
变量成为一个对象,其中包含用户的唯一 ID ( request.auth.uid
) 和令牌 ( request.auth.token
) 中的所有其他用户信息.当用户未通过身份验证时, request.auth
为null
。这使您可以基于每个用户安全地控制数据访问。您可以在身份验证部分了解更多信息。
授权
识别您的用户只是安全的一部分。知道他们是谁后,您需要一种方法来控制他们对 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
选项卡来编辑这些规则。
数据验证
Cloud Storage 的 Firebase 安全规则也可用于数据验证,包括验证文件名和路径以及文件元数据属性,例如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/.*'); } } }