使用PowerShell管理Azure AD角色和权限

使用 PowerShell 管理 Azure AD 角色和權限。您需要使用 Windows PowerShell 管理和自動化 Azure AD 角色和權限嗎?本文介紹了使用 PowerShell 來自動化 Azure 角色基礎訪問控制(RBAC)的典型情境。

為了打下基礎並準備好管理 Azure 角色和權限,我們首先概述了 Azure 角色基於訪問控制(RBAC)的概念。接著,我們解釋了角色分配的三個元素。

此外,還有一部分解釋了使用 Windows PowerShell 管理 Azure AD 角色和權限的先決條件。

接下來的部分專門解釋了使用 PowerShell 分配 Azure AD 角色的步驟。

最後,我們解釋了如何使用 PowerShell 列出分配給使用者和群組的角色。

什麼是 Azure 角色基於訪問控制(RBAC)Azure 角色基於訪問控制(RBAC)允許管理員對資源進行細粒度的訪問控制。換句話說,Azure RBAC 允許管理員控制誰可以訪問資源。

Azure 角色为基础的存取控制 (RBAC) 允許管理員對資源進行細粒度的訪問控制。换句话说,Azure RBAC 允許管理員控制谁有权限存取資源。

另外,RBAC 控制著在 Azure 中資源的訪問级别。

RBAC 的核心是角色分配。Azure 擁有上百個內置角色,這些角色有預定義的權限,這些權限會分配給用戶、群體或是服務主体的

由於存在有預定義權限的內置角色,使得角色分配變得簡單,因為管理員不需要直接授權給物件。

然而,有時候內置角色可能不适合組織的需求。在這種情況下,就會創建自訂角色。

本文將介绍分配既有角色以及創建和分配自訂 Azure AD 角色的步驟。

Azure 角色分配要素

角色分配涉及 3 項元素 – 安全主体、角色定義和範圍。安全主体是要分配角色的 Azure 活躍目錄物件。

另一方面,角色定義是要分配的內置或自訂 Azure AD 角色,而範圍是角色分配的層級。在 Azure 中,角色有 4 種分配範圍。

特別是,Azure 角色被分配給資源、資源群組、訂閱和管理群組。要將角色分配給資源,您需要資源 ID。

然而,將角色分配給資源群組範圍需要資源群組的名稱。運行 Get-AzResourceGroup 命令會返回當前訂閱中所有資源群組,包括它們的名稱。

如果在訂閱範圍分配角色,您需要訂閱 ID。要列出租戶中的所有訂閱,請運行 Get-AzSubscription 命令。

最後,角色被分配給管理群組範圍,這需要管理群組的名稱。要獲取管理群組的名稱,請運行 Get-AzManagementGroup 命令。

了解這些元素對於使用 PowerShell 管理 Azure AD 角色和權限至關重要。在本文的其餘部分中,我們將探討如何使用 PowerShell 通過安全主體、角色定義和範圍來分配和管理 Azure AD 中的角色。

使用 PowerShell 管理 Azure AD 角色和權限的先決條件

在管理員分配角色之前,他們必須滿足以下要求:

  1. 使用者必須被分配擁有Microsoft.Authorization/roleAssignments/write權限的角色。擁有此權限的唯一角色是使用者存取管理員、擁有者或全域管理員。
  2. 其次,您需要訪問Azure Cloud ShellAzure PowerShell
  3. 執行PowerShell命令的使用者帳戶必須具有Microsoft Graph Directory.Read.All權限。
  4. 最後,要在本文中執行某些任務,您的帳戶需要至少擁有Azure AD Premium P1 授權

隨著本文的進展,我們將根據需要解釋指定這些權限的步驟。

使用PowerShell指定內建Azure AD角色的步驟如果您點擊上面的雲殼連結並使用您的Azure帳戶登錄,它將顯示類似下面截圖的螢幕。Azure Cloud Shell的好處在於不需要在您的PC上安裝任何PowerShell模組。

I’ll be running the PowerShell commands in this and subsequent sections from Azure Cloud Shell, a browser-based shell that allows running Azure CLI or PowerShell commands. However, I’ll be running the commands from my computer. 

如果您点击上方的云 shell 链接并使用您的 Azure 帐户登录,它会显示类似于下面截图的屏幕。Azure 云 shell 的好处是不需要在您的 PC 上安装任何 PowerShell 模块。

步骤 1:确定对象 ID

在为 Azure 资源分配角色之前,您需要获取对象 ID。按照以下步骤确定用户、组或订阅的对象 ID。

1. 打开 Azure 云 shell – shell.azure.com 并使用您的 Azure 帐户登录。

如果您第一次打开 Azure 云 shell,它会要求您创建一个存储帐户。

2. 运行以下命令以获取您需要分配角色的用户或组的 ID。在第一个命令中,我返回以 

$userid = (Get-AzADUser -UserPrincipalName AnthonyRa@corp.itechguides.com).id
$groupid = (Get-AzADGroup -DisplayName "Helpdesk Admins (AAD)").id

开头的用户的 ID。第一个命令将用户的 ID 保存在 userid 变量中,而第二个命令将组的组 ID 保存在 grouped 变量中。在运行命令之前,请记得更改 UserPrincipalName 和 DisplayName。

步骤 2:获取要分配的角色

管理 Azure AD 的下一步是使用 PowerShell 管理角色和權限,首先要確定要分配的角色。請使用以下命令列出 Azure AD 租用戶中所有可用的角色。

Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id

該命令會顯示租用戶中所有角色的名稱Id。此外,它會在IsCustom欄位返回 True 或 False。

為了示範,我想將角色Security Admin分配給第一步中確定的使用者和群組。為了顯示角色的名稱,我將 Get-AzRoleDefinition 命令的輸出導向 Where-Object,如以下命令所示。

$roleassignmentname = (Get-AzRoleDefinition | where-object {$_.name -eq "Security Admin"}).Name

步驟 3:確定要分配的角色範圍

以下命令會返回存儲賬戶的 ResourceID(資源範圍),並將其保存在 ResourceID 變數中。

稍後,我將在此存儲賬戶資源中為第一步中的使用者分配「Security Admin」角色。

$scoperesourceID = (Get-AzResource | Where-object {$_.name -eq "veeambackup21"}).ResourceID

步驟 4:分配 Azure 角色

根据步骤1至3中的信息,运行以下命令将角色分配给用户。在运行命令之前,如下图所示,此存储帐户未分配该角色。

第一条命令将“安全管理员”角色分配给保存在$userid变量中的用户。类似地,第二条命令将相同角色分配给保存在$groupid变量中的组。

New-AzRoleAssignment -ObjectId $userid -RoleDefinitionName $roleassignmentname -Scope $scoperesourceID
New-AzRoleAssignment -ObjectId $groupid -RoleDefinitionName $roleassignmentname -Scope $scoperesourceID

运行上述命令后,刷新存储帐户会显示安全管理员角色,并显示分配了该角色的用户和组。

使用 PowerShell 显示 Azure AD 角色分配

之前,我将“安全管理员”角色分配给了具有 UPN [email protected] 的用户。如果您记得,用户的 userId 已保存在 $userid 变量中。

类似地,存储帐户的范围 ID 已保存在 $scoperesourceID 变量中。要显示用户的角色分配,我运行以下命令。

get-AzRoleAssignment -scope $scoperesourceID -ObjectId $userid

该命令显示了角色分配的详细信息,包括 RoleAssignmentName 和范围。

您可以通过运行此命令显示组的相同信息。

get-AzRoleAssignment -scope $scoperesourceID -ObjectId $groupid

使用 PowerShell 管理 Azure AD 角色和权限结论

管理Azure 角色需要了解基于角色的访问控制模型。此外,了解 Azure 角色分配要素 – 安全主体、角色定义和范围 – 对于有效地使用 PowerShell 管理角色分配至关重要。

不仅如此,分配角色的帐户还必须满足一些先决条件,例如配置 PowerShell 并确保具有适当的管理权限。

本文提供的逐步指南为使用 PowerShell 分配内置Azure AD 角色提供了清晰的路线图。从确定对象 ID 到识别角色分配的范围,每个阶段都被详细地概述,促进了无缝和受控的角色分配过程。

Source:
https://infrasos.com/managing-azure-ad-roles-and-permissions-with-powershell/