Translated ['src/pentesting-cloud/azure-security/az-basic-information/RE

This commit is contained in:
Translator
2025-02-05 23:37:13 +00:00
parent fc00f15e3c
commit 1620c2e383
@@ -9,30 +9,30 @@
### 管理组
- 它可以包含**其他管理组或订阅**。
- 这允许在管理组级别**应用治理控制**,如RBAC和Azure Policy,并让所有组内的订阅**继承**这些控制
- 这允许在管理组级别**应用治理控制**,如RBAC和Azure Policy,并使其**被所有订阅继承**
- **单个目录**最多可以支持**10,000个管理组**。
- 管理组树可以支持**最多六深度**。此限制不包括根级别或订阅级别。
- 管理组树可以支持**最多六个层级的深度**。此限制不包括根级别或订阅级别。
- 每个管理组和订阅只能支持**一个父级**。
- 即使可以创建多个管理组,**只有个根管理组**。
- 根管理组**包含**所有**其他管理组和订阅**,并且**不能被移动或删除**。
- 即使可以创建多个管理组,**只有1个根管理组**。
- 根管理组**包含**所有**其他管理组和订阅**,并且**无法移动或删除**。
- 单个管理组内的所有订阅必须信任**相同的Entra ID租户**。
<figure><img src="../../../images/image (147).png" alt=""><figcaption><p><a href="https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png">https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png</a></p></figcaption></figure>
### Azure 订阅
- 这是另一个**逻辑容器,资源**(虚拟机、数据库等)可以在其中运行并将被计费。
- 它的**父级**始终是一个**管理组**(可以是根管理组),因为订阅不能包含其他订阅。
- 它**信任一个Entra ID**目录。
- 在订阅级别(或其任何父级)应用的**权限**会**继承**到订阅内的所有资源
- 这是另一个**逻辑容器,资源**(虚拟机、数据库等)可以在其中运行并计费。
- 它的**父级**始终是**管理组**(可以是根管理组),因为订阅不能包含其他订阅。
- 它**信任一个Entra ID**目录。
- 在订阅级别(或其任何父级)应用的**权限**会**被所有资源继承**。
### 资源组
[来自文档:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) 资源组是一个**容器**,用于保存Azure解决方案的**相关资源**。资源组可以包括解决方案的所有资源,或仅包括您希望作为一组管理的**资源**。通常,将共享**相同生命周期**的**资源**添加到同一资源组,以便您可以轻松地作为一组进行部署、更新和删除。
[来自文档:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) 资源组是一个**容器**,用于保存Azure解决方案的**相关资源**。资源组可以包括解决方案的所有资源,或仅包括您希望作为一组管理的**资源**。通常,将**共享相同生命周期**的**资源**添加到同一资源组,以便您可以轻松地作为一组进行部署、更新和删除。
所有**资源**必须**在资源组内**,并且只能属于一个组,如果资源组被删除,组内的所有资源也会被删除。
所有**资源**必须**在资源组内**,并且只能属于一个组,如果资源组被删除,组内的所有资源也会被删除。
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfe8U30iP_vdZCvxX4g8nEPRLoo7v0kmCGkDn1frBPn3_GIoZ7VT2LkdsVQWCnrG_HSYNRRPM-1pSECUkbDAB-9YbUYLzpvKVLDETZS81CHWKYM4fDl3oMo5-yvTMnjdLTS2pz8U67xUTIzBhZ25MFMRkq5koKY=s2048?key=gSyKQr3HTyhvHa28Rf7LVA" alt=""><figcaption><p><a href="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&#x26;ssl=1">https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&#x26;ssl=1</a></p></figcaption></figure>
<figure><img src="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1" alt=""><figcaption><p><a href="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1">https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1</a></p></figcaption></figure>
### Azure 资源 ID
@@ -42,7 +42,7 @@ Azure 资源 ID 的格式如下:
- `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}`
对于在资源组`myResourceGroup`下,订阅 ID `12345678-1234-1234-1234-123456789012`名为 myVM 的虚拟机,Azure 资源 ID 看起来像这样:
对于在订阅 ID `12345678-1234-1234-1234-123456789012` 下的资源组 `myResourceGroup`名为 myVM 的虚拟机,Azure 资源 ID 看起来像这样:
- `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM`
@@ -77,7 +77,7 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的
### 成员和访客默认权限
您可以在 [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) 中查看它们,但除了其他操作外,成员将能够
您可以在 [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) 中查看它们,但成员可以执行的其他操作包括
- 读取所有用户、组、应用程序、设备、角色、订阅及其公共属性
- 邀请访客(_可以关闭_
@@ -100,15 +100,15 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的
- 这不会限制对门户的 API 访问(仅限网页)
- 允许用户将工作或学校帐户与 LinkedIn 连接:默认**是**
- 显示保持用户登录:默认**是**
- 限制用户恢复其拥有设备的 BitLocker 密钥:默认否(在设备设置中检查)
- 限制用户恢复其拥有设备的 BitLocker 密钥:默认否(在设备设置中检查)
- 读取其他用户:默认**是**(通过 Microsoft Graph
- **访客**
- **访客用户访问限制**
- **访客用户与成员**的访问权限相同,默认情况下将所有成员用户权限授予访客用户
- **访客用户对目录对象的属性和成员资格的访问有限(默认)**,默认情况下限制访客访问自己的用户资料。不再允许访问其他用户和组信息。
- **访客用户访问限制在其自己目录对象的属性和成员资格**是最严格的。
- **访客可以邀请**
- **组织中的任何人都可以邀请访客用户,包括访客和非管理员(最包容) - 默认**
- **访客用户访问限制**选项:
- **访客用户与成员具有相同的访问权限**
- **访客用户对目录对象的属性和成员资格的访问有限(默认)**。这限制访客访问仅限于他们自己的用户资料。其他用户和组信息的访问不再允许
- **访客用户访问限制为仅限于他们自己目录对象的属性和成员资格**是最严格的。
- **访客可以邀请**选项:
- **组织中的任何人都可以邀请访客用户,包括访客和非管理员(最包容 - 默认**
- **成员用户和分配给特定管理员角色的用户可以邀请访客用户,包括具有成员权限的访客**
- **只有分配给特定管理员角色的用户可以邀请访客用户**
- **组织中的任何人都不能邀请访客用户,包括管理员(最严格)**
@@ -124,18 +124,18 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的
- **安全组**:此类型的组用于授予成员对应用程序、资源的访问权限并分配许可证。用户、设备、服务主体和其他组可以是成员。
- **Microsoft 365 组**:此类型的组用于协作,给予成员对共享邮箱、日历、文件、SharePoint 站点等的访问权限。组成员只能是用户。
- 这将具有 EntraID 租户的**电子邮件地址**
- 这将具有一个**电子邮件地址**,其域为 EntraID 租户的
有**2种类型的成员资格**
- **分配**:允许手动将特定成员添加到组。
- **分配**:允许手动将特定成员添加到组。
- **动态成员资格**:使用规则自动管理成员资格,当成员属性更改时更新组的包含。
### **服务主体**
**服务主体**是为**与应用程序**、托管服务和自动化工具一起使用而创建的**身份**,以访问 Azure 资源。此访问权限由分配给服务主体的角色**限制**,使您能够控制**可以访问哪些资源**以及访问的级别。出于安全原因,始终建议**使用服务主体与自动化工具**,而不是允许它们使用用户身份登录。
**服务主体**是为**与应用程序**、托管服务和自动化工具一起使用而创建的**身份**,以访问 Azure 资源。此访问**受限于分配给服务主体的角色**,使您能够控制**可以访问哪些资源**以及访问的级别。出于安全原因,始终建议**使用服务主体与自动化工具**,而不是允许它们使用用户身份登录。
可以通过生成**密钥**(密码)、**证书**或授予对第三方平台(例如 GitHub Actions)的**联合**访问权限来**直接以服务主体身份登录**。
可以通过生成**密钥**(密码)、**证书**或授予对第三方平台(例如 GitHub Actions)的**联合**访问来**直接以服务主体身份登录**。
- 如果选择**密码**身份验证(默认),请**保存生成的密码**,因为您将无法再次访问它。
- 如果选择证书身份验证,请确保**应用程序将能够访问私钥**。
@@ -148,11 +148,11 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的
1. **应用程序 ID(客户端 ID):** 您的应用在 Azure AD 中的唯一标识符。
2. **重定向 URI** Azure AD 发送身份验证响应的 URL。
3. **证书、密钥和联合凭据:** 可以生成密钥或证书以作为应用程序的服务主体登录,或授予对其的联合访问权限(例如 GitHub Actions)。
3. **证书、密钥和联合凭据:** 可以生成密钥或证书以作为应用程序的服务主体登录,或授予对其的联合访问(例如 GitHub Actions)。
1. 如果生成了**证书**或**密钥**,则可以通过知道**应用程序 ID**、**密钥**或**证书**以及**租户**(域或 ID)来**以服务主体身份登录**。
4. **API 权限:** 指定应用可以访问的资源或 API。
5. **身份验证设置:** 定义应用支持的身份验证流程(例如 OAuth2、OpenID Connect)。
6. **服务主体**:创建应用时会创建服务主体(如果是从 Web 控制台创建)或在新租户中安装时。
5. **身份验证设置:** 定义应用支持的身份验证流程(例如OAuth2、OpenID Connect)。
6. **服务主体**:创建应用时会创建服务主体(如果是从网络控制台创建)或在新租户中安装时。
1. **服务主体**将获得其配置的所有请求权限。
### 默认同意权限
@@ -160,9 +160,9 @@ Entra 域服务通过提供**与传统 Windows Active Directory 环境兼容的
**用户对应用程序的同意**
- **不允许用户同意**
- 所有应用程序都需要管理员批准
- **允许用户对来自经过验证的发布者的应用程序进行同意,针对选定的权限(推荐)**
- 所有用户可以同意被分类为“低影响”的权限,适用于来自经过验证的发布者或在此组织中注册的应用程序。
- 所有应用程序都需要管理员。
- **允许用户对来自经过验证的发布者的应用程序进行选择性权限的同意(推荐)**
- 所有用户可以被分类为“低影响”的权限进行同意,适用于来自经过验证的发布者或在此组织中注册的应用程序。
- **默认**低影响权限(尽管您需要接受将其添加为低影响):
- User.Read - 登录并读取用户资料
- offline_access - 维护对用户已授予访问权限的数据的访问
@@ -184,8 +184,8 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
托管身份有两种类型:
- **系统分配**。某些 Azure 服务允许您**直接在服务实例上启用托管身份**。当您启用系统分配的托管身份时,会在资源所在的订阅中创建一个**服务主体**,该订阅信任 Entra ID 租户。当**资源**被**删除**时,Azure 会自动为您**删除**该**身份**。
- **用户分配**。用户也可以生成托管身份。这些身份是在订阅的资源组创建的,并且将在 EntraID 中创建一个服务主体,该服务主体由订阅信任。然后,您可以将托管身份分配给一个或**多个 Azure 服务实例**(多个资源)。对于用户分配的托管身份,**身份与使用它的资源是分开管理的**。
- **系统分配**。某些 Azure 服务允许您**直接在服务实例上启用托管身份**。当您启用系统分配的托管身份时,会在资源所在的订阅中创建一个**服务主体**。当**资源**被**删除**时,Azure 会自动为您**删除**该**身份**。
- **用户分配**。用户也可以生成托管身份。这些身份是在订阅的资源组创建的,并且将在 EntraID 中创建一个服务主体。然后,您可以将托管身份分配给一个或**多个 Azure 服务实例**(多个资源)。对于用户分配的托管身份,**身份与使用它的资源是分开管理的**。
托管身份**不会生成永久凭据**(如密码或证书)以访问与其附加的服务主体。
@@ -193,11 +193,11 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
这只是一个**在 Azure 中过滤服务主体**并检查已分配应用程序的表。
**这不是另一种“应用程序”类型,** Azure 中没有任何对象是“企业应用程序”,这只是检查服务主体、应用注册和托管身份的抽象。
**这不是另一种“应用程序”类型,** Azure 中没有任何对象是“企业应用程序”,这只是检查服务主体、应用注册和托管身份的抽象。
### 管理单位
管理单位允许**从角色授予对组织特定部分的权限**。
管理单位允许**从角色授予对组织特定部分的权限**。
示例:
@@ -223,9 +223,9 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
**角色**是**分配**给**主体**的**范围**`principal -[HAS ROLE]->(scope)`
**分配给组的角色**会被组内所有**成员**继承
**分配给组的角色**会**被组内所有成员继承**
根据角色分配的范围,**角色**可能会**继承**到范围容器内的**其他资源**。例如,如果用户 A 在订阅上有一个**角色**,他将在订阅内的所有资源组和资源组内的**所有资源**上拥有该**角色**。
根据角色分配的范围,**角色**可能会**继承**到范围容器内的**其他资源**。例如,如果用户 A 在订阅上有一个**角色**,他将在订阅内的所有资源组和资源组内的**所有资源**上拥有该**角色**。
### **经典角色**
@@ -241,11 +241,11 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
**内置**角色仅适用于**它们所针对的资源**,例如检查这两个**内置角色**在计算资源上的示例:
| [磁盘备份读取者](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 |
这些角色也可以**分配给逻辑容器**如管理组、订阅和资源组),受影响的主体将在这些容器内的资源上拥有它们。
这些角色也可以**分配给逻辑容器**(如管理组、订阅和资源组),受影响的主体将在**这些容器内的资源上**拥有它们。
- 在这里找到 [**所有 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,7 +254,7 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
- 也可以创建 [**自定义角色**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)
- 它们是在一个范围内创建的,尽管一个角色可以在多个范围内(管理组、订阅和资源组)
- 可以配置自定义角色将拥有的所有细粒度权限
- 可以配置自定义角色的所有细粒度权限
- 可以排除权限
- 拥有被排除权限的主体即使在其他地方授予权限也无法使用该权限
- 可以使用通配符
@@ -294,7 +294,7 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
```
### 权限顺序
- 为了让一个 **主体对资源有某访问权限**,他需要被授予一个明确的角色(以任何方式)**授予他该权限**。
- 为了让一个 **主体对资源有某访问权限**,他需要被授予一个明确的角色(以任何方式)**授予他该权限**。
- 明确的 **拒绝角色分配优先于** 授予权限的角色。
<figure><img src="../../../images/image (191).png" alt=""><figcaption><p><a href="https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10">https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10</a></p></figcaption></figure>
@@ -304,7 +304,7 @@ Azure Active Directory 中的托管身份提供了一种**自动管理应用程
全局管理员是 Entra ID 的一个角色,授予 **对 Entra ID 租户的完全控制**。然而,它默认不授予对 Azure 资源的任何权限。
拥有全局管理员角色的用户可以在根管理组中 '**提升' 为用户访问管理员 Azure 角色**。因此,全局管理员可以管理 **所有 Azure 订阅和管理组的访问**。\
此提升可以在页面底部完成: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
此提升可以在页面底部完成[https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
<figure><img src="../../../images/image (349).png" alt=""><figcaption></figcaption></figure>
@@ -323,12 +323,12 @@ Azure 策略是 **主动的**:它们可以阻止不合规资源的创建或更
**一些示例:**
1. **确保符合特定 Azure 区域的合规性**:此策略确保所有资源在特定 Azure 区域部署。例如,一家公司可能希望确保其所有数据存储在欧洲以符合 GDPR 合规性
1. **确保符合特定 Azure 区域的合规性**:此策略确保所有资源在特定 Azure 区域部署。例如,一家公司可能希望确保其所有数据存储在欧洲以符合 GDPR。
2. **强制命名标准**:策略可以强制 Azure 资源的命名约定。这有助于根据名称组织和轻松识别资源,这在大型环境中非常有用。
3. **限制某些资源类型**:此策略可以限制某些类型资源的创建。例如,可以设置策略以防止创建某些 VM 大小等昂贵资源类型,以控制成本。
4. **强制标签策略**:标签是与 Azure 资源关联的键值对,用于资源管理。策略可以强制所有资源必须存在某些标签,或具有特定值。这对于成本跟踪、所有权或资源分类非常有用。
4. **强制标签策略**:标签是与 Azure 资源关联的键值对,用于资源管理。策略可以强制要求所有资源必须存在某些标签,或具有特定值。这对于成本跟踪、所有权或资源分类非常有用。
5. **限制对资源的公共访问**:策略可以强制某些资源(如存储帐户或数据库)没有公共端点,确保它们仅在组织的网络内可访问。
6. **自动应用安全设置**:策略可以用于自动将安全设置应用于资源,例如将特定网络安全组应用于所有 VM,或确保所有存储帐户使用加密。
6. **自动应用安全设置**:策略可以用于自动将安全设置应用于资源,例如将特定网络安全组应用于所有 VM,或确保所有存储帐户使用加密。
请注意,Azure 策略可以附加到 Azure 层次结构的任何级别,但它们 **通常用于根管理组** 或其他管理组。
@@ -364,7 +364,7 @@ Azure 策略 JSON 示例:
然而,在某些情况下,您可能希望提供 **更细粒度的访问管理****简化** 数百个角色 **分配** 的管理。
Azure **ABAC**(基于属性的访问控制)在 Azure RBAC 的基础上,通过在特定操作的上下文中添加 **基于属性的角色分配条件** 来构建。_角色分配条件_ 是您可以选择性地添加到角色分配中的 **额外检查**,以提供更细粒度的访问控制。条件过滤掉作为角色定义和角色分配一部分授予的权限。例如,您可以 **添加一个条件,要求对象具有特定标签才能读取该对象**。\
**不能** 明确 **拒绝** **对特定资源的访问** **使用条件**
**不能** 明确 **拒绝** **使用条件** 对特定资源的 **访问**
## 参考文献