阻止用户删除 BigQuery 表

2024-01-10

我们正在尝试创建一个非常基本的角色,允许用户查询 BigQuery 表,但不能删除它们。我们正在试验的自定义角色现在具有以下权限:

- bigquery.jobs.create
- bigquery.jobs.get
- bigquery.jobs.list
- bigquery.jobs.listAll
- bigquery.readsessions.create
- bigquery.routines.get
- bigquery.routines.list
- bigquery.savedqueries.get
- bigquery.savedqueries.list
- bigquery.tables.export
- bigquery.tables.getData
- bigquery.tables.list
- bigquery.transfers.get
- resourcemanager.projects.get

我们目前只关注删除,因此权限列表仍在进行中。只有一个自定义角色分配给我们的测试用户并具有上述权限。但是,用户可以从 BigQuery 数据集中删除表。关于实现我们目标的正确权限组合的任何想法。

提前致谢!


您列出了 14 个权限,并且似乎假设这些权限允许 BQ 表删除。

这个假设看起来很奇怪(因为显然许可bigquery.tables.delete不在列表中),事实上是不正确的。这意味着分配了由这 14 个权限组成的角色的 GCP IAM 身份(用户或服务帐户)将无法删除 BQ 表。这反过来意味着您正在测试的身份被分配了未考虑的其他角色和/或权限。

证明假设不正确 打开BQ控制台 https://console.cloud.google.com/bigquery作为项目管理员,单击 Cloud Shell 图标启动 Cloud Shell VM。然后在命令提示符下执行以下命令替换<project-name>:

# Prove the current user is BQ admin by creating 'ds_test1' dataset,
# 'tbl_test1' table, then deleting and recreating the table
bq mk ds_test1
bq mk -t ds_test1.tbl_test1
bq rm -f -t ds_test1.tbl_test1
bq mk -t ds_test1.tbl_test1

# Create role `role_test1`
gcloud iam roles create role_test1 --project <project-name> --title "Role role_test1" --description "My custom role role_test1" --permissions bigquery.jobs.create,bigquery.jobs.get,bigquery.jobs.list,bigquery.jobs.listAll,bigquery.readsessions.create,bigquery.routines.get,bigquery.routines.list,bigquery.savedqueries.get,bigquery.saved
queries.list,bigquery.tables.export,bigquery.tables.getData,bigquery.tables.list,bigquery.transfers.get,resourcemanager.projects.get --stage GA

# Create service account 'sa-test1'
# It is a good security practice to dispose of it when testing is finished
gcloud iam service-accounts create sa-test1 --display-name "sa-test1" --description "Test SA sa-test1, delete it when not needed anymore" --project <project-name>

# Grant the role (and its permissions) to the service account
gcloud projects add-iam-policy-binding <project-name> --member=serviceAccount:sa-test1@<project-name>.iam.gserviceaccount.com --role projects/<project-name>/roles/role_test1

# Save the credential of the service account (including the security sensitive
# private key) to a disk file
gcloud iam service-accounts keys create ~/key-sa-test1.json --iam-account sa-test1@<project-name>.iam.gserviceaccount.com

# Impersonate the service account. This replaces the current permissions with
# that of the service account
gcloud auth activate-service-account sa-test1@<project-name>.iam.gserviceaccount.com --key-file=./key-sa-test1.json

# Confirm the ability to list tables
bq ls ds_test1

# Confirm inability to delete tables
# The command fails with error: BigQuery error in rm operation: Access Denied: Table <project-name>:ds_test1.tbl_test1: User does not have bigquery.tables.delete permission for table <project-name>:ds_test1.tbl_test1.
bq rm -f -t ds_test1.tbl_test1

# Close SSH connection to the VM and logoff
exit

要查看授予上面创建的服务帐户“sa-test1”的角色,请打开 Cloud Shell 并执行:

gcloud projects get-iam-policy <project-name> --flatten="bindings[].members" --filter="bindings.members:serviceAccount:sa-test1@<project-name>.
iam.gserviceaccount.com"

它应该列出我们的角色projects/<project-name>/roles/role_test1。 要查看授予可以删除表的用户的角色,请执行:

gcloud projects get-iam-policy <project-name> --flatten="bindings[].members" --filter="bindings.members:user:<email-of-the-user>"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阻止用户删除 BigQuery 表 的相关文章

  • 创建一组链接的项目

    有一个购买不同产品的用户列表 我想按用户购买行为对商品进行分组 如果任何用户购买两个产品 则这些产品应属于同一组 购买链接产品 user item 1 cat food 1 cat toy 2 cat toy 2 cat snacks 10
  • 如何使用 BigQuery 提取 JSON 对象中的所有键

    BigQuery 具有在实时交互式查询中解析 JSON 的功能 只需将 JSON 编码的对象存储为字符串 然后使用 JSON EXTRACT SCALAR 等函数进行实时查询 但是 我无法找到一种方法来发现这些对象中的所有键 属性 我可以为
  • 同一项目中的不同用户是否可以拥有不同的 BigQuery 配额?

    同一项目中的不同用户是否可以拥有不同的 BigQuery 配额 我知道我可以通过 GCP 的 IAM 和管理部分对给定项目的 每个用户每天的查询使用量 设置限制 以下这些说明 https cloud google com bigquery
  • 保存到 parquet 文件时如何使用新的 Int64 pandas 对象

    我正在使用 Python Pandas 将数据从 CSV 转换为 Parquet 以便稍后将其加载到 Google BigQuery 中 我有一些包含缺失值的整数列 从 Pandas 0 24 0 开始 我可以将它们存储为 Int64 dt
  • oauth2client.client.AccessTokenRefreshError: invalid_grant 仅在 Docker 中

    我有相同的代码 具有相同的 p12 文件 检查了 md5 和 相同的 account email 和相同的范围 可以在多台计算机上工作 但不能在任何工作计算机上的 Docker 容器中工作 我的代码片段如下 with open self p
  • Google Big Query 错误:CSV 表遇到太多错误,放弃。行:1 错误:1

    I am trying to run a query on a 12 GB csv file loaded in Google big query I cant run any query on the dataset I am not s
  • Unicode 无法正确翻译从右到左的语言(希伯来语和阿拉伯语)

    下面由 Mikhail Berlyant 提供的 bigquery 代码 再次感谢您 适用于从左到右的语言 例如俄语 但是 只要要翻译的文本中有双引号 它就会在从右到左的语言 例如阿拉伯语和希伯来语 上失败 预期结果应显示所有要翻译的输入文
  • 写入 BigQuery 时处理卡住

    我正在使用云数据流将数据从 Pub Sub 消息导入到 BigQuery 表 我正在使用 DynamicDestinations 因为这些消息可以放入不同的表中 我最近注意到该进程开始消耗所有资源 并且消息表明该进程被卡住开始显示 Proc
  • BigQuery GitHub 数据:如何处理存储库名称更改?

    我的目标是跟踪我的仓库的星星总数 然而 它的 repo name 随着时间的推移而改变 如何实现这一目标githubarchive数据集 相关https stackoverflow com a 42930963 132438 https s
  • 从 Dataflow 中的 BigQuery 读取时设置 MaximumBillingTier

    当我从 BigQuery 读取数据作为查询结果时 我正在运行 GCP Dataflow 作业 我正在使用 google cloud dataflow java sdk all 版本 1 9 0 设置管道的代码片段如下所示 PCollecti
  • Google BigQuery:检索每行的最后版本

    我有一个 Google BigQuery 表 其中包含所有版本的资源 每次创建 更新 删除资源时 都会添加一个新行 并递增版本号 该数字将是添加行时的时间戳 ID ResourceID Action Count Timestamp ABC
  • 以有效的方式从 BigQuery 读取到 Spark 中?

    使用时BigQuery 连接器 https cloud google com hadoop examples bigquery connector spark example要从 BigQuery 读取数据 我发现它首先将所有数据复制到 G
  • Google BigQuery 另存为表

    我用 Google BigQuery 运行了这个查询 SELECT repo id count as count FROM TABLE DATE RANGE githubarchive day events TIMESTAMP 2015 0
  • 从 ISO 周中提取日期 (201905) BigQuery

    我需要从 ISO 周数中提取星期日的日期 即 201905 它需要位于 standardSQL 中 因为它将使用不支持旧版本的脚本进行调度 我尝试从 Google Sheets 调整工作公式 但无法弄清楚 Google Sheets 的原始
  • 如何使用 CLI bq 命令创建一次性数据集副本(无计划重复)

    我想使用 bash 脚本在 BigQuery 中制作一次性数据集复制 来自source dataset A to target dataset B This operation is easy to do in BigQuery Conso
  • Bigtable 与 Bigquery 时间序列数据用例

    我希望最终确定 Big table 与 Bigquery 的时间序列数据用例 我曾经经历过https cloud google com bigtable docs schema design time series https cloud
  • BigQuery - 预定查询更新通知电子邮件

    有没有办法将计划查询通知电子邮件更新为自定义内容 默认情况下 它是创建者的电子邮件 但是 这通常是没有真正电子邮件收件人的服务帐户 例如 通过 terraform 配置 我们将拥有一个服务帐户 我们希望将电子邮件通知目标从 SA 更新为支持
  • Bigquery 中数组对之间的余弦相似度

    我创建了一个表 其中有一对 ID 和每个 ID 的坐标 以便我可以计算它们之间的成对余弦相似度 The table looks like this 坐标的维度数当前为 128 但可能会有所不同 但同一个表中一对 ID 的数字维度始终相同 c
  • Google BigQuery 底层架构

    所以我大约 10 分钟前才开始摆弄 Google BigQuery 我想知道是否有人知道他们用来存储数据的底层架构 例如 这只是他们自己的下一代 BigTable 基础设施吗 另外 他们在索引 索引重建等方面使用什么样的策略是否清楚 我只是
  • BigQuery 类型有多少字节

    以下类型在 BigQuery 中占用多少字节 时间戳 Datetime Date 我的猜测是日期可以存储在 2 个字节中 时间戳可能是 8 个字节 但我不确定这一点 并且在https cloud google com bigquery do

随机推荐

  • 上下文相关实例作为简单注入器中的单例

    我有一个关于ContextDependentExtensions of SimpleInjector图书馆 我们有以下扩展来添加将元素添加到具有某些上下文的注入器中的可能性 上下文相关扩展 https github com simplein
  • 实现自定义 MembershipUser 和自定义 MembershipProvider

    我尝试在我自己的数据库中使用自定义 MembershipUser 实现自定义 MembershipPriver 具有特定的用户表模型 这是完全不同的文件 iTwitterMembershipProvider cs using System
  • Chart.js 中的 Utils 包

    我正在尝试从 Chart js 文档中重现此示例 https www chartjs org docs latest samples line interpolation html https www chartjs org docs la
  • 如何从 Android 上的列表视图中删除分隔线? [复制]

    这个问题在这里已经有答案了 我正在开发一个应用程序Listview 并且列表中的项目已经具有我不需要分隔线的样式 如何将分隔线设置为隐藏或删除分隔线ListView 你可以试试android divider null
  • Python ValueError:池未在异步多处理中运行

    我有一个简单的代码 path filepath1 filepath2 filepath3 def umap embedding filepath file np genfromtxt filepath delimiter if len fi
  • 如何获取 Android 设备的物理方向(以度为单位)。

    我知道我必须使用 OrientationListener 类从设备获取角度 我想要得到 90 和90 之间的角度 我不知道该怎么做 左图 90度 中图 0度 右图 90度 Code class OrientationListener imp
  • 缺少 Microsoft 时区

    我正在考虑使用微软时区 https support microsoft com en gb help 973627 microsoft time zone index values 通过利用系统时区信息 https msdn microso
  • 如何在IDEA中使用类路径而不是模块路径运行Java 9应用程序?

    当我在 IDEA 中运行主类时 它将模块及其依赖项放在模块路径上 是否可以将其更改为类路径 如果您没有定义模块信息 IDEA 会在类路径上设置应用程序和您的依赖项 由于您有一个模块信息 它是一个显式模块 因此它必须位于模块路径上 通常 您现
  • initState 方法中的 Flutter showDialog(context)

    我正在尝试使用showDialog context builder 当用户导航到某个页面时显示问候消息 我通过调用尝试了这个showDialog in the initState该页面上有状态小部件的方法 虽然它确实有效 但我似乎无法访问实
  • 列名称无效。 [ 节点名称(如果有) = t0,列名称 = 版本 ]

    我在尝试查询时遇到问题SQLCE我的 Windows Phone Mango 应用程序中的数据库 当我执行时出现异常 foreach var item in myDataContext MyTable Select item gt item
  • golang中的windows加密rdp密码

    like http play golang org p fD7mx2k4Yc http play golang org p fD7mx2k4Yc windows rdp密码加密http www remkoweijnen nl blog 20
  • 在经典 ASP 中添加逗号的 HTML 表单值

    我有一个经典的 ASP 页面 它会提交回自身 奇怪的是 从选择返回的值的末尾添加了逗号 以前有人遇到过这样的事情吗 有推荐的故障排除步骤或工具吗 我期望值以数字形式返回 它们是选项中显示的值的 ID 我检查了页面中是否有神秘逗号 但无法找到
  • iOS UTF-8 标签字符串

    我有一个 UTF 8 编码字符串 我想在标签中显示它 当我设置断点并检查保存字符串的变量时 一切看起来都很好 但是 当我尝试输出到日志或标签时 我得到拉丁编码 我已经尝试了几乎所有关于 SO 及其他的建议 但我就是无法让字符串正确显示 这是
  • 视图左上角的 GMSMarker 图标 (iOS)

    我正在尝试创建一个包含 GMSMapView 的 UITableViewCell 其中 GMSMarker 位于当前位置的中心 问题是标记总是出现在当前位置的左上角 我不知道如何解决这个问题 我尝试按照以下步骤操作 使用 UItablevi
  • 什么是 { 得到;放; C# 中的语法?

    我正在学习 ASP NET MVC 我可以阅读英文文档 但我不太明白这段代码中发生了什么 public class Genre public string Name get set 这是什么意思 get set 它是所谓的 auto 属性
  • 更改 NSDictionary 中的键名

    我有一个方法 它返回一个带有某些键和值的 nsdictionary 我需要将字典中的键名称更改为新的键名称 但该键的值需要相同 但我被困在这里 需要帮助 此方法仅适用于可变字典 如果新密钥已经存在 它不会检查应该做什么 您可以通过调用 mu
  • 在 Visual C# 中从 RichTextBox 中删除 RichText 格式

    我正在用 C 开发一个高级富文本编辑器 但偶然发现了一个我似乎无法理解的问题 我一直试图让用户将他们的文档保存为文本文件 纯文本 通过使用以下内容 我的 RichTextBox Save 文件 文件路径 PlainText 但问题是 当他们
  • 1.8 与 1.9 中的 BigDecimal

    升级到 ruby 1 9 时 在比较预期值与实际值时 我的测试失败了BigDecimal这是 Float 除法的结果 expected 0 495E0 9 18 got 0 4950000000 0000005E0 18 27 谷歌搜索 b
  • CSS 第一次在 3D 变换时不渲染背面

    我有一个卡片翻转风格的动画 可以将文本区域翻转 180 度 我遇到的唯一问题是 第一次执行翻转时 在经过 90 度后 元素消失 然后在完成 180 度旋转后出现后面的元素 这是带有代码的示例 http jsfiddle net elninj
  • 阻止用户删除 BigQuery 表

    我们正在尝试创建一个非常基本的角色 允许用户查询 BigQuery 表 但不能删除它们 我们正在试验的自定义角色现在具有以下权限 bigquery jobs create bigquery jobs get bigquery jobs li