我有一个产品、一个沙箱修复数据库和一个常见的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是演示用户(只存在于沙箱防火墙项目中),第二个用户是生产数据库的管理用户(只存在于生产项目中)。
详细信息:
。
我知道发布沙箱API密钥不是最好的,但它不是一个重要的数据库。
重要的是生产数据库仍然是安全的。
使用此方法是否存在安全问题?如果是,我如何保护生产数据库?
发布于 2021-01-03 19:25:37
当我第一次开始一个项目时,我一直使用这种方法。我创建了一个初始(匿名)用户,并在安全规则中授予这一广泛的权限。
由于您需要项目的服务凭据才能在我的项目上任意设置相同的UID,所以这种方法是安全的,并且允许我快速入门。
然后,当我为更广泛的安全系统做好准备时,我扩展了安全模型,通常是在其中一个:
isAdmin
来检查管理UID,并在安全规则中进行检查。但是即使在那个时候,我也倾向于保留硬编码的UID,因为它们没有安全风险。
https://stackoverflow.com/questions/65553664
复制相似问题