如何避免用户 运行 从配置单元 Metastore 中删除增量 table
How avoid user run drop delta table from hive metastore
我在尝试 运行 数据块中的数据对象权限时遇到问题。
我有一个配置,在两个 azure databricks 工作区之间有一个共享元存储,为此我使用了另一个 databricks 工作区(master)并将其他两个工作区连接到这个 master 的 hive metastore,下图显示了这一点:
我遵循了这个教程:https://cprosenjit.medium.com/sharing-databricks-hive-metastore-fb87727e2260,它工作正常,我可以在 dbcks 工作区 A 中创建一个 table,我可以在 dbcks 工作区 B 中看到 table 数据。直到这里一切都好。
问题是 A 中的用户可以删除在 B 中创建的 table,删除命令不会删除 table 数据,因为它已外部化到 azure datalake,但它会删除共享元存储中的 table 定义,这可能会变得混乱。
我试图在 Azure 上遵循这篇文章强制治理 Data Object Privileges and enabled table access control like this another article 解释:
- 为 Azure Databricks 工作区启用 table 访问控制。
- 拒绝用户访问未启用 table 访问控制的集群。
- 启用table 访问控制并且在集群配置中只允许Python 和SQL 命令
完成后,我尝试运行这个命令:
%sql
GRANT SELECT ON DATABASE trusted_zone_af TO users
但我收到此错误:Table 此集群上未启用访问控制
我重新启动了集群 3 次,还创建了另一个集群并重复了这个过程,但我不知道还能做什么。
任何人都可以帮助我,
如果有人有任何建议以防止在 Metastore 上执行删除命令,请告诉我。
谢谢
您似乎正试图 运行 集群上的笔记本 not of High Concurrency mode
。 Table 访问控制选项仅适用于 High Concurrency 个集群。
示例: 我创建了两个集群,如下所示,其中 ktestcluster
是高并发模式,runtable
为标准模式。现在我已经遵循了使用 table 访问控制的所有设置和先决条件。
现在,我可以 GRANT select 如下所示 ktestcluster
但是当我切换到 runtable
集群并尝试相同的..bam!错误
此外,为了防止在 Metastore 上执行删除命令,对象所有权在此处表示为 OWN 权限。操作 DROP TABLE 需要 table 上的 OWN 权限。因此,针对用户的特定 table REVOKE OWN,这样他们就不能删除 table.
%sql
REVOKE OWN ON TABLE sample4_csv TO `users`
如果它 returns 一个错误,这仅仅意味着他们没有开始的特权。 REVOKE 只有在已经分配了一些东西的情况下才能工作。
我在尝试 运行 数据块中的数据对象权限时遇到问题。
我有一个配置,在两个 azure databricks 工作区之间有一个共享元存储,为此我使用了另一个 databricks 工作区(master)并将其他两个工作区连接到这个 master 的 hive metastore,下图显示了这一点:
我遵循了这个教程:https://cprosenjit.medium.com/sharing-databricks-hive-metastore-fb87727e2260,它工作正常,我可以在 dbcks 工作区 A 中创建一个 table,我可以在 dbcks 工作区 B 中看到 table 数据。直到这里一切都好。
问题是 A 中的用户可以删除在 B 中创建的 table,删除命令不会删除 table 数据,因为它已外部化到 azure datalake,但它会删除共享元存储中的 table 定义,这可能会变得混乱。
我试图在 Azure 上遵循这篇文章强制治理 Data Object Privileges and enabled table access control like this another article 解释:
- 为 Azure Databricks 工作区启用 table 访问控制。
- 拒绝用户访问未启用 table 访问控制的集群。
- 启用table 访问控制并且在集群配置中只允许Python 和SQL 命令
完成后,我尝试运行这个命令:
%sql
GRANT SELECT ON DATABASE trusted_zone_af TO users
但我收到此错误:Table 此集群上未启用访问控制
我重新启动了集群 3 次,还创建了另一个集群并重复了这个过程,但我不知道还能做什么。
任何人都可以帮助我,
如果有人有任何建议以防止在 Metastore 上执行删除命令,请告诉我。
谢谢
您似乎正试图 运行 集群上的笔记本 not of High Concurrency mode
。 Table 访问控制选项仅适用于 High Concurrency 个集群。
示例: 我创建了两个集群,如下所示,其中 ktestcluster
是高并发模式,runtable
为标准模式。现在我已经遵循了使用 table 访问控制的所有设置和先决条件。
现在,我可以 GRANT select 如下所示 ktestcluster
但是当我切换到 runtable
集群并尝试相同的..bam!错误
此外,为了防止在 Metastore 上执行删除命令,对象所有权在此处表示为 OWN 权限。操作 DROP TABLE 需要 table 上的 OWN 权限。因此,针对用户的特定 table REVOKE OWN,这样他们就不能删除 table.
%sql
REVOKE OWN ON TABLE sample4_csv TO `users`
如果它 returns 一个错误,这仅仅意味着他们没有开始的特权。 REVOKE 只有在已经分配了一些东西的情况下才能工作。