如何获取有权访问bigquery中的表的所有用户/组/服务帐户

2024-04-30

from pprint import pprint

from google.oauth2 import service_account
import googleapiclient.discovery

credentials = service_account.Credentials.from_service_account_file(
    filename='keys/key.json',
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

service = googleapiclient.discovery.build('cloudresourcemanager', 'v1', credentials=credentials)

response = service.projects().getIamPolicy(resource='project-answer-379305', body={},).execute()


pprint(response)

这让我所有的用户都有一个项目而不是表格。 我确实尝试过对象权限

SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"

如果用户有权访问数据集级别,则此查询不会列出它(在受让人列中),但如果用户只能访问该表,则它会列出,而且这也不会列出服务帐户(我可以查询该表使用服务帐户的Python无法在受让人列中看到服务帐户)。有没有一种方法可以获取表的所有用户/组/服务帐户。


我想这会满足你的要求。

该方法基本上是使用带有batchget方法的谷歌云资产库存API。https://cloud.google.com/asset-inventory/docs/reference/rest/v1/ effectiveIamPolicies/batchGet https://cloud.google.com/asset-inventory/docs/reference/rest/v1/effectiveIamPolicies/batchGet

如果您导航到以下网址,该页面还应该启动“尝试此方法弹出屏幕”,请参见下面的屏幕截图。

在范围部分中,按以下格式输入以下值:

scope = projects/ENTERYOURPROJECTNAME
names = //bigquery.googleapis.com/projects/YOURPROJECTNAME/datasets/YOURDATASET

然后“执行”,这将要求您使用控制台凭据登录,完成后,您应该看到图像示例 json 输出中的响应

最后,如果这个答案,请将我的帖子标记为已回答:-)

{
  "policyResults": [
    {
      "fullResourceName": "//bigquery.googleapis.com/projects/YOURPROJCETNAME/datasets/mydataset",
      "policies": [
        {
          "attachedResource": "//bigquery.googleapis.com/projects/YOURPROJECTNAME/datasets/YOURDATASET",
          "policy": {
            "bindings": [
              {
                "role": "roles/bigquery.dataEditor",
                "members": [
                  "projectEditor:YOURPROJECTNAME"
                ]
              },
              {
                "role": "roles/bigquery.dataOwner",
                "members": [
                  "projectOwner:YOURPROJECTNAME",
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/bigquery.dataViewer",
                "members": [
                  "projectViewer:YOURPROJECTNAME"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/YOURPROJECTNAME",
          "policy": {
            "bindings": [
              {
                "role": "roles/artifactregistry.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@gcp-sa-artifactregistry.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/bigquery.admin",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/bigquery.dataEditor",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/bigquery.jobUser",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/bigquery.readSessionUser",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/bigquerydatatransfer.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/cloudbuild.builds.builder",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/cloudbuild.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/cloudfunctions.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/cloudscheduler.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@gcp-sa-cloudscheduler.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/cloudtasks.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/cloudtranslate.admin",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/composer.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@cloudcomposer-accounts.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/compute.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/connectors.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/container.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@container-engine-robot.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/containerregistry.ServiceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/datacatalog.admin",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/datacatalog.categoryAdmin",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/dataflow.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@dataflow-service-producer-prod.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/dataform.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/datafusion.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/datalineage.admin",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/datapipelines.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@gcp-sa-datapipelines.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/dataproc.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/editor",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection",
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection",
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection",
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/eventarc.eventReceiver",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/eventarc.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/iam.serviceAccountTokenCreator",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/integrations.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/owner",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/pubsub.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/resourcemanager.organizationAdmin",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/resourcemanager.projectIamAdmin",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/resourcemanager.projectOwnerInvitee",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/run.serviceAgent",
                "members": [
                  "serviceAccount:service-123456789101@serverless-robot-prod.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/source.reader",
                "members": [
                  "serviceAccount:service-bihag-trfm-yourprojectname@YOURPROJECTNAME.iam.gserviceaccount.com"
                ]
              },
              {
                "role": "roles/storage.admin",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/viewer",
                "members": [
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection",
                  "user:[email protected] /cdn-cgi/l/email-protection"
                ]
              },
              {
                "role": "roles/workflows.serviceAgent",
                "members": [
                  "serviceAccount:[email protected] /cdn-cgi/l/email-protection"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取有权访问bigquery中的表的所有用户/组/服务帐户 的相关文章

随机推荐

  • Firefox 和 JavaScript 重定向

    我目前在使用 Firefox 时遇到问题 所有其他浏览器都以正确的方式运行 甚至 IE6 我想要做的是重定向到子页面但留下历史记录条目 据我所知 有两种重写url的方法 window location some url 重定向到带有历史记录
  • 如何在 Flask 之外使用 jinja2 及其 i18n 扩展(使用 babel)

    如何在 Flask 应用程序之外将 jinja2 与 babel 一起使用 假设我有使用 pybabel 命令填充的语言环境目录 我想加载翻译文件并翻译我的模板文件 我找到了解决方案 以下是如何在不集成 Flask 的情况下使用 jinja
  • GDI+ 性能技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何仅将填充应用于 Flutter 中 TextField 中的文本?

    没有填充我得到这个结果 有了这样的东西 Padding padding EdgeInsets all 20 0 child TextField 我得到以下结果 可能有点难以看清 但您只需看看边缘的红色徽章即可明白我的意思 我只想用填充来移动
  • PHP 中字符串限制为前 5 个单词或前 42 个字符

    如果我在 PHP 中有一个字符串 该字符串在 PHP 中是令人讨厌的长字符串 并且我想缩短它 然后向其添加一些内容 我想将其缩短为前 6 个单词或 42 个字符 以较短者为准 然后在缩短后附加一个 唯一不会被缩短且不添加 的情况是它最初少于
  • Java 中客户端/服务器传输的压缩字符串

    我使用专有的客户端 服务器消息格式来限制我可以通过网络发送的内容 我无法发送序列化对象 我必须将消息中的数据存储为字符串 我发送的数据是大的逗号分隔值 我想在将数据作为字符串打包到消息中之前对其进行压缩 我尝试使用 Deflater Inf
  • 画笔到画笔动画

    我设法找到了如何制作 WPF 动画 两种颜色之间的过渡 它被称为 ColorAnimation 并且效果很好 ColorAnimation animation new ColorAnimation From Colors DarkGreen
  • 删除特定值之前和之后的特定值的运行

    我有一个包含几列的数据框 基于 activity 列 我想删除特定值 pt 的整个连续运行 但前提是它们紧邻 outside 运行之前或之后发生 在下面的简化数据中 有一次运行的 activity 为 outside 并且前后都有大块 pt
  • 可以删除 .nupkg 文件吗?

    我是 NuGet 的新手 刚刚开始使用它并给自己买了一份 WatiN 的副本 我正在尝试缩小在将其放入版本控制之前撤回的文件夹的大小 我注意到 WatiN 2 0 50 nupkg 约为 12mb 我注意到从这个链接 http nuget
  • Spark 使用自定义架构读取镶木地板

    我正在尝试使用自定义架构导入镶木地板格式的数据 但它返回 类型错误 option 缺少 1 个必需的位置参数 值 ProductCustomSchema StructType StructField id sku IntegerType T
  • 消除启动时的安全警告

    打开任何 MS Access 数据库时 都会出现安全警告 指出该文件可能对计算机有害 但是 有没有办法删除此消息 或者它应该仍然是一种必要的罪恶 您也许可以签署您的程序 我不确定 读本文 http www howto outlook com
  • 使用 std::istream_iterator 限制 std::copy 的范围

    我构建了一个最小的工作示例来展示我在使用 STL 迭代器时遇到的问题 我在用着istream iterator读书floatss 或其他类型 来自 astd istream include
  • 创建 JSON 对象并将其转换为 Java 中的 String

    我需要通过 http post 发送一个相当长的 JSON 标头 在Python中是这样的 self body header client self client name clientRevision self client versio
  • 在Matlab中将矩阵中的元素i,j设置为i*j

    我想生成一个矩阵 其中 i j 元素等于 i j 其中 i j e g 0 2 3 2 0 6 3 6 0 到目前为止 我已经发现我可以使用这个索引矩阵访问非对角线元素 idx 1 eye 3 但我还没有弄清楚如何将矩阵单元的索引合并到计算
  • 如何使用 Python 将表格从 CSV 写入 PDF [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个CSV文件包含下表 users passwords company Admin test psw test cmp test
  • 资源目录不可用

    Eclipse 在问题选项卡中显示资源目录不可用 尽管它在项目文件夹树中可用 2012 09 11 12 14 43 QR01 ERROR resource directory D workspaceQR QR01 res does not
  • OpenGL 和加载/读取 AoSoA(混合 SoA)格式的数据

    假设我有以下 AoSoA 格式的简化结构来表示顶点或点 struct VertexData float px 4 position x float py 4 position y 也就是说 每个实例VertexData存储4个顶点 我见过的
  • 在展开转场停止转场后显示警报。如何确保展开转场完成后显示警报?

    我有一个从 A 视图控制器到 B 视图控制器的展开序列 在B中完成了一次网络操作 操作完成后 响应将显示在A视图控制器中 我成功地制作了这个结构 然而有一个问题 当我尝试显示警报时 它会显示但会停止继续 我如何确保在 segue 完成后显示
  • c 中的帕斯卡三角形与递归函数

    您好 这是我用于计算帕斯卡三角形的代码 但它运行错误 已停止工作 为什么 我认为它的错误在于 paskal 函数 include
  • 如何获取有权访问bigquery中的表的所有用户/组/服务帐户

    from pprint import pprint from google oauth2 import service account import googleapiclient discovery credentials service