管理 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>;
Copy

小技巧

本主题使用以下术语:

  • :emph:`Clean Room 用户:`已被授予 Snowflake 账户中 Clean Room UI 或 API 访问权限的用户。

  • :emph:`Clean Room 协作者:`由 Clean Room 提供商邀请加入 Clean Room 的使用者。协作者同时也是 Clean Room 用户,即必须拥有Clean Room UI 或 API 访问权限才能接受邀请并使用 Clean Room。

管理对 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>;
Copy

管理 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>;
Copy

撤销完整 API 访问权限:

USE ROLE ACCOUNTADMIN;
REVOKE ROLE SAMOOHA_APP_ROLE FROM USER <user_name>;
Copy

授予有限的 API 访问权限

您可以在账户中授予对特定 Clean Room 的有限 API 访问权限。有限访问权限仅允许调用 部分使用者程序 <label-dcr_sproc_consumer_manage_role_access>`(如 ``consumer.run_analysis`),但不允许安装、创建、加入或修改 Clean Room。

以下是向用户授予有限访问权限的方法:

  1. 具备完整 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;
    
    Copy
  2. 随后,用户使用有限的角色在 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');
    
    Copy

撤销有限的 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 角色

  1. 导航至 Snowflake Data Clean Room 登录页面

  2. 在左侧导航栏中,选择 Collaborators

  3. 执行下列操作之一:

    • 如果协作者拥有 Snowflake 账户,请选择 Snowflake Partners » + Snowflake Partner。系统会提示您输入协作者的 Snowflake 账户的详细信息。

    • 如果协作者不是 Snowflake 客户,请选择 Managed Accounts 选项卡,为其创建 Clean Room 托管账户

语言: 中文