统一目录的最佳实践

本文档提供了建议使用统一目录和δ来满足您的数据共享的治理需求。

联合目录是一个细粒度的数据治理解决方案和砖Lakehouse AI。它有助于简化数据的安全性和治理提供一个中心位置管理和审计数据访问。三角洲分享是一个安全的数据共享平台,让你在砖与用户共享数据以外的组织。bob体育客户端下载它使用统一目录管理和审计分享行为。

数据治理、数据隔离的构建块

开发一个数据治理模型和数据隔离计划,为您的组织工作,它有助于理解主要构建块可用您当您创建数据治理解决方案在砖。

下图展示了主要数据层次结构统一目录(可获得的对象不是,严格地说,数据对象显示为灰色)。

统一目录对象模型图

中的对象层次结构包括以下:

  • Metastore:metastore顶层容器的对象在统一目录。Metastores住在帐户级别和功能的金字塔的顶端砖数据治理的模式。

    Metastores管理数据资产(表、视图和卷)和控制访问权限。砖的帐户管理员可以创建一个metastore每个区域的操作,并将它们分配给多个砖工作区在同一地区。Metastore Metastore管理员可以管理所有对象。他们没有直接访问读写注册表metastore,但他们有间接访问对象所有权传递数据的能力。

    物理存储对于任何给定metastore,默认情况下,从存储其他metastore分离您的帐户。

    Metastores提供区域隔离,但并不打算作为单位的数据隔离。数据隔离应该开始在目录级别。

  • 目录:目录是最高水平的数据层次结构(目录>模式>表/视图/卷)由metastore统一目录管理。他们是打算作为最基本单位的数据隔离在一个典型的砖数据治理的模式。

    目录代表的逻辑分组模式,通常由数据访问需求有限。目录通常镜子组织单位或软件开发生命周期的范围。例如,你可以选择一个目录的生产数据和发展一个目录数据,或目录非定制数据,一个用于敏感的客户数据。

    目录可以存储在相同的物理存储父metastore,或者您可以配置一个目录存储与其他家长metastore分开。

    如果编目数据隔离的主要单位是砖数据治理模型,工作空间是主要的环境处理数据资产。Metastore管理员和目录所有者可以访问目录独立的工作空间,也可以将目录绑定到特定的工作区,以确保某些类型的数据只有在处理这些工作区。你可以单独的生产和开发工作区,例如,或一个独立的工作空间进行处理个人数据。

    默认情况下,可获得的对象的访问权限继承了该对象,目录层次结构的顶部。这使得它更容易设置默认为数据访问规则,指定不同的规则在每个层次只在你需要他们。

  • 模式(数据库):模式,也称为数据库的逻辑分组表格数据(表和视图),non-tabular数据(卷),功能,和机器学习模型。他们给你一种方式组织更细粒度的访问控制数据目录。通常他们代表单个用例、项目或团队沙箱。

    模式可以存储在相同的物理存储父目录,或者您可以配置一个模式分开存储剩余的父目录。

    Metastore管理员、父目录的所有者和模式所有者可以访问模式。

  • 表:统一目录表位于第三层的三级名称空间。他们包含数据行。

    统一目录允许您创建管理表外部表

    对于管理表,统一目录完全管理生命周期和文件布局。默认情况下,存储在根管理表存储位置当你创建一个metastore配置。你可以选择而不是隔离存储管理表的目录或模式的水平。

    外部表是表的数据生命周期管理和文件布局使用您的云提供商和其他数据平台,统一编目。bob体育客户端下载通常使用外部表注册大量的现有数据,或者如果你还需要写访问的数据使用工具以外的砖集群和砖SQL的仓库。一旦外部表目录metastore统一注册,你可以管理和审计数据砖访问它就像你可以与管理表。

    父目录所有者和模式所有者可以访问表,是可以metastore管理员(间接)。

  • 视图:一个视图是一个只读对象来自一个或多个metastore表和视图。

  • 行和列:行和列级访问,随着数据屏蔽,授予使用动态视图。动态视图是只读的。

  • 卷:卷住在第三层的联合目录的三级名称空间。他们管理non-tabular数据。您可以使用卷存储、组织和访问任何格式的文件,包括结构化、半结构化和非结构化数据。文件数量不能注册为表。

模型和函数是可获得的对象统一目录,但没有数据对象如表和卷,因此不包括在本文的讨论的数据隔离和治理。看到模型统一目录_

计划你的数据隔离模型

当一个组织使用一个数据平台像砖一样,通常会有需要数据隔离界限环境(bob体育客户端下载如开发和生产)或组织之间的操作单元。

组织隔离标准可能有所不同,但通常包括以下预期:

  • 用户只能访问数据基于指定的访问规则。

  • 数据只能由指定的人或团队管理。

  • 数据在物理上分开存储。

  • 只能在指定的环境中访问数据。

需要数据隔离会导致孤立的环境,可以使数据治理和协作变得比较困难。砖使用统一目录解决了这个问题,它提供了大量的数据隔离选项,同时保持一个统一的数据管理平台。bob体育客户端下载本节讨论的数据隔离选择在砖和如何使用它们,你是否更喜欢集中式或分布式数据治理模型。

用户只能访问数据基于指定的访问规则

大部分组织都有严格的要求在数据访问基于内部或监管要求。典型的数据,必须保持安全的例子包括员工薪资信息或信用卡付款信息。对这类信息的访问通常是定期严格地控制和审计。统一目录为您提供细粒度控制目录中的数据资产来满足这些行业标准。统一目录提供的控件,用户只能查看和查询数据,他们有权查看和查询。

数据只能由指定的人或团队管理

统一目录使您能够选择集中式和分布式控制模型。

在集中式控制模型中,您的治理管理员metastore所有者和可以采取任何对象的所有权授予和撤销权限。

在分布式治理模型,目录的目录或一组数据域。目录的所有者可以创建和自己的所有资产和管理域中治理。任何给定域的所有者可以独立运作的其他领域的所有者。

无论你选择metastore或目录数据域,砖强烈建议您设置一个组作为metastore管理员或目录所有者。

统一目录所有权和访问

数据在物理上分开存储

当metastore砖账户管理员创建一个统一的目录,它们提供了一个云存储位置和凭证作为管理表的默认位置。

然而,组织需要监管原因或物理隔离的数据,例如,在SDLC范围、业务单位之间,或者成本分配目的分配独立的物理数据存储位置在目录和模式的水平。

统一目录存储层次结构

只能在指定的环境中访问数据

组织和法规遵循需求通常指定某些数据,如个人数据,只能在特定的环境中。您可能还想阻止生产数据隔离的开发环境或确保某些数据集和域都连接在一起。

在砖,工作区是主要的数据处理环境,目录是主数据域。统一目录让metastore管理员和目录所有者分配,或“绑定”,工作区目录。这些environment-aware绑定使您能够确保只有某些目录可用在一个工作区,不管具体的数据对象上的特权授予一个用户。

现在让我们来看一个更深层次的设置统一编目的过程来满足您的需求。

配置一个统一目录metastore

metastore顶层容器的对象在统一目录。Metastores管理数据资产(表、视图和卷)以及其他可获得的对象由统一目录管理。(可获得的对象的完整列表,请参阅在统一目录中可获得的对象)。

建议配置metastores:

  • 你应该建立一个为每个地区metastore砖工作区。

    每个工作区连接到一个地区metastore metastore访问数据的管理。如果你想metastores之间共享数据,使用三角洲分享

  • 每个metastore配置了一个根存储位置可用于管理对象,如表和管理管理卷。你必须确保没有用户直接访问该存储位置管理。

    给这个存储位置可以允许用户访问绕过访问控制在一个统一的目录metastore和干扰可审核性。由于这些原因,metastore根存储应专用桶。你不应该重用一桶也DBFS根文件系统或此前DBFS根文件系统。

    你也可以选择定义管理存储在目录和模式水平,覆盖metastore根的存储位置。

看到创建一个目录metastore统一

配置外部位置和存储凭证

外部位置允许统一目录读取和写入数据云租户代表用户。外部的位置被定义为云存储的路径,结合存储凭证可以用来访问这个位置。

您可以使用外部位置注册外部表和外部卷在统一目录。这些实体的内容是物理上位于中的外部引用位置,当一个用户创建的体积或桌子上。

一个存储凭证封装了一个长期的云凭据提供对云存储的访问。例如,在AWS访问S3 bucket可以配置一个我的角色。

建议配置外部位置:

  • 外部位置,通过结合存储凭证和存储路径,提供强大的存储访问控制和审核。,以防止用户绕过访问控制提供了统一目录,你应该确保你限制用户的数量直接访问任何桶被用作外部位置。出于同样的原因,你不应该挂载存储账户DBFS如果他们也被用作外部位置。砖建议你挂载在云存储位置迁移到外部位置统一目录使用数据浏览

最佳实践列表管理外部位置,明白了管理外部位置,外部表,和外部卷。另请参阅管理外部位置和存储凭证

组织你的数据

砖建议使用目录提供隔离在你组织的信息架构。通常这意味着目录对应的软件开发环境范围,团队,或业务单位。如果你使用工作区作为一个数据隔离工具的例子,对生产和开发环境,使用不同的工作空间或一个特定的工作区处理高度敏感数据时,您还可以将一个目录绑定到特定的工作区。这确保了所有处理数据处理在指定适当的工作区。看到(可选)指定一个特定的工作区目录

统一目录目录

一个模式(也称为一个数据库)是联合目录的第二层三级名称空间和组织表、视图和卷。您可以使用模式来组织和为你的资产定义权限。

对象由统一目录管理外部:

  • 管理的对象是默认方式统一目录中创建数据对象。统一目录管理生命周期,并为这些可获得的文件布局。你不应该使用工具以外的砖直接操作文件管理表或卷。默认情况下,存储在根表和管理卷存储位置当你创建一个metastore配置。您可以选择性地指定目录存储位置或模式管理的水平,覆盖根存储位置。管理表和体积是一个方便的解决方案,当你想为你的内容规定支配位置没有创建和管理外部位置的开销和存储凭证。

    总是使用管理表δ表的格式。

  • 外部对象的可获得的数据生命周期和文件布局并不是由统一目录管理。外部卷和注册表在外部位置提供大量的文件已经存在于云存储不需要数据复制活动。使用外部对象文件时所产生的其他系统和希望他们从内部访问数据砖,或者当工具以外的砖需要直接访问这些文件。

    外部表支持三角洲湖和许多其他数据格式,包括拼花、JSON和CSV。管理和外部卷可以用来访问和存储文件的任意格式:数据结构化、半结构化或非结构化。

关于创建表和卷的更多信息,请参阅创建表创建卷

管理外部位置,外部表,和外部卷

下图表示一个云存储桶的文件系统层次结构,有四个外部位置共享一个存储凭证。

外部位置

一旦外部位置中配置统一目录,您可以创建外部表和卷目录内部外部的位置。然后,您可以使用统一目录管理用户和组访问这些表和卷。这允许您提供特定用户或组能够访问特定的目录和文件云存储桶。

建议使用外部的位置

建议授予权限外部位置:

  • 创建外部位置的能力只授予管理员是谁负责建立统一目录和云存储之间的连接,或可信的数据工程师。

    从内部外部位置提供统一目录大体包括位置在云存储的例子中,一个完整的桶(gs: / / mybucket)或广泛的子路径(gs: / / mybucket / alotofdata)。的目的是云管理员可以参与一些外部位置的设置,然后将管理这些位置的责任委托给砖管理员在你的组织中。砖管理员可以进一步组织外部位置为地区更细粒度的权限通过注册外部卷或外部表在特定前缀根据外部的位置。

    因为外部位置包括,砖建议给创建外部位置只允许管理员是谁负责建立统一目录和云存储之间的连接,或可信的数据工程师。为其他用户提供更细粒度的访问,砖推荐注册的外部表或卷上的外部位置和授予用户访问数据使用卷或表。由于表和卷目录和模式,目录或模式管理员最终控制访问权限。

  • 不要格兰特将军文件文件权限外部位置给终端用户。

    卷的可用性,用户不能使用外部地点创建表,卷,或管理的位置。他们不应该使用外部位置基于路径访问数据科学或其他non-tabular数据用例。

    卷提供支持处理文件使用SQL命令,dbutils,火花api, REST api,起程拓殖,和一个用户界面来浏览,上传和下载文件。此外,卷提供了一个保险丝山是在本地文件系统访问/卷/ < catalog_name > / < schema_name > / < volume_name > /。保险丝安装允许数据科学家和ML工程师访问文件,如果他们是在一个本地文件系统,根据需要由许多机器学习或操作系统库。

    如果你必须授予直接访问文件在外部位置(探索文件云存储在用户创建外部表或体积,例如),可以资助文件。用例给予文件是罕见的。

你应该使用外部位置做以下:

  • 外部表和卷使用登记创建外部体积创建命令。

  • 探索现有文件云存储在你创建外部表或卷在一个特定的前缀。的文件特权是一个先决条件。

  • 注册一个位置作为目录和管理存储模式而不是metastore根斗。的创建管理存储特权是一个先决条件。

更多的建议使用外部位置:

  • 避免路径重叠冲突:永远不要创建外部卷或表的根源外部位置。

    如果你在外部位置创建外部卷或表根,你不能创造任何额外的外部卷或表外的位置。相反,在子目录创建外部卷或表内部外部的位置。

建议使用外部卷

你应该使用外部卷做以下:

  • 注册登陆地区原始数据由外部系统,以支持其加工的早期阶段ETL管道和其他数据工程活动。

  • 摄入寄存器暂存的位置,例如,使用自动加载程序,复制或cta (创建作为)语句。

  • 为数据科学家提供文件存储位置,数据分析师,和机器学习工程师使用的部分探索性数据分析和其他数据科学任务,当卷管理不是一个选项。

  • 给砖用户访问任意文件的产生和沉积在云存储的系统中,例如,大量非结构化数据(如图像、音频、视频和PDF文件)被监测系统或物联网设备,或库文件(jar和车轮)从当地出口依赖关系管理系统或CI / CD管道。

  • 存储操作数据,比如日志或检查点文件,当卷管理不是一个选项。

更多的建议使用外部卷:

  • 砖建议您创建外部卷从一个外部的位置在一个模式。

提示

摄入用例的数据复制到另一个位置使用自动加载程序或例子复制用外部卷。当你想要使用外部表查询数据作为一个表,没有涉及到复制。

建议使用外部表

您应该使用外部表支持正常查询模式的数据存储在云存储中,当创建管理表不是一个选择。

更多的建议使用外部表:

  • 砖建议你创建外部表从一个外部的位置在一个模式。

  • 砖强烈建议对注册表如表在多个外部metastore由于一致性问题的风险。例如,改变模式在一个第二metastore metastore不会注册。使用三角洲metastores之间共享数据的共享。看到共享数据安全地使用三角洲共享

配置访问控制

统一目录中的每个可获得的对象有一个所有者。创建一个对象的主体成为其最初的主人。一个对象的所有者对象上的所有权限,如选择和修改表,以及可获得的对象权限授予的特权和其他主体。只有一个可获得的对象的所有者许可授予特权,反对其他主体。因此,最佳实践来配置在所有对象的所有权集团负责政府资助的对象。业主和metastore管理员都可以过户的一组可获得的对象。此外,如果对象是包含在一个目录(比如一个表或视图),目录和模式所有者可以改变对象的所有权。

可获得的对象统一目录层次和特权是继承了下行。这意味着授予特权在目录或模式自动授予的特权目录内的所有当前和未来的对象或模式。有关更多信息,请参见继承模型

为了读取数据从一个表或视图用户必须有以下特权:

  • 选择表或视图

  • 使用模式在拥有表的模式

  • 使用目录在目录拥有模式

使用目录使授权者遍历目录来访问它的子对象使用模式遍历模式使受让人为了访问它的子对象。例如,选择一个表的数据,用户需要选择那张桌子和特权使用目录特权的父目录,以及使用模式特权在母公司模式。因此,您可以使用这个特权的限制部分数据名称空间特定的团体。一个常见的场景是每个团队建立一个模式,只有团队使用模式创建的模式。这意味着任何表由团队成员只能在团队内部分享。

你可以获得一个表使用以下SQL语法:

格兰特使用目录目录<catalog_name><group_name>;格兰特使用模式模式<catalog_name><schema_name><group_name>;格兰特选择<catalog_name><schema_name><table_name>;<group_name>;

您可以获得使用动态视图列在第二个模式如以下所示的SQL语法:

创建视图<catalog_name><schema_name><view_name>作为选择id,情况下is_account_group_member(<group_name>)然后电子邮件其他的“修订”结束作为电子邮件,国家,产品,<catalog_name><schema_name><table_name>;格兰特使用目录目录<catalog_name><group_name>;格兰特使用模式模式<catalog_name><schema_name><view_name>;<group_name>;格兰特选择<catalog_name><schema_name><view_name>;<group_name>;

你可以安全访问模式中使用动态视图行二次见以下SQL语法:

创建视图<catalog_name><schema_name><view_name>作为选择*<catalog_name><schema_name><table_name>在哪里情况下is_account_group_member(经理)然后真正的其他的< =1000000结束;格兰特使用目录目录<catalog_name><group_name>;格兰特使用模式模式<catalog_name><schema_name><table_name>;<group_name>;格兰特选择<catalog_name><schema_name><table_name>;<group_name>;

看到统一目录管理权限

管理集群配置

砖建议使用集群政策限制配置集群基于一组规则。集群政策让你限制只有团结Catalog-enabled创建集群。使用集群政策减少了可用的选择,这将大大简化集群为用户创建过程并确保他们能够无缝地访问数据。集群政策也允许您控制成本通过限制每个集群的最大成本。

确保访问控制和实施强有力的隔离的完整性保证,统一编目对计算资源的安全要求。出于这个原因,统一编目引入了一个集群的概念的访问模式。统一目录默认是安全的;如果集群配置合适的访问模式,集群不能访问数据在统一目录。看到集群统一目录的访问模式

砖时建议使用共享访问模式共享集群和单个用户访问模式自动化工作和机器学习工作负载。

下面的JSON提供了策略定义一个集群的共享访问模式:

{“spark_version”:{“类型”:“正则表达式”,“模式”:“1 (0 - 1)\ \ [0 - 9]* \ \ .x-scala。*”,“defaultValue”:“10.4.x-scala2.12”},“access_mode”:{“类型”:“固定”,“价值”:“USER_ISOLATION”,“隐藏”:真正的}}

下面的JSON提供了一个自动化的策略定义工作与单用户访问集群模式:

{“spark_version”:{“类型”:“正则表达式”,“模式”:“1 (0 - 1)\ \ [0 - 9]*”。,“defaultValue”:“10.4.x-scala2.12”},“access_mode”:{“类型”:“固定”,“价值”:“SINGLE_USER”,“隐藏”:真正的},“single_user_name”:{“类型”:“正则表达式”,“模式”:“。*”,“隐藏”:真正的}}

审计访问

一个完整的数据治理解决方案要求审计访问数据,并提供报警和监控功能。统一目录捕获对metastore执行的操作的审计日志,这些日志交付砖审计日志的一部分。

看到监控你的砖Lakehouse平台与审计日志bob体育客户端下载有关如何获取完整的可视性与砖Lakehouse平台相关的关键事件。bob体育客户端下载

共享数据安全地使用三角洲共享

三角洲分享是一个开放的协议由砖安全数据共享与其他组织或组织内部的其他部门,不管他们所使用的计算平台。bob体育客户端下载当δmetastore启用共享,统一目录运行三角洲共享服务器。

metastores之间共享数据,您可以利用Databricks-to-Databricks三角洲分享。这允许您从metastores注册表在不同的地区。这些表将会出现在消费metastore只读对象。这些表可以被授予访问像任何其他对象在统一目录。

当你使用Databricks-to-Databricks三角洲metastores之间共享来分享,记住metastore访问控制是有限的。如果可获得的对象,就像一张桌子,有资金和资源共享intra-account metastore,然后从源赠款将不适用于目标份额。目的地份额必须制定自己的赠款。