我试图限制用户只能在BigQuery中看到特定的数据集。我希望用户只能运行查询和创建表。所以我共享数据集权限,并给他们角色BigQuery Data Viewer(查看数据)和BigQuery User(运行查询和创建表)。但是每当我运行查询时,我都会得到以下错误:
拒绝访问:项目xxx:用户没有bigquery。乔布斯。在项目xxx中创建权限。
我检查了文档,BigQuery用户角色应该有BigQuery。乔布斯。创建权限。我错过了什么?
我们有相同的用例,对于我假设的相当常见的场景来说,要正确地设置它是非常复杂的。我们希望为BigQuery临时使用配置一个项目,该项目将根据需要授予内部高级用户。
通过我们的配置,我们希望允许用户只看到他们自己的数据集,但希望他们在自己的数据集中拥有完全的控制权。作为BQ管理员,我可以为他们创建一个数据集,然后直接在数据集中为他们分配BigQuery数据编辑器角色,但仍然存在两个问题。
>
更重要的是,用户不能从任何来源创建不是另一个BQ表的表!!这是因为必须在项目级别授予bigquery.jobs.create权限。
最后,为了满足我们的用例需求和良好的用户体验,我们需要做三件事。
>
为用户创建BQ数据集,并授予他们对该数据集的BigQuery数据编辑器权限。
为用户创建GCS存储桶,并授予他们对存储桶的云存储对象管理员权限。
创建一个新的自定义项目IAM角色,并将其分配给最终用户,我们称之为“BigQuery Adhoc User”,并授予以下权限:
bigquery。乔布斯。创建
bigquery。乔布斯。获取
bigquery。乔布斯。列出
存储。水桶。列表
这反过来又为我们提供了用户体验和数据安全性,用户只能访问自己的数据,但仍包含在一个项目中。用户在项目级别需要IAM角色,只是为了从GCS或直接上传创建表,这似乎是一个糟糕的设计。
Share Dataset
中对BigQuery用户的描述如下:
应用于项目时,可以访问运行查询、创建数据集、读取数据集元数据和列表表。当应用于数据集时,访问读取数据集内的元数据和列表表的数据集。
因此,您需要在项目级别将
BigQuery作业用户
分配给帐户。
请参考为特定资源的服务号授予角色
留档,在那里您可以通过使用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()方法中建立这个查询,有人能帮忙吗?