![](/img/trans.png)
[英]Handle error "External tables are not supported with the provided data source type" in Azure SQL DB?
[英]Restricting direct access to Azure sql external data source
我尝试在 Azure Synapse ondemand 数据库中创建 Row-Level-Security。 数据存储在 Azure Datalake Storage Gen 2 中。脚本运行良好,但受限用户组的成员仍然可以手动运行 OPENROWSET 命令并查看所有数据。 有人知道我缺少什么部分吗?
CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity
WITH IDENTITY = 'Managed Identity'
GO
CREATE EXTERNAL DATA SOURCE [DataLakeStorage] WITH (LOCATION = N'https://theorders.dfs.core.windows.net/', CREDENTIAL = WorkspaceIdentity )
GO
GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[WorkspaceIdentity] TO [MyTestGroup];
GO
CREATE VIEW [model].[my_orders] as
SELECT * FROM
OPENROWSET(BULK 'dimorders/*.parquet',
DATA_SOURCE = 'DataLakeStorage', FORMAT = 'parquet') as rows
WHERE [UserName] = suser_name()
GO
GRANT SELECT ON [model].[my_orders] TO [MyTestGroup]
GO
无限制接收所有数据的示例脚本
SELECT * FROM
OPENROWSET(BULK 'dimorders/*.parquet',
DATA_SOURCE = 'DataLakeStorage', FORMAT = 'parquet') as rows
我建议您按照以下步骤操作,其中显示了如何授予用户访问特定数据库的权限。
注意 - 需要为每个 SQL 池运行以下步骤,以授予用户访问所有 SQL 数据库的权限,但在“工作区范围的权限”部分中,您可以在工作区级别为用户分配系统管理员角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.