簡體   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