管理 Clean Room 用户和访问权限¶
概述¶
本主题介绍账户管理员如何管理用户对其账户中 Clean Room UI 和 API 的访问权限。
Clean Room UI 和 API 的访问权限需分别授予。Clean Room 定义了多个应用程序角色,用于控制对 API 及 UI 不同子版块的访问权限。账户管理员需创建自定义角色,授予所需的应用程序角色以实现对 UI 和 API 的精细化访问控制,随后将该角色分配给账户中的不同用户。
此策略采用 Snowflake 基于角色的访问控制 (RBAC) 模型,为账户中的 Clean Room 用户和协作者合理分配权限。有关 RBAC 的更多信息,请参阅 访问控制概述。要查看哪些用户被授予特定角色,请运行以下 SQL 命令:
SHOW GRANTS OF ROLE <role_name>;
管理对 Clean Room UI 的访问权限¶
具有适当角色的用户可访问 Clean Room UI。还必须为 Clean Room 用户分配默认仓库并授予其对该仓库的 USAGE 权限。
以下角色可授予管理或访问 Clean Room UI 的权限:
ACCOUNTADMIN: 用于安装或卸载 Clean Room 环境的角色。该角色还可访问 Clean Room UI 中的 Snowflake Admin 页面。账户管理员通过此页面管理服务用户及账户功能,包括 Cross-Cloud Auto-Fulfillment、外部表和 Iceberg 表,以及 UI 用户的数据集注册。该角色拥有所有 Clean Room UI 权限;以 ACCOUNTADMIN 身份运行的用户无需额外 UI 应用程序角色。
MANAGE_CLEANROOMS: 应用程序角色,提供创建、更新、删除和安装 Clean Room,以及在 Clean Room UI 中创建、更新、删除和运行分析的功能。
MANAGE_DCR_PROFILE_AND_FEATURES: 应用程序角色,提供访问 UI Admin 部分中 Profile & Features 页面的权限,用于在其中管理公司概况并控制哪些第三方连接器可以在 Clean Room 中使用。
MANAGE_DCR_CONNECTORS: 应用程序角色,提供访问 UI 中 Connectors 页面的权限,用于配置第三方连接器。
MANAGE_DCR_COLLABORATORS: 应用程序角色,提供对 UI 中 Collaborators 页面的访问权限,您可在该页面管理 UI 中向 Clean Room 提供商开放的已批准协作者列表。此角色不控制提供商使用 API 时可用的协作者列表;API 用户可邀请任何人进行协作。有关更多信息,请参阅 管理 Clean Room 协作者。
示例
以下代码显示如何创建自定义角色,为该角色授予若干 UI 功能,然后将自定义角色授予用户。
-- Create the role.
USE ROLE ACCOUNTADMIN;
CREATE ROLE dcr_access;
-- Grant capabilities to the new role.
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_CLEANROOMS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_COLLABORATORS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_PROFILE_AND_FEATURES TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_CONNECTORS TO ROLE dcr_access;
-- Assign the role to a user.
-- You must also grant access to a default warehouse to the role.
GRANT USAGE ON WAREHOUSE <your_warehouse> TO ROLE dcr_access;
ALTER USER <some_user> SET DEFAULT_WAREHOUSE = <your_warehouse>;
GRANT ROLE dcr_access to USER <some_user>;
管理 API 用户¶
API 访问权限通过角色进行管理。以下 Snowflake 角色用于访问或管理 API:
ACCOUNTADMIN: 用于安装或卸载 Clean Room 环境的角色。此角色不包含 SAMOOHA_APP_ROLE;要使用 API,必须使用 SAMOOHA_APP_ROLE。
SAMOOHA_APP_ROLE: 此角色授予对本账户中 Clean Room API 的 完整权限。(Clean Room UI 通过此角色与 API 通信。)
仅运行开发者角色: 使用 SAMOOHA_APP_ROLE 的用户可 授予对有限访问权限角色的使用权限。此角色也称为 运行角色 ,授予在使用者上下文中对 Clean Room 子集使用 API 程序子集的权限。可以向角色授予这些有限的角色,以便在您的账户中为特定用户(例如数据分析师)提供范围内的使用权限。
授予或撤消完整 API 访问权限¶
SAMOOHA_APP_ROLE 角色会授予用户对账户中所有 Clean Room 的完整 API 访问权限。
授予完整 API 访问权限:
USE ROLE ACCOUNTADMIN;
GRANT ROLE SAMOOHA_APP_ROLE TO USER <user_name>;
撤销完整 API 访问权限:
USE ROLE ACCOUNTADMIN;
REVOKE ROLE SAMOOHA_APP_ROLE FROM USER <user_name>;
授予有限的 API 访问权限¶
您可以在账户中授予对特定 Clean Room 的有限 API 访问权限。有限访问权限仅允许调用 部分使用者程序 <label-dcr_sproc_consumer_manage_role_access>`(如 ``consumer.run_analysis`),但不允许安装、创建、加入或修改 Clean Room。
以下是向用户授予有限访问权限的方法:
具备完整 API 访问权限且可授 SAMOOHA_APP_ROLE 角色的用户,需创建新角色并为该角色分配有限功能:
-- Create the role. USE ROLE ACCOUNTADMIN; CREATE ROLE MARKETING_ANALYST_ROLE; GRANT USAGE ON WAREHOUSE APP_WH TO MARKETING_ANALYST_ROLE; -- Or whichever warehouse you are using -- Grant limited functionality to the role for a subset of clean rooms. CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role( [$cleanroom_1, $cleanroom_2], 'MARKETING_ANALYST_ROLE' ); -- Grant the role to a user. GRANT ROLE MARKETING_ANALYST_ROLE TO USER george.washington;
随后,用户使用有限的角色在 Clean Room 账户中执行特定操作:
-- User george.washington logs in and uses the limited role. USE WAREHOUSE APP_WH USE ROLE MARKETING_ANALYST_ROLE; USE SECONDARY ROLES NONE; -- Consumer-run analyses should succeed. CALL samooha_by_snowflake_local_db.consumer.run_analysis( $cleanroom_name, 'prod_overlap_analysis', ['MY_DB.MYDATA.CONVERSIONS'], -- Consumer tables ['MY_DB.MYDATA.EXPOSURES'], -- Provider tables object_construct( 'max_age', 30 ) ); -- Clean room creation and management procedures fail. CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
撤销有限的 API 访问权限¶
要撤销特定角色在特定 Clean Room 中的运行权限,请调用 revoke_run_on_cleanrooms_from_role。
要撤销单个用户的所有已授予运行权限,请撤销该用户的角色。
管理 Clean Room 协作者¶
协作者 是指 Clean Room 提供商邀请以使用者身份加入 Clean Room 的用户。
使用 Clean Room UI 时,创建者可从由 MANAGE_DCR_COLLABORATORS 角色管理员维护的协作者列表中邀请成员。
使用 Clean Room API 时,提供商不受预定义协作者列表限制,可通过 Snowflake 账户定位器添加任意 Clean Room 协作者。如果您想邀请没有 Snowflake 账户的协作者,则必须先为他们 创建一个 Clean Room 管理的账户。
备注
如果 Snowflake 协作者的账户所在区域与您的 Snowflake 账户不同,则您的账户管理员必须先 启用 Cross-Cloud Auto-Fulfillment,然后您才能将其添加为协作者。
要管理 Clean Room UI 中使用的协作者列表,您需要具备 MANAGE_DCR_COLLABORATORS 角色。
在左侧导航栏中,选择 Collaborators。
执行下列操作之一:
如果协作者拥有 Snowflake 账户,请选择 Snowflake Partners » + Snowflake Partner。系统会提示您输入协作者的 Snowflake 账户的详细信息。
如果协作者不是 Snowflake 客户,请选择 Managed Accounts 选项卡,为其创建 Clean Room 托管账户。
使用 Clean Room API 时,提供商可通过调用 provider.add_consumers
过程添加协作者。
如果协作者不是 Snowflake 客户,则需为其 创建一个 Clean Room 托管账户。