將 AD FS Powershell Cmdlet 存取權委派給非系統管理員使用者

根據預設,只有 AD FS 系統管理員可以透過 PowerShell 執行 AD FS 管理。 對於許多大型組織而言,在與技術支援人員等其他人員交涉時,這可能不是可行的操作模型。

使用 Just Enough Administration (JEA),客戶現在可以將特定 Cmdlet 的權限委派給不同的人員群組。

此使用案例有個良好的範例,就是在使用者經過審查後,允許技術支援人員查詢 AD FS 帳戶鎖定狀態並且在 AD FS 中重設帳戶鎖定狀態。 在此情況下,需要委派的 Cmdlet 為:

  • Get-ADFSAccountActivity
  • Set-ADFSAccountActivity
  • Reset-ADFSAccountLockout

我們會在本文件的其餘部分使用此範例。 不過,您可以自訂此項目,以允許委派設定信賴憑證者的屬性,並將此屬性交給組織內的應用程式擁有者。

建立授與使用者權限所需的群組

  1. 建立群組受控服務帳戶。 gMSA 帳戶用於允許 JEA 使用者存取網路資源做為其他電腦或 Web 服務。 其提供的網域身分識別可用於針對網域內任何電腦上的資源進行驗證。 gMSA 帳戶稍後會在設定中獲取必要的系統管理權限。 在此範例中,我們會呼叫 gMSAContoso帳戶。
  2. 建立可填入使用者的 Active Directory 群組,而這些使用者需要獲取委派命令的權限。 在此範例中,技術支援中心人員可獲取讀取、更新及重設 AD FS 鎖定狀態的權限。 我們在整個範例中將此群組稱為 JEAContoso

在 AD FS 伺服器上安裝 gMSA 帳戶

建立具有 AD FS 伺服器系統管理權限的服務帳戶。 只要安裝 AD RSAT 套件,就可以在網域控制站上或遠端執行此作業。 服務帳戶必須建立在與 AD FS 伺服器相同的樹系中。

將範例值修改為伺服器陣列的組態。

 # This command should only be run if this is the first time gMSA accounts are enabled in the forest
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10)) 

# Run this on every node that you want to have JEA configured on
$adfsServer = Get-ADComputer server01.contoso.com

# Run targeted at domain controller
$serviceaccount = New-ADServiceAccount gMSAcontoso -DNSHostName <FQDN of the domain containing the KDS key> -PrincipalsAllowedToRetrieveManagedPassword $adfsServer –passthru

# Run this on every node
Add-ADComputerServiceAccount -Identity server01.contoso.com -ServiceAccount $ServiceAccount

在 AD FS 伺服器上安裝 gMSA 帳戶。 這必須在伺服器陣列中的每個 AD FS 節點上執行。

Install-ADServiceAccount gMSAcontoso

授與系統管理權限給 gMSA 帳戶

如果伺服器陣列使用委派的系統管理,請將其新增至具有委派系統管理存取權的現有群組,以授與系統管理權限給 gMSA 帳戶。

如果伺服器陣列並未使用委派的系統管理,使其成為所有 AD FS 伺服器上的本機系統管理群組,以授與系統管理權限給 gMSA 帳戶。

建立 JEA 角色檔案

在 AD FS 伺服器上,在記事本檔案中建立 JEA 角色。 JEA 角色功能提供建立角色的指示。

此範例中委派的 Cmdlet 為 Reset-AdfsAccountLockout, Get-ADFSAccountActivity, and Set-ADFSAccountActivity

委派 ‘Reset-ADFSAccountLockout'、‘Get-ADFSAccountActivity' 和 ‘Set-ADFSAccountActivity' Cmdlet 存取權的 JEA 角色範例:

@{
GUID = 'b35d3985-9063-4de5-81f8-241be1f56b52'
ModulesToImport = 'adfs'
VisibleCmdlets = 'Reset-AdfsAccountLockout', 'Get-ADFSAccountActivity', 'Set-ADFSAccountActivity'
}

建立 JEA 工作階段組態檔

請遵循指示來建立 JEA 工作階段組態檔案。 此組態檔會決定誰可以使用 JEA 端點,以及他們可以存取哪些功能。

角色功能會以角色功能檔案的一般名稱 (不含副檔名的檔案名稱) 來參考。 如果系統上有多個角色功能具有相同的一般名稱,PowerShell 會使用其隱含搜尋順序來選取有效的角色功能檔案。 這不會提供所有同名角色功能檔案的存取權。

若要指定具有路徑的角色功能檔案,請使用 RoleCapabilityFiles 引數。 對於子資料夾,JEA 會尋找包含 RoleCapabilities 子資料夾的有效 PowerShell 模組,其中 RoleCapabilityFiles 引數應該修改為 RoleCapabilities

工作階段組態檔範例:

@{
SchemaVersion = '2.0.0.0'
GUID = '54c8d41b-6425-46ac-a2eb-8c0184d9c6e6'
SessionType = 'RestrictedRemoteServer'
GroupManagedServiceAccount =  'CONTOSO\gMSAcontoso'
RoleDefinitions = @{ JEAcontoso = @{ RoleCapabilityFiles = 'C:\Program Files\WindowsPowershell\Modules\AccountActivityJEA\RoleCapabilities\JEAAccountActivityResetRole.psrc' } }
}

儲存工作階段組態檔。

如果您使用文字編輯器手動編輯 pssc 檔案,則建議測試工作階段組態檔以確保語法正確無誤。 如果工作階段組態檔未通過此測試,就不會在系統上註冊成功。

在 AD FS 伺服器上安裝 JEA 工作階段組態

在 AD FS 伺服器上安裝 JEA 工作階段組態

Register-PSSessionConfiguration -Path .\JEASessionConfig.pssc -name "AccountActivityAdministration" -force

操作指示

設定之後,JEA 記錄和稽核可用來判斷正確的使用者是否有權存取 JEA 端點。

若要使用委派的命令:

Enter-pssession -ComputerName server01.contoso.com -ConfigurationName "AccountActivityAdministration" -Credential <User Using JEA>
Get-AdfsAccountActivity <User>