当前位置: 首页 > 知识库问答 >
问题:

Google Cloud BigQuery管理服务帐户获取“没有BigQuery.jobs.create权限”

彭允晨
2023-03-14

我是Google Cloud的新手

错误:

Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Access Denied: Project airy-advantage-235802: The user kafka-learning@airy-advantage-235802.iam.gserviceaccount.com does not have bigquery.jobs.create permission in project airy-advantage-235802.",
    "reason" : "accessDenied"
  } ],
  "message" : "Access Denied: Project airy-advantage-235802: The user kafka-learning@airy-advantage-235802.iam.gserviceaccount.com does not have bigquery.jobs.create permission in project airy-advantage-235802."
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:150)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:401)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1132)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:499)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:432)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:549)
    at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.create(HttpBigQueryRpc.java:183)

我所做的:

  1. 创建新的谷歌云帐户

有没有我错过的一步?

var bigquery = BigQueryOptions.getDefaultInstance().getService();
var query = "SELECT * FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160801` LIMIT 10";
var queryConfig = QueryJobConfiguration.newBuilder(query).build();
var table = bigquery.query(queryConfig);

我还尝试通过将生成器更改为以下方式显式设置项目id(也在json文件中):

var bigquery = BigQueryOptions.newBuilder().setProjectId("airy-advantage-235802").build().getService();

共有2个答案

林涵映
2023-03-14

我也有这个问题。阅读文档,你就会解决它。

可以删除服务帐户,然后使用相同的名称创建新的服务帐户。如果重新使用已删除服务帐户的名称,可能会导致意外行为。

删除服务帐户时,不会立即删除其角色绑定。如果使用与最近删除的服务帐户相同的名称创建新服务帐户,则旧绑定可能仍然存在;但是,即使两个帐户具有相同的电子邮件地址,它们也不适用于新的服务帐户。发生这种行为是因为服务帐户在创建时在云IAM中被赋予了唯一的ID。在内部,所有角色绑定都是使用这些ID授予的,而不是使用服务帐户的电子邮件地址。因此,已删除服务帐户的任何角色绑定都不适用于使用相同电子邮件地址的新服务帐户。

为了避免混淆,我们建议使用唯一的服务帐户名。如果不可能,您可以通过以下方式向新服务帐户授予角色:

显式删除将该角色授予旧服务号的所有绑定。将这些角色重新授予新的服务号。在重新添加角色绑定之前,必须先删除它们。简单地再次授予角色将默默地失败,将角色授予旧的,已删除的服务号。在这里输入链接描述

屠昌胤
2023-03-14

这通常发生在您删除并创建一个与“新”服务帐户同名的服务帐户时,该帐户可能绑定了旧角色。因此,你可以:

  • 使用新的服务帐户

有关更多信息,请查看此链接

希望能有帮助。

 类似资料:
  • 我使用以下代码从搜索控制台获取我的网站的统计数据: 我使用google服务帐户来授权api调用,但它给了我一个错误: 呼叫POST时出错https://www.googleapis.com/webmasters/v3/sites/http://www.example.com//searchAnalytics/query: (403)用户没有足够的权限访问站点“http*:///www.exampl

  • 问题内容: 如何获得特定SQL Server(SQL 2005)的SQL代理服务的服务帐户名称。是否可以使用SQL语句或WMI? 问题答案: 您可以使用sc.exe。 要查找SQL实例服务: 获取配置:

  • Config Config=new ConfigBuilder().withMasterURL(“https://c2.eu-de.containers.cloud.ibm.com:78945”).build();try(KubernetesClient client=new DefaultKubernetesClient(config)){ 我得到了io.fabric8.kubernetes.c

  • 实际上,我想使用这个api回复我的google play应用程序的评论:https://developers.google.com/android-publisher/reply-to-reviews#gaining_access但是在这里,它想让我输入auth_token。首先,我在google play中添加了服务号。之后,我创建了一个密钥,并下载了密钥的json文件。使用这个json文件,我

  • 我是新的谷歌云和BigQuery 我有一个包含2个项目的云实例。一个是计算引擎项目,另一个是BigQuery项目。我可以成功地从计算引擎项目中获取访问令牌和刷新令牌。但是,当我尝试访问BigQuery项目时,出现以下错误: xxxx@gmail.com在项目yyyy中没有bigquery.jobs.create权限 我在BigQuery中创建了数据集,将公共数据复制到每个数据集中。我也证实了这一点

  • 为Google Apps域的管理员寻找当前修改其他用户拥有的Google Drive对象权限的最佳方法。我将在Google App Engine上开发该应用程序。 使用两条腿的OAuth和Google文档列表API非常简单:https://developers.google.com/gdata/docs/auth/oauth#2LeggedOAuth但是现在Google Drive SDK是实时A