首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修复安全规则:允许对特定用户的访问

修复安全规则:允许对特定用户的访问
EN

Stack Overflow用户
提问于 2021-01-03 18:55:16
回答 1查看 785关注 0票数 3

我有一个产品、一个沙箱修复数据库和一个常见的firestore.rules文件。

我希望每个数据库只允许一个用户进行读写。

我目前已将此配置用于安全规则

代码语言:javascript
运行
复制
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密钥和演示用户凭据(免费计划),
  • 生产数据库是私有的,api密钥和管理凭证都受到保护。

我知道发布沙箱API密钥不是最好的,但它不是一个重要的数据库。

重要的是生产数据库仍然是安全的。

使用此方法是否存在安全问题?如果是,我如何保护生产数据库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-03 19:25:37

当我第一次开始一个项目时,我一直使用这种方法。我创建了一个初始(匿名)用户,并在安全规则中授予这一广泛的权限。

由于您需要项目的服务凭据才能在我的项目上任意设置相同的UID,所以这种方法是安全的,并且允许我快速入门。

然后,当我为更广泛的安全系统做好准备时,我扩展了安全模型,通常是在其中一个:

  1. ,通过在数据库中创建管理UID列表并在“我的规则”中检查管理UID,从而允许所有用户从特定域管理访问。
  2. 通过向用户令牌添加自定义声明isAdmin来检查管理UID,并在安全规则中进行检查。

但是即使在那个时候,我也倾向于保留硬编码的UID,因为它们没有安全风险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65553664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档