【问题标题】:Is there a way to programmatically set up security rules for a custom storage bucket in Firebase?有没有办法以编程方式为 Firebase 中的自定义存储桶设置安全规则?
【发布时间】:2020-09-14 15:36:44
【问题描述】:

出于多种业务和技术原因,我们希望为使用我们解决方案的每家公司提供一个特定的存储桶。此存储桶由公司注册触发的 Cloud 函数创建。

要与 Firebase 一起使用,必须在 Web 控制台中“导入”此存储桶,以便定义需要调整的默认安全策略。

由于我们无法长期手动执行此操作,是否有可能以编程方式在 Admin SDK 中实现此存储桶导入和策略执行?

【问题讨论】:

    标签: firebase google-cloud-functions google-cloud-storage firebase-admin


    【解决方案1】:

    经过多次测试,我很遗憾地说,即使可以使用 Admin SDK 创建一个新的存储桶,如果不通过 Firebase 控制台手动导入它,也无法在客户端使用它。

    使用以下代码创建后无法添加安全规则。 Admin SDK 找不到存储桶 (Error: Requested entity was not found.)

    [...]
    const bucketName = getCompanyBucketName(key)
    const storage = new Storage()
    const bucket = storage.bucket(bucketName)
    const result = await bucket.create({ location: 'EU' })
    if (result[0]) {
       const ruleset = `
          service firebase.storage {
             match /b/{bucket}/o {
                match /{allPaths=**} {
                allow read, write: if request.auth != null;
                }
             }
          }
       `
       await admin
          .securityRules()
          .releaseStorageRulesetFromSource(ruleset, bucketName)
       }
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 谢谢,我正要回答我自己的问题,却发现了文档中隐藏得很好的部分。
      猜你喜欢
      • 2022-01-18
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2021-01-03
      • 2021-01-03
      相关资源
      最近更新 更多