Firebase 如何使Firestore规则与服务帐户一起工作

Firebase 如何使Firestore规则与服务帐户一起工作,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,正如Firestore文档中所述,我有如下安全规则: service cloud.firestore { match /databases/{database}/documents { match /users/{userId} { allow read, update, delete: if request.auth.uid == userId; allow create: if request.auth.uid != null; } } }

正如Firestore文档中所述,我有如下安全规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}
当我使用客户端库进行身份验证时,此规则有效,但当我使用firebase文档中编写的服务器库时,此规则无效

注意:服务器客户端库绕过所有云Firestore安全规则,而是通过Google应用程序默认凭据进行身份验证。如果您正在使用服务器客户端库或REST或RPC API,请确保为Cloud Firestore设置云标识和访问管理


如何将此安全规则复制到服务帐户角色?

使用带有服务帐户的Firebase Admin SDK访问Firestore的代码当前无法限定为特定用户ID以强制执行安全规则。使用AdminSDK进行的所有访问都将绕过安全规则,完全控制数据库


请注意,这与实时数据库不同,实时数据库确实有这样一个功能。

它只是在理论上还是在当前实践中?我的服务帐户无法绕过我的安全规则,因此我必须专门为服务帐户ID添加一个新的安全规则。已测试:除非安全规则都设置为true,否则Admin SDK在Firestore Emulator上不工作:我的服务帐户也没有绕过规则,直到我切换API查看