Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase管理员SDK管理员服务代理角色_Firebase_Google Cloud Platform_Firebase Authentication_Google Kubernetes Engine_Google Iam - Fatal编程技术网

Firebase管理员SDK管理员服务代理角色

Firebase管理员SDK管理员服务代理角色,firebase,google-cloud-platform,firebase-authentication,google-kubernetes-engine,google-iam,Firebase,Google Cloud Platform,Firebase Authentication,Google Kubernetes Engine,Google Iam,我有一个使用firebase auth SDK的web应用程序。我一直在削减访问权限。默认情况下,关联的IAM服务帐户具有项目编辑器角色,这似乎有点危险。但它是有效的 我使用IAM管理控制台创建了一个新的服务帐户。然后,我根据我知道的应用程序需要的权限(基于)创建了一个新角色,然后是通常的后退和前进,以最小化权限 但是,无论添加了什么权限,使用此服务帐户通过SDK修改用户都会失败。调用firebase auth或函数会导致类似以下错误: FirebaseAuthError:通过“Credenti

我有一个使用firebase auth SDK的web应用程序。我一直在削减访问权限。默认情况下,关联的IAM服务帐户具有项目编辑器角色,这似乎有点危险。但它是有效的

我使用IAM管理控制台创建了一个新的服务帐户。然后,我根据我知道的应用程序需要的权限(基于)创建了一个新角色,然后是通常的后退和前进,以最小化权限

但是,无论添加了什么权限,使用此服务帐户通过SDK修改用户都会失败。调用firebase auth或函数会导致类似以下错误:

FirebaseAuthError:通过“Credential”属性提供给initializeApp()的凭据实现没有足够的权限访问请求的资源权限

在尝试了sun下的每个选项后,我遇到了一个名为“Firebase Admin SDK Administrator Service Agent”的角色(奇怪的是没有文档记录)(一个google链接建议该角色的后端id是
角色/Firebase.sdkAdminServiceAgent
)。添加此角色可使更新和创建功能正常工作

有人能解释“Firebase Admin SDK管理员服务代理”角色的用途吗?或者有没有办法确定它添加了哪些权限(这样我就可以将这些权限添加到我的自定义IAM角色中)。

试试这个 去消防基地 设置 用户和权限 让你的帐户成为所有者


这将允许您访问所有内容,而不会给您带来任何其他问题。

Firebase Admin SDK管理员服务代理是截至2021年3月7日新项目默认Firebase Admin服务帐户的三个角色之一。其他两个角色是
Firebase身份验证管理员
服务帐户令牌创建者

尽管有关它的文档很少,但该角色似乎是一个整合角色,提供对所有Firebase相关产品的完全访问,以便在Firebase Admin SDK中不受限制地使用

由Firebase Admin SDK管理员服务代理授予的角色

appengine.applications.get
cloudconfig.configs.get
cloudconfig.configs.update
cloudmessaging.messages.create
datastore.databases.get
datastore.databases.list
datastore.entities.allocateIds
datastore.entities.create
datastore.entities.delete
datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
firebase.clients.create
firebase.clients.delete
firebase.clients.get
firebase.clients.list
firebase.clients.update
firebase.projects.get
firebase.projects.update
firebaseauth.configs.create
firebaseauth.configs.get
firebaseauth.configs.update
firebaseauth.users.create
firebaseauth.users.createSession
firebaseauth.users.delete
firebaseauth.users.get
firebaseauth.users.sendEmail
firebaseauth.users.update
firebasedatabase.instances.create
firebasedatabase.instances.get
firebasedatabase.instances.list
firebasedatabase.instances.update
firebasehosting.sites.create
firebasehosting.sites.delete
firebasehosting.sites.get
firebasehosting.sites.list
firebasehosting.sites.update
firebaseml.compressionjobs.create
firebaseml.compressionjobs.delete
firebaseml.compressionjobs.get
firebaseml.compressionjobs.list
firebaseml.compressionjobs.start
firebaseml.compressionjobs.update
firebaseml.models.create
firebaseml.models.delete
firebaseml.models.get
firebaseml.models.list
firebaseml.modelversions.create
firebaseml.modelversions.get
firebaseml.modelversions.list
firebaseml.modelversions.update
firebasenotifications.messages.create
firebasenotifications.messages.delete
firebasenotifications.messages.get
firebasenotifications.messages.list
firebasenotifications.messages.update
firebaserules.releases.get
firebaserules.releases.list
firebaserules.releases.update
firebaserules.rulesets.create
firebaserules.rulesets.delete
firebaserules.rulesets.get
firebaserules.rulesets.list
resourcemanager.projects.get
resourcemanager.projects.list
resourcemanager.projects.update
storage.buckets.create
storage.buckets.delete
storage.buckets.get
storage.buckets.list
storage.buckets.update
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.getIamPolicy
storage.objects.list
storage.objects.setIamPolicy
storage.objects.update
由Firebase身份验证管理员授予的角色

firebase.clients.get
firebase.clients.list
firebase.projects.get
firebaseauth.configs.create
firebaseauth.configs.get
firebaseauth.configs.getHashConfig
firebaseauth.configs.update
firebaseauth.users.create
firebaseauth.users.createSession
firebaseauth.users.delete
firebaseauth.users.get
firebaseauth.users.sendEmail
firebaseauth.users.update
resourcemanager.projects.get
resourcemanager.projects.list
服务帐户令牌创建者授予的角色

iam.serviceAccounts.get
iam.serviceAccounts.getAccessToken
iam.serviceAccounts.getOpenIdToken
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.list
iam.serviceAccounts.signBlob
iam.serviceAccounts.signJwt
resourcemanager.projects.get
resourcemanager.projects.list

我能够在我的新GCP项目中的IAM控制台中确定这一点。

当然,这会起作用,但我的目标是最大限度地减少应用程序所需的权限。如果该应用程序以某种方式遭到破坏,我希望将潜在的损害降至最低。例如,当服务帐户具有所有者权限时,攻击者可能会删除整个项目。