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

如何在特定的BigQuery数据集中设置运行查询和创建表的权限?

萧奇
2023-03-14

我试图限制用户只能在BigQuery中看到特定的数据集。我希望用户只能运行查询和创建表。所以我共享数据集权限,并给他们角色BigQuery Data Viewer(查看数据)和BigQuery User(运行查询和创建表)。但是每当我运行查询时,我都会得到以下错误:

拒绝访问:项目xxx:用户没有bigquery。乔布斯。在项目xxx中创建权限。

我检查了文档,BigQuery用户角色应该有BigQuery。乔布斯。创建权限。我错过了什么?

共有3个答案

巩衡
2023-03-14

我们有相同的用例,对于我假设的相当常见的场景来说,要正确地设置它是非常复杂的。我们希望为BigQuery临时使用配置一个项目,该项目将根据需要授予内部高级用户。

通过我们的配置,我们希望允许用户只看到他们自己的数据集,但希望他们在自己的数据集中拥有完全的控制权。作为BQ管理员,我可以为他们创建一个数据集,然后直接在数据集中为他们分配BigQuery数据编辑器角色,但仍然存在两个问题。

>

更重要的是,用户不能从任何来源创建不是另一个BQ表的表!!这是因为必须在项目级别授予bigquery.jobs.create权限。

最后,为了满足我们的用例需求和良好的用户体验,我们需要做三件事。

>

  • 为用户创建BQ数据集,并授予他们对该数据集的BigQuery数据编辑器权限。

    为用户创建GCS存储桶,并授予他们对存储桶的云存储对象管理员权限。

    创建一个新的自定义项目IAM角色,并将其分配给最终用户,我们称之为“BigQuery Adhoc User”,并授予以下权限:

    bigquery。乔布斯。创建
    bigquery。乔布斯。获取
    bigquery。乔布斯。列出
    存储。水桶。列表

    这反过来又为我们提供了用户体验和数据安全性,用户只能访问自己的数据,但仍包含在一个项目中。用户在项目级别需要IAM角色,只是为了从GCS或直接上传创建表,这似乎是一个糟糕的设计。

  • 陆飞龙
    2023-03-14

    Share Dataset中对BigQuery用户的描述如下:

    应用于项目时,可以访问运行查询、创建数据集、读取数据集元数据和列表表。当应用于数据集时,访问读取数据集内的元数据和列表表的数据集。

    因此,您需要在项目级别将BigQuery作业用户分配给帐户。

    穆展鹏
    2023-03-14

    请参考为特定资源的服务号授予角色留档,在那里您可以通过使用IAM找到5个步骤来实现您的目标

    您还可以使用命令行创建新的服务号并授予其权限:

    创建新服务帐户:

    gcloud iam service-accounts create <NAME>
    

    授予权限:

    gcloud projects add-iam-policy-binding <YOUR_PROJECT_ID> --member "serviceAccount:<NAME>@<YOUR_PROJECT_ID>.iam.gserviceaccount.com" --role "roles/bigquery.jobUser"
    

    此外,使用此命令检查您是否已授予服务帐户权限:

    gcloud projects get-iam-policy <YOUR_PROJECT_ID>
    

    让我知道结果。我希望有帮助。

     类似资料:
    • 问题内容: 我们正在通过Python API使用Google BigQuery 。如何根据查询结果创建表(新表或覆盖旧表)?我查看了查询文档,但没有发现有用。 我们要模拟: ANSI SQL中的“ SELEC … INTO …”。 问题答案: 您可以通过在查询中指定目标表来执行此操作。您将需要使用API而不是调用,并且应该指定并填写目标表。 如果您使用的是原始API,则配置如下所示。如果您使用的是

    • 问题内容: 所以我的数据库中有两个表,它们都看起来像这样: 通讯:(已拨打电话) 移动: 我想做的是找到最接近给定“通信”时间戳的“移动”时间戳。基本上,我想找到一个人打电话时可能去过的地方。 目前,我这样做是: 输出将是: 我将呼叫者的和设置到的位置,然后他们拨打了电话。因此,这将找到一个呼叫者的可能位置。 在这种情况下,打电话到,并且他的移动数据表明他的位置在。这样一来,它就会显示在他可能的位

    • 问题内容: 我正在尝试在bigquery的查询中使用命名参数。 我懂了 有什么办法可以在biquery上设置命名参数? 问题答案: BigQuery仅通过使用标准SQL的API而非Web UI支持命名参数。您可以在“运行参数化查询”部分中了解有关它们的信息。如果您对查询参数的Web UI支持感兴趣,可以在问题跟踪器上为功能请求加注星标。

    • 但是,在我看来,SolrJ忽略了收集,因为我得到了以下错误: 当我在SolrClient URL中而不是在查询函数中添加集合时,它工作得很好。这个解决方案阻碍了我使用单个客户端请求多个集合,所以我想使用第一个。有人遇到过吗? 编辑:我也检查了6.6。还是老样子。完全错误: 消息/Solr/Update 描述请求的资源不可用。 类型状态报告

    • 问题内容: 在我的SQLite数据库管理器中,我可以查询以下内容: 这个查询从2012年7月的名为“ tripmileagetable”的表中返回了里程表总和,但是我想在android查询中编写此代码。 但是我不知道如何在database.query()方法中建立此查询,有什么可以帮助吗? 问题答案:

    • 在我的SQLite数据库管理器中,我可以查询以下内容: 此查询返回2012年7月名为“tripmileagetable”的表中里程表列的总和,但我想在android查询中编写此代码。 但是我不知道如何在database.query()方法中建立这个查询,有人能帮忙吗?