【问题标题】:How to set permission in a particular BigQuery dataset to run query and create table?如何在特定 BigQuery 数据集中设置运行查询和创建表的权限?
【发布时间】:2020-03-02 02:48:50
【问题描述】:

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

访问被拒绝:项目 xxx:用户在项目 xxx 中没有 bigquery.jobs.create 权限。

我检查了documentation,BigQuery 用户角色应该具有 bigquery.jobs.create 权限。我错过了什么?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    请参考Granting roles to a service account for specific resourcesdocumentation,您可以在其中找到使用IAM & Admin 页面实现目标的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>
    

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

    【讨论】:

      【解决方案2】:

      Share Dataset 中对BigQuery User 的描述说:

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

      因此您需要在项目级别将BigQuery Job User 分配给帐户。

      【讨论】:

        【解决方案3】:

        我们有相同的用例,但对于我认为是相当常见的场景,正确设置它变得异常复杂。我们希望为 BigQuery 即席使用配置一个项目,该项目将根据需要授予内部高级用户。

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

        • 用户不能上传大于 10MB 的文件,因此必须授予他们对云存储桶的权限才能将文件上传到 BQ,然后再导入到 BQ。

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

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

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

        • 为用户创建一个 GCS 存储桶并授予他们对该存储桶的 Cloud Storage 对象管理员权限。

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

          bigquery.jobs.create
          bigquery.jobs.get
          bigquery.jobs.list
          storage.buckets.list

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

        【讨论】:

          猜你喜欢
          • 2019-06-28
          • 2020-09-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-20
          • 2020-08-14
          • 1970-01-01
          相关资源
          最近更新 更多