创建和管理授权视图
本文档介绍了如何使用 Google Cloud CLI 或Google Cloud 控制台定义、创建授权视图并对其执行其他管理操作。在阅读本文档之前,您应该先熟悉授权视图概览。
所需的角色
如需获得对授权视图执行管理操作所需的权限,请让您的管理员为您授予底层表的 Bigtable Admin (roles/bigtable.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供对授权视图执行管理操作所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需对授权视图执行管理操作,您需要具备以下权限:
-
bigtable.authorizedViews.get
-
bigtable.authorizedViews.list
-
bigtable.authorizedViews.create
-
bigtable.authorizedViews.update
-
bigtable.authorizedViews.delete
-
bigtable.authorizedViews.getIamPolicy
-
bigtable.authorizedViews.setIamPolicy
-
bigtable.authorizedViews.readRows
-
bigtable.authorizedViews.sampleRowKeys
-
bigtable.authorizedViews.mutateRows
如需了解如何在授权视图级层管理 Bigtable IAM 角色,请参阅授权视图级层 IAM 管理。
创建授权视图
创建已获授权的视图时,请考虑将针对该视图运行的查询。发送到授权视图的读取、写入和删除请求必须仅引用授权视图中的数据。这意味着,例如,如果您尝试读取、写入或删除表中的某一行(该行包含您无权访问的视图中的列),则请求会失败。
为避免因向表中添加了授权视图中没有的列而导致向授权视图发送的数据请求失败,您可以为列族指定一个空的列限定符前缀“”。
每个授权视图最多可以指定 100 个定义参数。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含您要创建授权视图的表的实例。
在导航窗格中,点击 Bigtable Studio。
点击构建器以打开查询构建器。
选择要创建授权视图的表。
添加子句以构建查询,该查询仅返回您希望授权视图用户有权访问的数据。
- 授权视图的可接受子句包括行键前缀和列(列限定符)。
- 如需指定列限定符前缀,请在相应前缀后添加星号。例如,如需纳入以“data”开头的所有列,请在列族名称后的列字段中输入
data*
。 - 保存已获授权的视图时,系统会忽略 Limit 子句。
- 如需详细了解如何使用查询构建器,请参阅在控制台中构建查询。
点击运行。
验证结果窗格中显示的数据应包含在已获授权的视图中后,点击另存为视图。
为授权视图输入一个尚未用于相应表的永久标识符。
可选:如需在不授予访问权限的情况下保存,请点击保存。
可选:如需保存授权视图并为其配置访问权限,请点击保存并授予访问权限。如需详细了解访问权限控制,请参阅使用 IAM 进行 Bigtable 访问权限控制。
- 添加至少一个主账号,然后选择应向该主账号或主账号群组分配的角色。
- 可选:如需授予其他角色的访问权限,请点击添加其他角色,然后为每个其他角色输入主账号和角色。
- 点击保存。
gcloud
运行 bigtable authorized-views create
命令。如需了解详情,请参阅 gcloud bigtable authorized-views create 的参考文档。
gcloud bigtable authorized-views create AUTHORIZED_VIEW_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID \
--definition-file=DEFINITION_FILE_PATH
替换以下内容:
AUTHORIZED_VIEW_ID
:授权视图的永久标识符,不得与表的永久标识符重复INSTANCE_ID
:包含相应表的实例的永久标识符TABLE_ID
:您要创建授权视图的表的永久标识符DEFINITION_FILE_PATH
:授权视图的有效 JSON 格式表示形式的路径。如需查看格式正确的定义文件示例,请参阅定义文件示例。
您也可以在不提供定义文件的情况下运行该命令。在这种情况下,gcloud CLI 会打开一个编辑器,并提示您输入值。
如需确认授权视图已创建,请获取表的授权视图列表。
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
修改授权视图
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含已获授权的视图的实例。
在导航窗格中,点击 Bigtable Studio。
在探索器中,展开相应表和已获授权的视图。
在要修改的授权视图旁边,点击 more_vert 操作菜单,然后点击打开。
修改或添加子句,以构建仅返回您希望授权视图用户能够访问的数据的查询。
- 授权视图的可接受子句包括行键前缀和列(列限定符)。
- 如需指定列限定符前缀,请在相应前缀后添加星号。例如,如需纳入以“data”开头的所有列,请在列族名称后的列字段中输入
data*
。 - 保存已获授权的视图时,系统会忽略 Limit 子句。
- 如需详细了解如何使用查询构建器,请参阅在控制台中构建查询。
点击运行。
验证结果窗格中显示的数据应包含在已获授权的视图中后,点击另存为视图。
在对话框中,输入您修改的授权视图的 ID。
该对话框会显示一条消息,警告您将覆盖现有的授权视图。
可选:如需在不授予访问权限的情况下保存,请点击保存。
可选:如需保存授权视图并为其配置访问权限,请点击保存并授予访问权限。如需详细了解访问权限控制,请参阅使用 IAM 进行 Bigtable 访问权限控制。
- 添加至少一个主账号,然后选择应向该主账号或主账号群组分配的角色。
- 可选:如需授予其他角色的访问权限,请点击添加其他角色,然后为每个其他角色输入主账号和角色。
- 点击保存。
gcloud
使用 bigtable authorized-views
update
命令修改授权视图。如需了解详情,请参阅 gcloud bigtable authorized-views update 参考文档。
gcloud bigtable authorized-views update AUTHORIZED_VIEW_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID \
--definition-file=DEFINITION_FILE_PATH
替换以下内容:
AUTHORIZED_VIEW_ID
:授权视图的永久性标识符INSTANCE_ID
:实例的永久性标识符TABLE_ID
:源表的永久标识符DEFINITION_FILE_PATH
:授权视图的有效 JSON 格式表示形式的路径。如需查看格式正确的定义文件示例,请参阅定义文件示例。
您也可以在不提供定义文件的情况下运行该命令。在这种情况下,gcloud CLI 会打开一个编辑器,并提示您输入值。
可选:如需防止 gcloud CLI 显示确认提示(其中显示了当前授权视图结构与提交更新后的结构之间的差异),请在命令中附加 --no-interactive
标志。
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
启用或停用防删除保护
如需为授权视图启用删除防护,请修改定义授权视图的 JSON 文件,将 deletionProtection
标志设置为 true
。
如需停用删除防护,请修改用于定义授权视图的 JSON 文件,将 deletionProtection
标志设置为 false
。
运行 bigtable
authorized-views update
命令并指定更新后的 JSON 文件名,以最终确定对授权视图的更改。如需了解详情,请参阅 gcloud bigtable authorized-views update 参考文档。
删除已获授权的视图
如果您删除某个表,该表的所有已获授权的视图也会一并删除。
已获授权的视图一经删除,便无法恢复。不过,如果您删除某个表,然后又取消删除该表,则该表的所有授权视图都会随该表一起恢复。然后,您必须重新配置授权视图和表的 IAM。如需了解详情,请参阅取消删除表。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含已获授权的视图的实例。
在导航窗格中,点击 Bigtable Studio。
在探索器中,展开相应表和已获授权的视图。
在要删除的授权视图旁边,点击 more_vert 操作菜单,然后点击删除。
gcloud
使用 bigtable instances tables
authorized-views delete
命令删除已获授权的视图。如需了解详情,请参阅 gcloud bigtable authorized-views delete 的参考文档。
gcloud bigtable authorized-views delete AUTHORIZED_VIEW_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID
替换以下内容:
AUTHORIZED_VIEW_ID
:授权视图的永久性标识符INSTANCE_ID
:实例的永久性标识符TABLE_ID
:源表的永久标识符
可选:如需防止 gcloud CLI 显示确认提示(要求您确认或取消删除),请在命令中附加 --nointeractive
标志。
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
获取表的授权视图列表
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含已获授权的视图的实例。
在导航窗格中,点击 Bigtable Studio。
在探索器中,展开相应表和已获授权的视图。
gcloud
运行 bigtable authorized-views list
命令。如需了解详情,请参阅 gcloud bigtable authorized-views list 参考文档。
gcloud bigtable authorized-views list \
--instance=INSTANCE_ID \
--table=TABLE_ID
替换以下内容:
INSTANCE_ID
:实例的永久性标识符TABLE_ID
:表的永久标识符
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
查看已获授权的视图的详细信息
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含已获授权的视图的实例。
在导航窗格中,点击 Bigtable Studio。
在探索器中,展开相应表和已获授权的视图。
在要查看的授权视图旁边,点击 more_vert 操作菜单,然后点击打开。
gcloud
如需获取有关授权视图的详细信息,请运行 bigtable instances
tables authorized-views describe
命令。如需了解详情,请参阅 gcloud bigtable authorized-views describe 中的参考文档。
gcloud bigtable authorized-views describe \
–-instance=INSTANCE_ID \
–-table=TABLE_ID \
AUTHORIZED_VIEW_ID
替换以下内容:
INSTANCE_ID
:实例的永久性标识符TABLE_ID
:表的永久标识符AUTHORIZED_VIEW_ID
:授权视图的永久性标识符
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
授予对已获授权的视图的访问权限
如需详细了解访问权限控制,请参阅使用 IAM 进行 Bigtable 访问权限控制。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含已获授权的视图的实例。
在导航窗格中,点击 Bigtable Studio。
在探索器窗格中,展开相应表和已获授权的视图。
点击授权视图名称旁边的 more_vert 操作菜单,然后点击授予访问权限。
添加至少一个主账号,然后选择应向该主账号或主账号群组分配的角色。
可选:如需授予其他角色的访问权限,请点击添加其他角色,然后为每个其他角色输入主账号和角色。
点击保存。
gcloud
如需授予对授权视图的访问权限,请使用 bigtable
authorized-views add-iam-policy-binding
命令。如需了解详情,请参阅 gcloud bigtable authorized-views add-iam-policy-binding 参考文档。
gcloud bigtable authorized-views add-iam-policy-binding AUTH_VIEW_ID \
--instance=INSTANCE_ID --table=TABLE_ID \
--member=PRINCIPAL --role=ROLE
替换以下内容:
AUTH_VIEW_ID
:授权视图的 IDTABLE_ID
:授权视图所基于的表的 IDINSTANCE_ID
:包含该表的实例PRINCIPAL
:您要向其授予访问权限的主账号(用户),例如user:222larabrown@gmail.com
ROLE
:您要授予的角色,例如roles/bigtable.reader
。