本文介绍了FiRestore安全规则:允许一个特定用户访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个生产版和一个沙盒FiRestore数据库以及一个通用的FireStore.rules文件。
我希望每个数据库只允许一个用户具有读写权限。
我当前已将此配置用于安全规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isAdmin(uid) {
return uid == "IKHXrLmfIFZvrimpJUwnfUzTUoE2"
|| uid == "xVTByGu49XX3rOdNYMKf2Bzt5bY2";
}
match /{document=**} {
allow read, write: if isAdmin(request.auth.uid)
}
}
}
第一个uid是demo用户(只存在于沙盒Firebase项目中),第二个是生产数据库的admin用户(只存在于生产项目中)
详细信息:
- 代码库已打开
- 沙盒数据库有公共API密钥和演示用户凭据(免费方案)。
- 生产数据库是私有的,API密钥和管理员凭据受到保护。
我知道发布沙盒API密钥不是最好的,但它不是一个重要的数据库。
重要的是生产数据库保持安全。
使用此方法是否存在安全问题?如果是,我如何保护生产数据库?
推荐答案
我在第一次开始项目时一直使用此方法。我创建了一个初始(匿名)用户,并在安全规则中授予该用户广泛的权限。
因为您需要项目的服务凭据才能在我的项目上随意设置相同的UID,所以此方法是安全的,并允许我快速开始。
然后,当我准备好使用更广泛的安全系统时,我会扩展安全模型,通常是以下其中之一:
- 允许特定域中的所有用户进行管理访问。
- 在数据库中创建管理员UID列表,并在我的规则中检查该列表。
- 向用户令牌添加自定义声明
isAdmin
,并在安全规则中进行检查。
但即使在这一点上,我也倾向于保留硬编码的UID,因为它们没有安全风险。
这篇关于FiRestore安全规则:允许一个特定用户访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!