diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index 9bf418b40..5191e9a2f 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -9,12 +9,12 @@ ### 管理组 - 它可以包含**其他管理组或订阅**。 -- 这允许在管理组级别**应用治理控制**,如RBAC和Azure Policy,并让所有组内的订阅**继承**这些控制。 +- 这允许在管理组级别**应用治理控制**,如RBAC和Azure Policy,并使其**继承**到组内的所有订阅。 - **单个目录**最多可以支持**10,000个管理组**。 - 管理组树可以支持**最多六个层级的深度**。此限制不包括根级别或订阅级别。 - 每个管理组和订阅只能支持**一个父级**。 - 即使可以创建多个管理组,**只有1个根管理组**。 -- 根管理组**包含**所有**其他管理组和订阅**,并且**不能被移动或删除**。 +- 根管理组**包含**所有**其他管理组和订阅**,并且**无法移动或删除**。 - 单个管理组内的所有订阅必须信任**相同的Entra ID租户**。

https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png

@@ -42,7 +42,7 @@ Azure 资源 ID 的格式如下: - `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}` -对于在订阅 ID `12345678-1234-1234-1234-123456789012` 下的资源组 `myResourceGroup` 中名为 myVM 的虚拟机,Azure 资源 ID 看起来像这样: +对于在资源组`myResourceGroup`下,订阅 ID 为`12345678-1234-1234-1234-123456789012`的名为 myVM 的虚拟机,Azure 资源 ID 看起来像这样: - `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM` @@ -108,7 +108,7 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的 - **访客用户对目录对象的属性和成员资格的访问有限(默认)**。这限制了访客访问仅限于他们自己的用户资料。对其他用户和组信息的访问不再允许。 - **访客用户访问限制为仅限于他们自己目录对象的属性和成员资格**是最严格的。 - **访客可以邀请**选项: -- **组织中的任何人都可以邀请访客用户,包括访客和非管理员(最包容) - 默认** +- **组织中的任何人都可以邀请访客用户,包括访客和非管理员(最具包容性) - 默认** - **成员用户和分配给特定管理员角色的用户可以邀请访客用户,包括具有成员权限的访客** - **只有分配给特定管理员角色的用户可以邀请访客用户** - **组织中的任何人都不能邀请访客用户,包括管理员(最严格)** @@ -133,7 +133,7 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的 ### **服务主体** -**服务主体**是为**应用程序**、托管服务和自动化工具创建的**身份**,用于访问 Azure 资源。此访问权限由分配给服务主体的角色**限制**,使您能够控制**可以访问哪些资源**以及访问的级别。出于安全原因,始终建议**使用服务主体与自动化工具**,而不是允许它们使用用户身份登录。 +**服务主体**是为**应用程序**、托管服务和自动化工具访问 Azure 资源而创建的**身份**。此访问权限由分配给服务主体的角色**限制**,使您能够控制**可以访问哪些资源**以及访问的级别。出于安全原因,始终建议**使用服务主体与自动化工具**,而不是允许它们使用用户身份登录。 可以通过生成**密钥**(密码)、**证书**或授予对第三方平台(例如 GitHub Actions)的**联合**访问来**直接以服务主体身份登录**。 @@ -146,13 +146,13 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的 #### 关键组件: -1. **应用程序 ID(客户端 ID):** 您的应用在 Azure AD 中的唯一标识符。 +1. **应用程序 ID(客户端 ID):** Azure AD 中应用程序的唯一标识符。 2. **重定向 URI:** Azure AD 发送身份验证响应的 URL。 3. **证书、密钥和联合凭据:** 可以生成密钥或证书以作为应用程序的服务主体登录,或授予对其的联合访问(例如 GitHub Actions)。 1. 如果生成了**证书**或**密钥**,则可以通过知道**应用程序 ID**、**密钥**或**证书**以及**租户**(域或 ID)来**以服务主体身份登录**。 -4. **API 权限:** 指定应用可以访问的资源或 API。 -5. **身份验证设置:** 定义应用支持的身份验证流程(例如,OAuth2、OpenID Connect)。 -6. **服务主体**:创建应用时会创建服务主体(如果是从网络控制台创建)或在新租户中安装时。 +4. **API 权限:** 指定应用程序可以访问的资源或 API。 +5. **身份验证设置:** 定义应用程序支持的身份验证流程(例如,OAuth2、OpenID Connect)。 +6. **服务主体**:创建应用程序时会创建服务主体(如果是从 Web 控制台创建)或在新租户中安装时创建。 1. **服务主体**将获得其配置的所有请求权限。 ### 默认同意权限 @@ -161,11 +161,11 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的 - **不允许用户同意** - 所有应用程序都需要管理员批准。 -- **允许用户对来自经过验证的发布者的应用程序进行同意,仅限于选定的权限(推荐)** +- **允许用户对来自经过验证的发布者的应用程序进行同意,针对选定的权限(推荐)** - 所有用户可以对被分类为“低影响”的权限进行同意,适用于来自经过验证的发布者或在此组织中注册的应用程序。 - **默认**低影响权限(尽管您需要接受将其添加为低影响): - User.Read - 登录并读取用户资料 -- offline_access - 保持对用户已授予访问权限的数据的访问 +- offline_access - 维护对用户已授予访问权限的数据的访问 - openid - 登录用户 - profile - 查看用户的基本资料 - email - 查看用户的电子邮件地址 @@ -187,7 +187,7 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程 - **系统分配**。某些 Azure 服务允许您**直接在服务实例上启用托管身份**。当您启用系统分配的托管身份时,会在资源所在的订阅中创建一个**服务主体**。当**资源**被**删除**时,Azure 会自动为您**删除**该**身份**。 - **用户分配**。用户也可以生成托管身份。这些身份是在订阅内的资源组中创建的,并且将在 EntraID 中创建一个服务主体。然后,您可以将托管身份分配给一个或**多个 Azure 服务实例**(多个资源)。对于用户分配的托管身份,**身份与使用它的资源是分开管理的**。 -托管身份**不会生成永久凭据**(如密码或证书)以访问与其附加的服务主体。 +托管身份**不会生成永久凭据**(如密码或证书)以访问与其关联的服务主体。 ### 企业应用程序 @@ -212,40 +212,34 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程 - 将“用户管理员”角色授予区域 IT 员工,范围限制在其区域的 AU。 - 结果:区域 IT 管理员可以管理其区域内的用户帐户,而不影响其他区域。 -### Entra ID 角色 +### Entra ID 角色和权限 - 为了管理 Entra ID,有一些**内置角色**可以分配给 Entra ID 主体以管理 Entra ID - 在 [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) 中查看角色 +- EntraID 标记为**`PRIVILEGED`**的角色应谨慎分配,因为正如微软在文档中所解释的那样 [在文档中](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference):特权角色分配如果不以安全和预期的方式使用,可能会导致权限提升。 - 权限最高的角色是**全局管理员** -- 在角色描述中可以看到其**细粒度权限** +- 角色组**细化权限**,可以在其描述中找到。 +- 可以**创建自定义角色**,以获得所需的权限。尽管由于某种原因,并非所有细化权限都可供管理员创建自定义角色。 +- Entra ID 中的角色与 Azure 中的角色完全**独立**。唯一的关系是,具有 Entra ID 中**全局管理员**角色的主体可以提升为 Azure 中的**用户访问管理员**角色。 +- 在 Entra ID 角色中**不可能使用通配符**。 -## 角色与权限 +## Azure 角色和权限 -**角色**是**分配**给**主体**的**范围**:`principal -[HAS ROLE]->(scope)` - -**分配给组的角色**会被组内的所有**成员继承**。 - -根据角色分配的范围,**角色**可能会**继承**到范围容器内的**其他资源**。例如,如果用户 A 在订阅上有一个**角色**,他将在订阅内的所有资源组和资源组内的**所有资源**上拥有该**角色**。 - -### 经典角色 - -| **所有者** | | 所有资源类型 | -| ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ | -| **贡献者** | | 所有资源类型 | -| **读取者** | • 查看所有资源 | 所有资源类型 | -| **用户访问管理员** | | 所有资源类型 | +- **角色**是**分配**给**主体**的,具有**范围**:`principal -[HAS ROLE]->(scope)` +- **分配给组的角色**会被组内的所有**成员**继承。 +- 根据角色分配的范围,**角色**可能会**继承**到范围容器内的**其他资源**。例如,如果用户 A 在订阅上具有**角色**,他将在订阅内的所有资源组和资源组内的**所有资源**上拥有该**角色**。 ### 内置角色 -[来自文档: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure 基于角色的访问控制(Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) 有几个 Azure **内置角色**,您可以将其**分配**给**用户、组、服务主体和托管身份**。角色分配是您控制**对 Azure 资源的访问**的方式。如果内置角色不满足您组织的特定需求,您可以创建自己的 [**Azure 自定义角色**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**。** +[来自文档:](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure 基于角色的访问控制(Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) 有几个 Azure **内置角色**,您可以将其**分配**给**用户、组、服务主体和托管身份**。角色分配是您控制**对 Azure 资源的访问**的方式。如果内置角色不满足您组织的特定需求,您可以创建自己的 [**Azure 自定义角色**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)。 -**内置**角色仅适用于**它们所针对的资源**,例如检查这两个**内置角色**在计算资源上的示例: +**内置**角色仅适用于**它们所针对的资源**,例如检查这两个关于**计算**资源的**内置角色**示例: -| [磁盘备份读取者](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | 提供备份库执行磁盘备份的权限。 | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | +| [磁盘备份读取器](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | 提供备份库执行磁盘备份的权限。 | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ | -| [虚拟机用户登录](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | 在门户中查看虚拟机并以普通用户身份登录。 | fb879df8-f326-4884-b1cf-06f3ad86be52 | +| [虚拟机用户登录](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | 在门户中查看虚拟机并以常规用户身份登录。 | fb879df8-f326-4884-b1cf-06f3ad86be52 | -这些角色也可以**分配给逻辑容器**(如管理组、订阅和资源组),受影响的主体将在这些容器内的资源上拥有它们。 +这些角色也可以**分配给逻辑容器**(如管理组、订阅和资源组),受影响的主体将在**这些容器内的资源上**拥有它们。 - 在这里找到 [**所有 Azure 内置角色**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) 的列表。 - 在这里找到 [**所有 Entra ID 内置角色**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) 的列表。 @@ -254,14 +248,14 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程 - 也可以创建 [**自定义角色**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) - 它们是在一个范围内创建的,尽管一个角色可以在多个范围内(管理组、订阅和资源组) -- 可以配置自定义角色将具有的所有细粒度权限 +- 可以配置自定义角色将具有的所有细化权限 - 可以排除权限 -- 拥有被排除权限的主体即使在其他地方授予权限也无法使用该权限 +- 拥有排除权限的主体即使在其他地方授予权限也无法使用该权限 - 可以使用通配符 - 使用的格式是 JSON - `actions` 指的是对资源进行管理操作的权限,例如创建、更新或删除资源定义和设置。 - `dataActions` 是对资源内数据操作的权限,允许您读取、写入或删除资源中包含的实际数据。 -- `notActions` 和 `notDataActions` 用于从角色中排除特定权限。但是,**它们并不拒绝这些权限**,如果其他角色授予它们,主体将拥有这些权限。 +- `notActions` 和 `notDataActions` 用于从角色中排除特定权限。但是,**它们不会拒绝这些权限**,如果其他角色授予它们,主体将拥有这些权限。 - `assignableScopes` 是可以分配角色的范围数组(如管理组、订阅或资源组)。 自定义角色的权限 JSON 示例: @@ -296,16 +290,16 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程 ``` ### 权限顺序 -- 为了让一个 **主体对资源有某些访问权限**,他需要被授予一个明确的角色(以任何方式)**授予他该权限**。 +- 为了让一个 **主体对资源有某种访问权限**,他需要被授予一个明确的角色(以任何方式)**授予他该权限**。 - 明确的 **拒绝分配优先于** 授予权限的角色。

https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10

### 全局管理员 -全局管理员是 Entra ID 的一个角色,授予 **对 Entra ID 租户的完全控制**。然而,默认情况下,它并不授予对 Azure 资源的任何权限。 +全局管理员是 Entra ID 的一个角色,授予 **对 Entra ID 租户的完全控制**。然而,它默认不授予对 Azure 资源的任何权限。 -拥有全局管理员角色的用户可以在根管理组中 **“提升”到用户访问管理员 Azure 角色**。因此,全局管理员可以管理 **所有 Azure 订阅和管理组的访问**。\ +拥有全局管理员角色的用户可以在根管理组中 '**提升' 为用户访问管理员 Azure 角色**。因此,全局管理员可以管理 **所有 Azure 订阅和管理组的访问**。\ 此提升可以在页面底部完成:[https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
@@ -318,7 +312,7 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程 与角色分配一样,**拒绝分配** 用于 **控制对 Azure 资源的访问**。然而,**拒绝分配** 用于 **明确拒绝对资源的访问**,即使用户通过角色分配获得了访问权限。**拒绝分配** 优先于 **角色分配**,这意味着如果用户通过角色分配获得了访问权限,但也通过拒绝分配被明确拒绝访问,则拒绝分配将优先。 -与角色分配一样,**拒绝分配** 应用于某个范围,指示受影响的主体和被拒绝的权限。此外,在拒绝分配的情况下,可以 **防止拒绝被子资源继承**。 +与角色分配一样,**拒绝分配** 适用于某个范围,指示受影响的主体和被拒绝的权限。此外,在拒绝分配的情况下,可以 **防止拒绝被子资源继承**。 ### Azure 策略 @@ -335,7 +329,7 @@ Azure 策略是 **主动的**:它们可以阻止不合规资源的创建或更 **一些示例:** -1. **确保符合特定 Azure 区域的合规性**:此策略确保所有资源在特定 Azure 区域中部署。例如,一家公司可能希望确保其所有数据都存储在欧洲以符合 GDPR。 +1. **确保符合特定 Azure 区域的合规性**:此策略确保所有资源在特定 Azure 区域部署。例如,一家公司可能希望确保其所有数据存储在欧洲以符合 GDPR。 2. **强制命名标准**:策略可以强制 Azure 资源的命名约定。这有助于根据名称组织和轻松识别资源,这在大型环境中非常有用。 3. **限制某些资源类型**:此策略可以限制某些类型资源的创建。例如,可以设置策略以防止创建某些 VM 大小等昂贵资源类型,以控制成本。 4. **强制标签策略**:标签是与 Azure 资源关联的键值对,用于资源管理。策略可以强制要求所有资源必须存在某些标签,或具有特定值。这对于成本跟踪、所有权或资源分类非常有用。 @@ -375,10 +369,10 @@ Azure 策略 JSON 示例: **RBAC**(基于角色的访问控制)是我们在前面的部分中已经看到的内容:**将角色分配给主体以授予其对资源的访问权限**。\ 然而,在某些情况下,您可能希望提供 **更细粒度的访问管理** 或 **简化** **数百个** 角色 **分配** 的管理。 -Azure **ABAC**(基于属性的访问控制)在 Azure RBAC 的基础上,通过在特定操作的上下文中添加 **基于属性的角色分配条件** 来构建。_角色分配条件_ 是您可以选择性地添加到角色分配中的 **额外检查**,以提供更细粒度的访问控制。条件过滤掉作为角色定义和角色分配一部分授予的权限。例如,您可以 **添加一个条件,要求对象具有特定标签才能读取该对象**。\ -您 **不能** 明确 **拒绝** **使用条件** 对特定资源的 **访问**。 +Azure **ABAC**(基于属性的访问控制)在 Azure RBAC 的基础上,通过在特定操作的上下文中添加 **基于属性的角色分配条件** 来构建。_角色分配条件_ 是您可以选择性地添加到角色分配中的 **额外检查**,以提供更细粒度的访问控制。条件过滤作为角色定义和角色分配的一部分授予的权限。例如,您可以 **添加一个条件,要求对象具有特定标签才能读取该对象**。\ +您 **不能** 明确 **拒绝** **对特定资源的访问** **使用条件**。 -## 参考 +## 参考文献 - [https://learn.microsoft.com/en-us/azure/governance/management-groups/overview](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview) - [https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions) diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index 1cf1a107a..9d09d0113 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -4,7 +4,7 @@ ## 基本信息 -Azure Active Directory (Azure AD) 是微软基于云的身份和访问管理服务。它在使员工能够登录并访问资源方面发挥着重要作用,这些资源包括组织内部和外部的 Microsoft 365、Azure 门户以及众多其他 SaaS 应用程序。Azure AD 的设计重点在于提供基本的身份服务,尤其包括 **身份验证、授权和用户管理**。 +Azure Active Directory (Azure AD) 是微软的基于云的身份和访问管理服务。它在使员工能够登录并访问资源方面发挥着重要作用,这些资源包括组织内部和外部的 Microsoft 365、Azure 门户以及众多其他 SaaS 应用程序。Azure AD 的设计重点在于提供基本的身份服务,尤其包括 **身份验证、授权和用户管理**。 Azure AD 的关键特性包括 **多因素身份验证** 和 **条件访问**,以及与其他 Microsoft 安全服务的无缝集成。这些特性显著提升了用户身份的安全性,并使组织能够有效实施和执行其访问政策。作为微软云服务生态系统的基本组成部分,Azure AD 对于基于云的用户身份管理至关重要。 @@ -365,7 +365,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText ``` ### MFA & Conditional Access Policies -强烈建议为每个用户添加 MFA,然而,一些公司可能不会设置它,或者可能会通过条件访问进行设置:用户在特定位置、浏览器或 **某些条件** 下登录时将 **需要 MFA**。如果这些策略配置不正确,可能会容易受到 **绕过**。请检查: +强烈建议为每个用户添加 MFA,然而,一些公司可能不会设置它,或者可能会通过条件访问进行设置:用户将被 **要求 MFA 如果** 从特定位置、浏览器或 **某些条件** 登录。如果这些策略配置不正确,可能会容易受到 **绕过**。检查: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -482,7 +482,7 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * #### 将用户添加到组 -组的拥有者可以将新用户添加到组中 +组的所有者可以将新用户添加到组中 ```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` @@ -735,6 +735,13 @@ az ad app owner list --id --query "[].[displayName]" -o table az ad app list --show-mine # Get apps with generated secret or certificate az ad app list --query '[?length(keyCredentials) > `0` || length(passwordCredentials) > `0`].[displayName, appId, keyCredentials, passwordCredentials]' -o json +# Get Global Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1b2256f9-46c1-4fc2-a125-5b2f51bb43b7/members" +# Get Application Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92c3b7-2363-4826-93a6-7f7a5b53e7f9/members" +# Get Cloud Applications Administrators (full access over apps) +az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members" + ``` {{#endtab }} @@ -792,7 +799,7 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * > 应用在请求令牌时用来证明其身份的秘密字符串是应用密码。\ > 因此,如果找到这个 **密码**,你可以作为 **服务主体** **访问** **租户**。\ > 请注意,这个密码仅在生成时可见(你可以更改它,但无法再次获取)。\ -> **应用** 的 **所有者** 可以 **添加密码**(以便他可以冒充它)。\ +> **应用程序** 的 **所有者** 可以 **添加密码**(以便他可以冒充它)。\ > 作为这些服务主体的登录 **不会被标记为风险**,并且 **不会有 MFA**。 可以在 [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) 找到属于 Microsoft 的常用应用 ID 列表。 @@ -980,7 +987,7 @@ Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName # 被分配角色的用户(全局管理员) Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember Get-AzureADDirectoryRole -ObjectId | fl -# 行政单位的角色(谁对行政单位及其成员拥有权限) +# 管理单位的角色(谁对管理单位及其成员拥有权限) Get-AzureADMSScopedRoleMembership -Id | fl * ``` @@ -993,7 +1000,7 @@ Get-AzureADMSScopedRoleMembership -Id | fl * {{#tab name="az cli" }} ```bash -# 如果你知道如何做到这一点,请发送 PR! +# 如果你知道如何做到这一点,请发送一个 PR! ``` {{#endtab }}