云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_绝地求生服务器状态_企业0元试用

小七 141 0

雪花中的列级安全性

雪花中的列级安全性2020年7月8日|10分钟读数作者:维卡斯雪花新闻雪花很高兴在今天的预览版中宣布,数据屏蔽策略的可用性增强了雪花云数据平台的列级安全性。屏蔽策略有助于管理和查询PII、PHI和其他类型的敏感数据。这些策略允许授权用户以纯文本形式查看敏感数据,同时阻止未经授权的用户完全或以不同级别的密文查看数据。掩蔽包括许多混淆技术,例如部分遮罩、完全遮罩、散列、加密或替换为标记化的值。Electronic Arts是较早使用此功能进行HR分析工作负载的客户之一。请阅读电子艺术首席BI架构师弗拉德瓦列耶夫(VladValeyev)的这篇指导文章,了解更多细节"大多数数据平台都无法保护具有管理员权限的超级用户的敏感数据,这迫使这些数据保存在一个只有少数人可以访问的物理竖井中。雪花新的动态数据屏蔽特性与现有的安全视图功能相结合,只需几行代码就可以解决这一难题。在保证数据安全并可用于自助服务分析的同时,无需对其他业务逻辑进行任何更改。"-Vlad Valeyev,电子艺术首席BI架构师此解决方案与使用安全视图有何不同?许多客户使用Snowflake中的安全视图来管理敏感数据,方法是对未经授权的用户完全隐藏敏感列或使用用户定义函数(UDF)对其进行屏蔽。尽管这种方法适用于某些用例,但它不能解决以下问题对象所有者(安全视图所有者)和具有特权角色的用户仍然可以访问敏感列中的数据。以预标记形式加载的数据不能在查询时取消标记化。附加的安全视图和BI仪表板(在某些情况下,有数千个)增加了管理负担。雪花是一家客户至上的公司。我们听取了您的反馈,并很高兴宣布通过引入数据屏蔽策略来解决上述问题和更多问题。用例场景掩蔽策略可用于以下两种情况:动态数据屏蔽:将纯文本的敏感数据加载到Snowflake中,并在查询未授权用户时对其进行动态屏蔽/加密,如图1所示。图1:动态数据屏蔽示例。外部标记化:在将敏感数据加载到雪花之前,使用合作伙伴解决方案或内部客户开发的解决方案对敏感数据进行标记化/加密。然后,在查询时,通过使用外部函数调用外部令牌化服务的屏蔽策略,为授权用户对数据进行去令牌化/解密。见图2。多个合作伙伴已将其解决方案与雪花集成以提供此功能。图2:外部标记化的示例。使用数据屏蔽策略使用掩蔽策略只有三个步骤:定义屏蔽策略将策略应用于一个或多个列查询数据由于掩蔽策略可以应用于多个数据库和架构中的表和视图的多个列(请参见图3),所以您可以集中更新屏蔽算法和访问规则,并且更改将立即应用于应用此策略的所有列。图3:应用于跨表和视图的多个列的示例屏蔽策略。掩蔽策略是雪花中的一个新对象,它捕获满足特定条件时要使用的条件和函数,如图4所示图4:指定何时应用屏蔽策略的条件。在图4中,会话中当前的PII_role()的用户被授权查看原始数据,具有支持角色的用户可以查看部分屏蔽的数据(如电子邮件的域部分),而当email_mask策略应用于敏感列时,其他用户将看到"***masked***"。这种基于策略的方法与基于角色的访问控制(RBAC)相结合,允许您阻止表/视图所有者和具有特权角色的用户查看敏感数据。下面是一些更多的掩蔽策略示例,可以帮助您更好地理解如何将掩蔽策略用于各种场景。新的内置上下文函数为了帮助定义各种策略条件,雪花引入了四个新的内置上下文函数:在会话()中使用此函数检查给定角色是否是当前会话的一部分。它不仅比较当前的\u role(),还比较了当前的\u role()层次结构中的所有子角色。invoker_role()此函数返回当前执行上下文的执行角色。假设有一个掩蔽策略应用于在策略条件中使用invoker_role()的表列。当用户查询在表上创建的视图时,当表在视图执行上下文中执行时,invoker_role()函数返回"视图所有者角色"。是否将\u授予\u invoker_role()此函数检查给定的角色是否与调用方的角色匹配,或与角色层次结构中的任何子角色匹配。invoker_share()此函数用于数据共享场景,其中提供程序希望与数据使用者共享敏感数据。运行时查询执行数据屏蔽解决方案的最佳部分是,最终用户只需查询数据,而不知道是否在列上设置了屏蔽策略。Snowflake在运行时透明地重写查询,只要它找到附加了屏蔽策略的列。对于授权用户,查询结果以纯文本形式返回敏感数据,而对于未经授权的用户,敏感数据被屏蔽、加密或标记化。下面是用户提交的查询的几个示例,在雪花之后执行的查询会自动重写查询。重写将在查询中出现受保护列的所有位置执行,例如在"projections"、"where"子句、"join"谓词、"groupby"语句或"order by"语句中。如果您希望有选择地重写查询以使"join"谓词不被重写,则可以创建一个视图并将策略应用于视图列而不是原始表。当视图被执行时,Snowflake执行从基表开始的嵌套策略执行,并向上延伸到视图链,如图5所示。图5:策略执行的示例根据用例,您可以决定只在基表列、视图列或两者都应用策略。例如,如果希望某些角色允许访问聚合值,但不允许访问单个敏感信息,则可以使用invoker_role()对表列应用策略,并使用current_role()对视图聚合列应用第二个策略。数据共享的屏蔽策略数据提供者现在可以在与消费者共享敏感数据时屏蔽/模糊敏感数据,只需对共享表或安全视图列应用屏蔽策略。此外,由于引入了新的invoker_share()上下文函数,当在多个共享中使用时,可以对同一列应用不同的屏蔽规则,如图6所示。这使得数据提供者在向消费者提供数据的方式上有了更多的灵活性,同时也便于集中管理。图6:为多个共享的一部分的列提供不同的屏蔽规则的示例。管理数据屏蔽策略通过新的RBAC特权控制谁可以创建屏蔽策略并将其应用于列。不同的组织对如何管理策略有不同的要求。一些组织希望策略集中管理,其他组织希望策略管理成为分散的功能,而其他组织则介于两者之间Snowflake支持这种部署用例的连续统一体,如图7所示。安全/隐私专员可以集中管理和应用策略,或者安全/隐私专员可以定义策略并让各个团队的数据管理员负责将策略应用到他们的数据集。第三种选择是让团队数据管理员定义和应用策略。图7:创建和应用数据屏蔽策略的选项。有几件事要记住屏蔽策略不能应用于虚拟列。此限制是为了防止用户通过直接使用底层表达式绕过策略。如果需要将数据屏蔽策略应用于虚拟列,则可以在虚拟列上创建视图,并将策略应用于视图列。由于除VALUE variant列外,外部表的所有列都是虚拟的,因此只能对VALUE列应用数据屏蔽策略。无法在应用了屏蔽策略的表列上创建具体化视图。类似地,如果表列上存在物化视图,则不能将策略应用于这些列。但是,只要底层列上没有掩蔽策略,就可以对具体化视图列应用屏蔽策略。屏蔽策略会延续到克隆对象。结果集缓存不用于包含具有屏蔽策略的列的查询。结论将您的敏感数据放入雪花中,并开始使用动态数据屏蔽和外部标记进行查询。有关详细信息,请参阅雪花文档。另外,请通过雪花社区分享您的反馈或请求增强功能。就像你读的?通过喜欢和分享来表达你的感激之情!Facebook推特LinkedIn