共用方式為


以最低權限執行透過 Azure Arc 啟用的 SQL Server

適用於:SQL Server

最低權限的資訊安全性原則斷定帳戶和應用程式只能存取所需的資料和作業。 透過透過 Azure Arc 啟用的 SQL Server,您就可以透過最低權限執行代理程式延伸項目服務。 本文說明如何使用最低權限執行代理程式延伸項目服務。

若要選擇設定服務以最低權限執行,請遵循本文中的步驟。 目前,服務不會以最低權限自動執行。

設定適用於 SQL Server 的 Azure 延伸模組的 Windows 服務帳戶和權限,這說明代理程式延伸項目服務的最低權限。

注意

從 2024 年 11 月版本或更新版本開始使用延伸項目的現有伺服器,將自動套用最低權限設定。 此應用程式會逐漸套用。

為了防止自動套用最小權限,請封鎖延伸升級至 2024 年 11 月版。

設定代理程式延伸項目服務以最低權限執行之後,它會使用 NT Service\SQLServerExtension 服務帳戶。

NT Service\SQLServerExtension 帳戶是本機 Windows 服務帳戶:

  • 啟用最低權限選項時,由適用於 SQL Server 的 Azure 延伸模組建立及管理。
  • 授與在 Windows 作業系統上執行適用於 SQL Server 的 Azure 延伸模組服務所需的最低權限。 它只能存取用於讀取和儲存設定或寫入記錄的資料夾和目錄。
  • 授與使用新增登入在 SQL Server 中連接和查詢的權限,特別是針對具有所需最低權限的服務帳戶。 最低權限取決於已啟用的功能。
  • 不再需要權限時更新。 例如,當您停用功能、停用最低權限設定或卸載適用於 SQL Server 的 Azure 延伸模組時,會撤銷權限。 撤銷可確保在不再需要權限之後,不會保留權限。

必要條件

本節會列出完成本文範例所需的系統需求和工具。

系統需求

具有最低權限的設定需要:

  • Windows Server 2012 或更新版本
  • SQL Server 2012 或更新版本
  • SQL Server 服務帳戶必須是固定伺服器角色的成員sysadmin
  • 所有資料庫都必須在在線且可更新

Linux 目前不支援具有最低權限的設定。

其他需求,如必要條件 - Azure Arc 所啟用的 SQL Server 仍適用

SQL Server 服務帳戶

根據預設,SQL Server 服務帳戶是固定伺服器角色的成員 sysadmin

如必要條件中所述,SQL Server 服務帳戶必須是每個 SQL Server 實例上固定伺服器角色的成員 sysadmin 。 適用於 SQL Server 的 Azure 擴充功能有一個稱為 Deployer.exe 的程式,會在下列情況下暫時執行 NT AUTHORITY\SYSTEM

  • 功能已啟用或停用
  • 新增或移除 SQL Server 實例

Deployer.exe 根據啟用或停用哪些功能,模擬 SQL Server 服務帳戶來連線到 SQL Server,並在伺服器和資料庫角色中新增或移除許可權,以確保 SQL Server 的 Azure 擴充功能使用所需的最低許可權。 若要修改這些許可權,SQL Server 服務帳戶必須是伺服器角色的成員 sysadmin

如果您想要以更多控制權來管理此程式,讓 SQL Server 服務帳戶不是 sysadmin 伺服器角色的成員,請遵循下列步驟:

  1. 暫時將 SQL Server 服務帳戶新增至 sysadmin 伺服器角色。
  2. 允許 Deployer.exe 至少執行一次,以便設定許可權。
  3. 從系統管理員角色中移除 SQL Server 服務帳戶。

每當啟用或停用功能或新增 SQL Server 實例以允許 Deployer.exe 授與所需的最低許可權時,請重複此程式。

工具

若要完成本文中的步驟,您需要下列工具︰

啟用最低權限

  1. 使用 Azure CLI 登入。

    az login
    
  2. 確認 arcdata 延伸模組版本。

    az extension list -o table
    

    如果結果包含支援的 arcdata 版本,請跳至下一個步驟。

    如有必要,請安裝或更新 arcdata Azure CLI 延伸模組。

    安裝擴充功能:

    az extension add --name arcdata
    

    更新延伸模組:

    az extension update --name arcdata
    
  3. 使用 Azure CLI 啟用最低權限。

    若要啟用最低權限,請將 LeastPrivilege 功能旗標設定為 true。 若要完成這項工作,請使用 <resource-group><machine-name> 的更新值執行下列命令。

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    例如,下列命令為名為 myrg 的資源群組中名為 myserver 的伺服器啟用最低權限:

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver 
    

確認最低權限設定

若要確認透過 Azure Arc 啟用的 SQL Server 已設定為以最低權限執行:

  1. 在 Windows 服務中,找出 Microsoft SQL Server Extension Service 服務。 確認服務以服務帳戶 NT Service\SqlServerExtension 身分執行。 

  2. 在伺服器中,開啟工作排程器,並檢查是否已在 Microsoft\SqlServerExtension 下建立名稱為 SqlServerExtensionPermissionProvider 的事件導向工作。

    注意

    在 2024 年 7 月發佈之前,SqlServerExtensionPermissionProvider 是排程的工作。 每小時執行一次。

    在伺服器中開啟工作排程器,並檢查是否已在 SqlServerExtensionPermissionProvider 下建立名稱為 Microsoft\SqlServerExtension 的排程工作。

  3. 開啟 SQL Server Management Studio 並檢查名為 NT Service\SqlServerExtension 的登入。 確認已為帳戶指派下列權限:

    • 連線 SQL
    • 檢視資料庫狀態
    • 檢視伺服器狀態
  4. 使用下列查詢驗證權限:

    若要驗證伺服器層級權限,請執行下列查詢:

    EXECUTE AS LOGIN = 'NT Service\SqlServerExtension'  
    SELECT * FROM fn_my_permissions (NULL, 'SERVER");
    

    若要驗證資料庫層級權限,請以其中一個資料庫的名稱取代 <database name>,然後執行下列查詢:

    EXECUTE AS LOGIN = 'NT Service\SqlServerExtension'  
    USE <database name>; 
    SELECT * FROM fn_my_permissions (NULL, 'database");