繁体   English   中英

限制直接访问Azure sql外部数据源

[英]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 数据库的权限,但在“工作区范围的权限”部分中,您可以在工作区级别为用户分配系统管理员角色。

  1. 设置安全组
  2. 准备 ADLS Gen2 存储帐户
  3. 创建和配置您的 Azure Synapse 工作区
  4. 授予工作区 MSI 访问默认存储容器的权限
  5. 授予 Synapse 管理员工作区的 Azure 贡献者角色
  6. 分配 SQL Active Directory 管理员角色
  7. 授予对 SQL 个池的访问权限
  8. 将用户添加到安全组
  9. 网络安全

参考 - https://learn.microsoft.com/en-us/azure/synapse-analytics/security/how-to-set-up-access-control#supporting-more-advanced-scenarios

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM