Loading
关于 Salesforce Data 360
为洁净室身份提升配置 Snowflake Trust 关系

为洁净室身份提升配置 Snowflake Trust 关系

对于身份提升用例的每个协作邀请,完成所需的 Snowflake 设置,然后在 Data 360 中接受邀请。Data 360 会在验收时自动测试 Snowflake 连接。

所需的 Edition

适用于:Enterprise Edition(家庭组织)
您无法在 Developer Edition 中收到或接受协作邀请。
所需用户权限
要在 Data 360 中创建 Snowflake 数据联盟连接:

系统管理员简档或权限集:

  • Data Cloud 架构师

开始之前:

  • 完成 Snowflake 环境规划身份提升。
  • 在 Data 360 中打开待处理协作邀请,并从接受洁净室协作邀请向导中记下这些值 — 您需要在以下设置步骤中使用它们:
    • 外部 ID — 由 Data 360 为该协作生成的唯一标识符
    • 使用者 Salesforce 域 URL — 使用者的 Salesforce 组织域

设置 Snowflake 环境

  1. 在 Snowflake 工作表中,打开 SQL 编辑器并完成这些任务,以设置数据容器、权限和服务用户。
    备注
    备注 这些代码示例仅用于指导。在生产中使用前,在 Sandbox 中测试和验证所有代码。
  2. 为该客户创建专用数据库和方案,以便他们的数据与其他协作保持隔离。
    CREATE DATABASE CUSTOMER_DB;
    CREATE SCHEMA CUSTOMER_DB.ENRICHED_OUTPUT;

    请注意数据库和方案名称 — 您在接受邀请时在 Data 360 中输入它们。

  3. 创建输出表。

    这些是丰富作业写入的表。用双引号定义所有列名,以保留大小写。如果没有双引号,Snowflake 会自动大写列名,这会导致 Data 360 读取表时出错。

    重要
    重要 在每个输出表上定义主键。Data 360 会在发现表时读取主键元数据,如果任何输出表缺少主键,协作将无法激活。对于电子邮件和电话表,在联系点值列上定义主键,而不是相关方 ID,因为相关方 ID 可以在记录之间重复。
    -- 1. Bridge Table: links consumer Individual IDs to your internal IDs
    CREATE OR REPLACE TABLE CUSTOMER_DB.ENRICHED_OUTPUT.PartnerIndBridgeTable (
      "SourceId"            VARCHAR(255),  -- Consumer's Individual ID
      "PartnerIndividualId" VARCHAR(255)   -- Your internal unique identifier
    );
    
    -- 2. Individual Table: enriched name and identity attributes
    CREATE OR REPLACE TABLE CUSTOMER_DB.ENRICHED_OUTPUT.PartnerBoostedIndividualTable (
      "IndividualId"        VARCHAR(255),  -- Matches PartnerIndividualId in bridge table
      "ssot__FirstName__c"  VARCHAR(255),
      "ssot__LastName__c"   VARCHAR(255),
      "EnrichmentTimestamp" TIMESTAMP_NTZ
    );
    
    -- 3. Email Table: enriched email addresses
    CREATE OR REPLACE TABLE CUSTOMER_DB.ENRICHED_OUTPUT.PartnerBoostedEmailTable (
      "PartyId"             VARCHAR(255),  -- Links to IndividualId in table 2
      "EnrichedEmail"       VARCHAR(255),
      "EnrichmentTimestamp" TIMESTAMP_NTZ
    );
    
    -- 4. Phone Table: enriched phone numbers
    CREATE OR REPLACE TABLE CUSTOMER_DB.ENRICHED_OUTPUT.PartnerBoostedPhoneTable (
      "PartyId"             VARCHAR(255),  -- Links to IndividualId in table 2
      "EnrichedPhone"       VARCHAR(50),
      "EnrichmentTimestamp" TIMESTAMP_NTZ
    );
    备注
    备注 此处显示的表名称是示例。使用您在接受邀请时提供的其他元数据 JSON 中声明的实际名称。Data 360 使用该 JSON 中的 objectApiName 值在 Snowflake 模式中查找表。
  4. 部署丰富作业,并将其配置为针对此客户的方案。

    设置作业代码,以便在接受后从 Data 360 在您的环境中创建的 Snowflake 数据共享中读取,根据您的身份图运行身份解析,并将丰富输出写入您创建的数据库和方案。

    先不要运行作业 — 使用者的数据在 Snowflake 环境中不可用,直到您在 Data 360 中接受邀请。

    备注
    备注 如果您为多个客户使用一个 Snowflake 帐户,丰富作业可以访问该帐户中的所有数据库。将作业的执行角色严格限定在此客户的数据库和方案的范围内,并定期审计角色授予,以确认没有跨客户的访问权限。
  5. 为 Data 360 创建专用角色。

    专用角色是您分配给 Snowflake oidC 服务用户的命名权限集。

    CREATE ROLE IF NOT EXISTS DATACLOUD_SF_ROLE;
  6. 授予角色对仓库、数据库和模式的访问权限。

    要查看帐户中的可用仓库,转到 Snowflake 控制台中的管理员 > 仓库,并记下要使用的仓库的名称。这些命令授予角色使用仓库和访问此客户的数据库和方案的权限。

    GRANT USAGE ON WAREHOUSE MY_WH TO ROLE DATACLOUD_SF_ROLE;
    GRANT USAGE ON DATABASE CUSTOMER_DB TO ROLE DATACLOUD_SF_ROLE;
    GRANT USAGE ON SCHEMA CUSTOMER_DB.ENRICHED_OUTPUT TO ROLE DATACLOUD_SF_ROLE;

    用仓库名称替换 MY_WH,用您创建的数据库替换 CUSTOMER_DB,用您创建的模式替换 ENRICHED_OUTPUT。请记下仓库名称 — 您在接受邀请时在 Data 360 中输入。

  7. 授予角色读取输出表的权限。

    在丰富作业运行后,Data 360 会读取丰富输出表,以在消费者组织中创建丰富 DMO。这些授权授予角色对所有输出表的“选择”访问权限,包括现有表和您稍后创建的任何表。

    GRANT SELECT ON ALL TABLES IN SCHEMA CUSTOMER_DB.ENRICHED_OUTPUT TO ROLE DATACLOUD_SF_ROLE;
    GRANT SELECT ON FUTURE TABLES IN SCHEMA CUSTOMER_DB.ENRICHED_OUTPUT TO ROLE DATACLOUD_SF_ROLE;
  8. 使用 Workload Identity Federation (OIDC) Trust 创建服务用户。

    这是 Data 360 用于连接到 Snowflake 帐户并读取丰富输出表的专用 Snowflake 用户。与普通用户不同,它没有密码,而是信任使用者的 Salesforce 组织颁发的登录令牌。只有作为该特定使用者的组织进行身份验证的 Data 360 才能以此用户身份登录。

    使用您在开始之前部分中记录的外部 ID 和消费者 Salesforce 域 URL。

    CREATE OR REPLACE USER sf_oidc_user
      WORKLOAD_IDENTITY =
      (
        TYPE = OIDC
        ISSUER = 'https://yourcompany.my.salesforce.com/services/connectors'
        SUBJECT = 'your-external-id'
        OIDC_AUDIENCE_LIST = ('https://yourcompany.my.salesforce.com')
      )
      TYPE = SERVICE
      DEFAULT_ROLE = DATACLOUD_SF_ROLE;
    • ISSUER — 输入 Consumer Salesforce 域 URL,后跟/services/connectors。这告诉 Snowflake 哪个 Salesforce 组织可以为此用户颁发登录令牌。例如,https://yourcompany.my.salesforce.com/services/connectors。
    • SUBJECT — 输入外部 ID。这将 Trust 固定到此特定协作 — 即使相同的 Salesforce 组织发送令牌,该令牌也不能访问不同的客户数据。
    • OIDC_AUDIENCE_LIST — 输入没有路径后缀的 Consumer Salesforce 域 URL。例如,https://yourcompany.my.salesforce.com。
    备注
    备注 创建服务用户 — 不要转换现有用户。将现有 Snowflake 用户更改为服务用户会使该用户无法交互登录 Snowflake,并将日常权限与机器访问权限混合在一起。这样做会使客户更难审计和撤销。专用服务用户保持 Data 360 的访问权限完全隔离,并易于移除。如果您为多个客户使用单个 Snowflake 帐户,请在服务用户名中包含客户名称,以避免冲突,例如 Customer1_DC_User。

    请注意服务用户名 — 您在接受邀请时在 Data 360 中输入。

  9. 将角色分配给服务用户。
    GRANT ROLE DATACLOUD_SF_ROLE TO USER sf_oidc_user;
    服务用户具有您设置的权限。
  10. 在转到 Data 360 前,请确认您拥有 Snowflake 环境中的这些值,并在接受向导中输入。
    Data 360 中的字段 Snowflake 中的值
    Snowflake 帐户 URL Snowflake 帐户的完整 URL,例如 https://myorg.snowflakecomputing.com
    服务用户 您为服务用户提供的名称
    数据仓库名称 您使用的仓库名称
    数据库名称 您创建的数据库名称
    方案名称 您创建的方案名称

在 Data 360 中接受协作邀请

  1. 返回 Data 360 中的接受洁净室协作邀请向导,并完成这些接受步骤:选择数据空间,然后创建或选择映射的模板。
  2. 在 " Snowflake Trust关系 " 部分中,验证页面上显示的外部 ID 和 Consumer Salesforce Domain URL 值是否与您在 Snowflake 中创建服务用户时在SUBJECT和ISSUER字段中使用的值相匹配。
    这些值是只读的。Data 360 会在此处显示,以便您在继续之前确认 Snowflake 设置是否正确。
  3. 在“Snowflake 连接设置”部分,输入您在设置步骤中记录的值。
    • Snowflake 帐户 URL:您的 Snowflake 帐户的完整 URL,例如 https://myorg.snowflakecomputing.com
    • 服务用户:您在 Snowflake 中创建的服务用户的名称
    • 数据仓库名称:与服务用户关联的仓库名称
    • 数据库名称:您在 Snowflake 中创建的数据库
    • 模式名称:您在 Snowflake 中创建的模式
  4. 单击测试连接。

    Data 360 尝试使用服务用户连接到 Snowflake 帐户。如果测试失败,请检查 Snowflake 服务用户中的SUBJECT和ISSUER值是否与页面上显示的外部 ID 和消费者 Salesforce 域 URL完全匹配。还要检查 Snowflake 帐户是否在与使用者的 Data 360 区域兼容的区域中。

  5. 单击下一步,接受邀请。
 
正在加载
Salesforce Help | Article