使用 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 Active Directory 对象。
另一方面,角色定义是要分配的内置或自定义 Azure AD 角色,而范围是分配角色的级别。在 Azure 中有 4 种分配角色的范围。
具体来说,Azure 角色可以分配给资源、资源组、订阅和管理组。要给资源分配角色,您需要资源的 ID。
但是,给资源组范围分配角色需要资源组的名称。运行 Get-AzResourceGroup 命令可以返回当前订阅中的所有资源组,包括它们的名称。
如果要在订阅范围分配角色,您需要订阅 ID。要列出租户中的所有订阅,请运行 Get-AzSubscription 命令。
最后,管理组范围分配角色需要管理组的名称。要获取管理组的名称,请运行 Get-AzManagementGroup 命令。
了解这些元素对于使用 PowerShell 管理 Azure AD 角色和权限非常重要。在本文的剩余部分,我们将探讨如何使用 PowerShell 中的安全主体、角色定义和范围来分配和管理 Azure AD 中的角色。
使用 PowerShell 管理 Azure AD 角色和权限的先决条件
在管理员分配角色之前,他们必须满足以下要求:
- 用户必须被分配具有Microsoft.Authorization/roleAssignments/write权限的角色。具有此权限的唯一角色是用户访问管理员、所有者或全局管理员。
- 其次,您需要访问AzureCloud Shell或Azure PowerShell。
- 运行PowerShell命令的用户帐户必须具有Microsoft GraphDirectory.Read.All权限。
- 最后,要执行本文中的某些任务,您的帐户需要至少Azure AD Premium P1许可证。
随着本文的进展,我们将根据需要解释分配这些权限的步骤。
使用PowerShell分配内置Azure AD角色的步骤 如果您点击上面的云shell链接并使用您的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 Cloud Shell的好处是不需要在您的PC上安装任何PowerShell模块。
步骤1:确定对象ID
在为Azure资源分配角色之前,您需要获取对象ID。按照以下步骤确定用户、组或订阅的对象ID。
1. 打开Azure Cloud Shell – shell.azure.com,并使用您的Azure账户登录。
如果您第一次打开Azure Cloud 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 列中返回真或假。
为了演示,我想把 安全管理员 角色分配给我在第一步中确定的用户和组。为了显示角色的名称,我把 Get-AzRoleDefinition 命令的输出通过管道传递给 Where-Object,如图所示的命令。
$roleassignmentname = (Get-AzRoleDefinition | where-object {$_.name -eq "Security Admin"}).Name
第 3 步:确定角色分配的作用域
下面的命令返回一个存储账户(资源范围)的 ResourceID 并将其保存在 ResourceID 变量中。
稍后,我在这个存储账户资源中为第一步的用户分配“安全管理员”角色。
$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管理角色分配至关重要。
不仅 that,但分配角色的帐户必须满足一些先决条件,例如配置PowerShell以使用所需的模块并确保适当的 administrative 权限。
本文提供的分步指南为使用PowerShell分配内置 Azure AD角色 提供了清晰的路线图。从确定对象ID到识别角色分配的范围,每个阶段都精心概述,以便实现顺畅和受控的角色分配过程。
Source:
https://infrasos.com/managing-azure-ad-roles-and-permissions-with-powershell/