【问题标题】:Row level access control in snowflake雪花中的行级访问控制
【发布时间】:2019-11-26 18:36:44
【问题描述】:

我有一个客户拥有一家地毯清洁公司,我们在多租户数据库模型中拥有他所有不同加盟商的数据,我们希望将这些数据移动到雪花中的数据仓库中。我不想为每个客户建立一个单独的数据库,因为这样我就必须使每个数据库都与最新的数据模型保持同步。我想使用 1 个数据模型来统治它们。我有一个租户 ID,我将其与每条记录一起保存,以识别加盟商的数据。我想为每个加盟商提供一组凭据,以便他们可以连接他们选择的分析工具(tableau、power bi 等),并且只能访问适用于他们的行。有没有办法根据用户来保护他们在每个表中看到的行。换句话说,某种类似于 postgres 中的配置文件的行级访问控制。有没有更好的方法来处理这种情况?最终,我希望维护和管理最少数量的 elt 作业和数据模型。

【问题讨论】:

    标签: security row snowflake-cloud-data-platform


    【解决方案1】:

    这是以太Secure ViewsReader Accounts的目的。

    我们同时使用这两种方法,而且它们的技术麻烦/设置成本大致相同。但我们正在使用内部工具来构建/更改架构。

    【讨论】:

    【解决方案2】:

    扩展西蒙的回答:

    您可以拥有一个 Snowflake 帐户并为每个加盟商创建一个 Snowflake 角色和用户。这些角色可以访问使用 CURRENT_ROLE / CURRENT_USER 上下文函数的安全视图,如 Snowflake 文档中的this example 中所示。

    您必须有一个角色 -> 租户 ID“映射表”,它在安全视图中用于将行限制为正确的加盟商。

    【讨论】:

    • 所以换句话说,我将创建一个 current_user 到租户 id 的映射表,然后创建连接到映射表并使用 current_user 作为视图中的过滤器的安全视图。
    • 是的,你明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2020-04-25
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多