適用於:SQL Server
最低權限的資訊安全性原則斷定帳戶和應用程式只能存取所需的資料和作業。 透過透過 Azure Arc 啟用的 SQL Server,您就可以透過最低權限執行代理程式延伸項目服務。 本文說明如何使用最低權限執行代理程式延伸項目服務。
若要選擇設定服務以最低權限執行,請遵循本文中的步驟。 目前,服務不會以最低權限自動執行。
設定適用於 SQL Server 的 Azure 延伸模組的 Windows 服務帳戶和權限,這說明代理程式延伸項目服務的最低權限。
注意
目前,預設不會套用最低權限設定。
具有延伸版本 1.1.2859.223 或更高版本的現有伺服器最終會套用最低權限的設定。 此擴充功能已於 2024 年 11 月發行。 若要防止自動套用最低權限,請在1.1.2859.223之後封鎖延伸功能升級。
設定代理程式延伸項目服務以最低權限執行之後,它會使用 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 。 Azure 的 SQL Server 擴充功能有一個程序稱為 Deployer.exe,會在下列情況下暫時執行為 NT AUTHORITY\SYSTEM:
- 功能已啟用或停用
- 新增或移除 SQL Server 實例
Deployer.exe 根據啟用或停用哪些功能,模擬 SQL Server 服務帳戶來連線到 SQL Server,並在伺服器和資料庫角色中新增或移除許可權,以確保 SQL Server 的 Azure 擴充功能使用所需的最低許可權。 若要修改這些許可權,SQL Server 服務帳戶必須是伺服器角色的成員 sysadmin 。
如果您想要更有控制地管理此過程,使得 SQL Server 服務帳戶不會一直是 sysadmin 伺服器角色的成員,請遵循下列步驟:
- 暫時將 SQL Server 服務帳戶新增至 sysadmin 伺服器角色。
- 允許
Deployer.exe至少執行一次,以便設定許可權。 - 從系統管理員角色中移除 SQL Server 服務帳戶。
每當啟用或停用功能或新增 SQL Server 實例以允許 Deployer.exe 授與所需的最低許可權時,請重複此程式。
工具
若要完成本文中的步驟,您需要下列工具︰
- Azure CLI
-
arcdataAzure CLI 延伸模組版本1.5.9或更新版本 - 適用於 SQL Server 的 Azure 延伸模組版本
1.1.2504.99或更新版本
啟用最低權限
使用 Azure CLI 登入。
az login確認
arcdata延伸模組版本。az extension list -o table如果結果包含支援的
arcdata版本,請跳至下一個步驟。如有必要,請安裝或更新
arcdataAzure CLI 延伸模組。安裝擴充功能:
az extension add --name arcdata更新擴充功能:
az extension update --name arcdata使用 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>例如,下列命令為名為
myserver的資源群組中名為myrg的伺服器啟用最低權限:az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
確認最低權限設定
若要確認透過 Azure Arc 啟用的 SQL Server 已設定為以最低權限執行:
在 Windows 服務中,找出 Microsoft SQL Server Extension Service 服務。 確認該服務是以服務帳戶
NT Service\SqlServerExtension執行。在伺服器中,開啟工作排程器,並檢查是否已在
SqlServerExtensionPermissionProvider下建立名稱為Microsoft\SqlServerExtension的事件導向工作。注意
在 2024 年 7 月發佈之前,
SqlServerExtensionPermissionProvider是排程任務。 每小時執行一次。在伺服器中開啟工作排程器,並檢查是否已在
SqlServerExtensionPermissionProvider下建立名稱為Microsoft\SqlServerExtension的排程工作。開啟 SQL Server Management Studio 並檢查名為
NT Service\SqlServerExtension的登入。 確認已為帳戶指派下列權限:- 連線 SQL
- 檢視資料庫狀態
- 檢視伺服器狀態
使用下列查詢驗證權限:
若要驗證伺服器層級權限,請執行下列查詢:
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');