Privileged Identity Management 中 Azure AD 角色的 PowerShell

本文包含使用 Azure Active Directory (Azure AD) PowerShell Cmdlet 以在 Privileged Identity Management (PIM) 中管理 Azure AD 角色的指示。 其中也會說明如何使用 Azure AD PowerShell 模組來完成設定。

安裝和設定

  1. 安裝 Azure AD 預覽模組

    Install-module AzureADPreview
    
  2. 繼續之前,請確保您擁有必要的角色權限。 如果您嘗試執行管理工作,例如提供角色指派或更新角色設定,請確保您有全域管理員或特殊權限角色管理員角色。 如果您只是要嘗試啟用自己的指派,則不需要超出預設使用者權限以外的權限。

  3. 連線到 Azure AD。

    $AzureAdCred = Get-Credential  
    Connect-AzureAD -Credential $AzureAdCred
    
  4. 前往 Azure Active Directory> [屬性] > [目錄識別碼],尋找 Azure AD 組織的租用戶識別碼。 在 Cmdlet 區段中,每當您需要提供 resourceId 時,請使用此識別碼。

    Find the organization ID in the properties for the Azure AD organization

注意

下列區段是可協助您開始執行的簡單範例。 您可以在 /powershell/module/azuread/?view=azureadps-2.0-preview&preserve-view=true#privileged_role_management 中找到更多有關下列 Cmdlet 的詳細文件。 不過,您必須將 providerID 參數中的 "azureResources" 取代為 "aadRoles"。 您也必須記得將 Azure AD 組織的租用戶識別碼用作 resourceId 參數。

擷取角色定義

使用下列 Cmdlet 來取得 Azure AD 組織中的所有內建和自訂 Azure AD 角色。 這個重要的步驟會提供角色名稱與 roleDefinitionId 之間的對應。 roleDefinitionId 會在這些 Cmdlet 中使用,以便參考特定的角色。

roleDefinitionId 為您的 Azure AD 組織特有,且與角色管理 API 所傳回的 roleDefinitionId 不同。

Get-AzureADMSPrivilegedRoleDefinition -ProviderId aadRoles -ResourceId 926d99e7-117c-4a6a-8031-0cc481e9da26

結果:

Get all roles for the Azure AD organization

擷取角色指派

使用下列 Cmdlet 來擷取 Azure AD 組織中的所有角色指派。

Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "926d99e7-117c-4a6a-8031-0cc481e9da26"

使用下列 Cmdlet 來擷取特定使用者的所有角色指派。 此清單在 Azure AD 入口網站中也稱為「我的角色」。 唯一的差別在於您已為主體識別碼新增篩選。 此內容中的主體識別碼是使用者識別碼或群組識別碼。

Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "926d99e7-117c-4a6a-8031-0cc481e9da26" -Filter "subjectId eq 'f7d1887c-7777-4ba3-ba3d-974488524a9d'" 

使用下列 Cmdlet 來擷取特定角色的所有角色指派。 這裡的 roleDefinitionId 是上一個 Cmdlet 所傳回的識別碼。

Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "926d99e7-117c-4a6a-8031-0cc481e9da26" -Filter "roleDefinitionId eq '0bb54a22-a3df-4592-9dc7-9e1418f0f61c'"

Cmdlet 會產生如下所示的角色指派物件清單。 主體識別碼是指派角色的使用者的使用者識別碼。 指派狀態可以是作用中或合格。 如果使用者為作用中,且 LinkedEligibleRoleAssignmentId 欄位中有識別碼,表示角色目前已啟用。

結果:

Retrieve all role assignments for the Azure AD organization

指派角色

使用下列 Cmdlet 來建立合格的指派。

Open-AzureADMSPrivilegedRoleAssignmentRequest -ProviderId 'aadRoles' -ResourceId '926d99e7-117c-4a6a-8031-0cc481e9da26' -RoleDefinitionId 'ff690580-d1c6-42b1-8272-c029ded94dec' -SubjectId 'f7d1887c-7777-4ba3-ba3d-974488524a9d' -Type 'adminAdd' -AssignmentState 'Eligible' -schedule $schedule -reason "dsasdsas" 

定義指派的開始和結束時間的排程是可建立的物件,如下列範例所示:

$schedule = New-Object Microsoft.Open.MSGraph.Model.AzureADMSPrivilegedSchedule
$schedule.Type = "Once"
$schedule.StartDateTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
$schedule.endDateTime = "2020-07-25T20:49:11.770Z"

注意

如果 endDateTime 的值設定為 null,則表示永久指派。

啟動角色指派

使用下列 Cmdlet,在一般使用者的環境中啟用合格指派:

Open-AzureADMSPrivilegedRoleAssignmentRequest -ProviderId 'aadRoles' -ResourceId '926d99e7-117c-4a6a-8031-0cc481e9da26' -RoleDefinitionId 'f55a9a68-f424-41b7-8bee-cee6a442d418' -SubjectId 'f7d1887c-7777-4ba3-ba3d-974488524a9d' -Type 'UserAdd' -AssignmentState 'Active' -Schedule $schedule -Reason "Business Justification for the role assignment"

如果您需要以管理員身分啟用合格的指派,請針對 Type 參數指定 adminAdd

Open-AzureADMSPrivilegedRoleAssignmentRequest -ProviderId 'aadRoles' -ResourceId '926d99e7-117c-4a6a-8031-0cc481e9da26' -RoleDefinitionId 'f55a9a68-f424-41b7-8bee-cee6a442d418' -SubjectId 'f7d1887c-7777-4ba3-ba3d-974488524a9d' -Type 'adminAdd' -AssignmentState 'Active' -Schedule $schedule -Reason "Business Justification for the role assignment"

此 Cmdlet 與建立角色指派的 Cmdlet 幾乎完全相同。 Cmdlet 之間的主要差異在於 -Type 參數,其啟用是 "userAdd",而非 "adminAdd"。 另一個差異是 -AssignmentState 參數是 "Active",而非 "Eligible"。

注意

透過 PowerShell 角色啟用的限制案例有兩個。

  1. 如果您在角色設定中需要票證系統/票證號碼,則無法提供它們作為參數。 因此,無法啟用 Azure 入口網站以外的角色。 此功能即將在接下來幾個月對 PowerShell 推出。
  2. 如果您針對角色啟用需要多重要素驗證,則 PowerShell 目前無法在使用者啟用其角色時,對使用者提出挑戰。 相反地,使用者在連結至 Azure AD 時,必須遵循我們的其中一位工程師的此部落格文章來觸發 MFA 挑戰。 如果您要為 PIM 開發應用程式,其中一個可能的實作是挑戰使用者,並在他們收到 "MfaRule" 錯誤之後將其重新連結至模組。

擷取和更新角色設定

使用下列 Cmdlet 來取得 Azure AD 組織中的所有角色設定。

Get-AzureADMSPrivilegedRoleSetting -ProviderId 'aadRoles' -Filter "ResourceId eq '926d99e7-117c-4a6a-8031-0cc481e9da26'"

設定中有四個主要物件。 PIM 目前只使用其中三個物件。 UserMemberSettings 為啟用設定,AdminEligibleSettings 是合格指派的指派設定,而 AdminmemberSettings 是作用中指派的指派設定。

Get and update role settings.

若要更新角色設定,您必須取得特定角色的現有設定物件,並對其進行變更:

Get-AzureADMSPrivilegedRoleSetting -ProviderId 'aadRoles' -Filter "ResourceId eq 'tenant id' and RoleDefinitionId eq 'role id'"
$settinga = New-Object Microsoft.Open.MSGraph.Model.AzureADMSPrivilegedRuleSetting
$settinga.RuleIdentifier = "JustificationRule"
$settinga.Setting = '{"required":false}'

然後,您可以將設定套用至特定角色的其中一個物件,如下所示。 這裡的識別碼是可從清單角色設定 Cmdlet 的結果中擷取的角色設定識別碼。

Set-AzureADMSPrivilegedRoleSetting -ProviderId 'aadRoles' -Id 'ff518d09-47f5-45a9-bb32-71916d9aeadf' -ResourceId '3f5887ed-dd6e-4821-8bde-c813ec508cf9' -RoleDefinitionId '2387ced3-4e95-4c36-a915-73d803f93702' -UserMemberSettings $settinga 

後續步驟