Az - Basic Information
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
它可以包含 其他管理组或订阅。
这允许在管理组级别 应用治理控制,如 RBAC 和 Azure 策略,并使其 被所有订阅继承。
单个目录最多可以支持 10,000 个管理组。
管理组树可以支持 最多六级深度。此限制不包括根级别或订阅级别。
每个管理组和订阅只能支持 一个父级。
即使可以创建多个管理组,也只有 1 个根管理组。
根管理组 包含 所有 其他管理组和订阅,并且 无法移动或删除。
单个管理组内的所有订阅必须信任 相同的 Entra ID 租户。
这是另一个 逻辑容器,资源(虚拟机、数据库等)可以在其中运行并将被计费。
它的 父级 始终是 管理组(可以是根管理组),因为订阅不能包含其他订阅。
它 仅信任一个 Entra ID 目录。
在订阅级别(或其任何父级)应用的 权限 会 被所有资源继承。
来自文档: 资源组是一个 容器,用于保存 Azure 解决方案的 相关资源。资源组可以包括解决方案的所有资源,或仅包括您希望作为一个组管理的 资源。通常,将 共享相同生命周期 的 资源 添加到同一资源组,以便您可以轻松地作为一个组进行部署、更新和删除。
所有 资源 必须 在资源组内,并且只能属于一个组,如果资源组被删除,内部的所有资源也会被删除。
每个 Azure 资源都有一个 Azure 资源 ID 来标识它。
Azure 资源 ID 的格式如下:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
对于在订阅 ID 12345678-1234-1234-1234-123456789012
下的资源组 myResourceGroup
中名为 myVM 的虚拟机,Azure 资源 ID 看起来像这样:
/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM
Azure 是微软的综合 云计算平台,提供广泛的服务,包括虚拟机、数据库、人工智能和存储。它作为托管和管理应用程序、构建可扩展基础设施以及在云中运行现代工作负载的基础。Azure 为开发人员和 IT 专业人员提供工具,以无缝创建、部署和管理应用程序和服务,满足从初创企业到大型企业的各种需求。
Entra ID 是一个基于云的 身份和访问管理服务,旨在处理身份验证、授权和用户访问控制。它为 Microsoft 服务(如 Office 365、Azure 和许多第三方 SaaS 应用程序)提供安全访问。具有单点登录(SSO)、多因素身份验证(MFA)和条件访问策略等功能。
Entra 域服务通过提供 与传统 Windows Active Directory 环境兼容的托管域服务 扩展了 Entra ID 的功能。它支持 LDAP、Kerberos 和 NTLM 等遗留协议,允许组织在云中迁移或运行旧应用程序,而无需部署本地域控制器。此服务还支持组策略以进行集中管理,使其适合需要与现代云环境共存的遗留或基于 AD 的工作负载场景。
新用户
指定所选租户的电子邮件名称和域
指定显示名称
指定密码
指定属性(名字、职位、联系信息等)
默认用户类型为“成员”
外部用户
指定邀请的电子邮件和显示名称(可以是非微软电子邮件)
指定属性
默认用户类型为“访客”
您可以在 https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions 中查看它们,但成员可以执行的其他操作包括:
读取所有用户、组、应用程序、设备、角色、订阅及其公共属性
邀请访客(可以关闭)
创建安全组
读取非隐藏的组成员资格
将访客添加到拥有的组
创建新应用程序(可以关闭)
将最多 50 个设备添加到 Azure(可以关闭)
请记住,要枚举 Azure 资源,用户需要明确授予权限。
成员(文档)
注册应用程序:默认 是
限制非管理员用户创建租户:默认 否
创建安全组:默认 是
限制访问 Microsoft Entra 管理门户:默认 否
这不会限制对门户的 API 访问(仅限网页)
允许用户将工作或学校帐户与 LinkedIn 连接:默认 是
显示保持用户登录:默认 是
限制用户恢复其拥有设备的 BitLocker 密钥:默认 否(请在设备设置中检查)
读取其他用户:默认 是(通过 Microsoft Graph)
访客
访客用户访问限制
访客用户与成员 拥有相同的访问权限,默认情况下将所有成员用户权限授予访客用户。
访客用户对目录对象的属性和成员资格的访问有限(默认) 默认情况下限制访客访问仅限于他们自己的用户资料。 不再允许访问其他用户和组信息。
访客用户访问限制为其自己目录对象的属性和成员资格 是最严格的。
访客可以邀请
组织中的任何人都可以邀请访客用户,包括访客和非管理员(最包容) - 默认
成员用户和分配给特定管理员角色的用户可以邀请访客用户,包括具有成员权限的访客
只有分配给特定管理员角色的用户可以邀请访客用户
组织中的任何人都不能邀请访客用户,包括管理员(最严格)
外部用户离开:默认 为真
允许外部用户离开组织
即使默认受到限制,具有授予权限的用户(成员和访客)仍可以执行上述操作。
有 2 种类型的组:
安全组:此类型的组用于授予成员对应用程序、资源的访问权限并分配许可证。用户、设备、服务主体和其他组可以是成员。
Microsoft 365 组:此类型的组用于协作,授予成员对共享邮箱、日历、文件、SharePoint 站点等的访问权限。组成员只能是用户。
这将具有 EntraID 租户的 电子邮件地址。
有 2 种类型的成员资格:
分配:允许手动将特定成员添加到组。
动态成员资格:使用规则自动管理成员资格,当成员属性更改时更新组的包含。
服务主体是为 与应用程序、托管服务和自动化工具一起使用而创建的 身份,以访问 Azure 资源。此访问 受限于分配给服务主体的角色,使您能够控制 可以访问哪些资源 以及访问的级别。出于安全原因,始终建议 使用服务主体与自动化工具,而不是允许它们使用用户身份登录。
可以通过生成 密钥(密码)、证书或授予对第三方平台(例如 GitHub Actions)的 联合访问 来 直接以服务主体身份登录。
如果选择 密码 身份验证(默认),请 保存生成的密码,因为您将无法再次访问它。
如果选择证书身份验证,请确保 应用程序将能够访问私钥。
应用注册是一个配置,允许应用程序与 Entra ID 集成并执行操作。
应用程序 ID(客户端 ID): 您的应用在 Azure AD 中的唯一标识符。
重定向 URI: Azure AD 发送身份验证响应的 URL。
证书、密钥和联合凭据: 可以生成密钥或证书以作为应用程序的服务主体登录,或授予对其的联合访问(例如 GitHub Actions)。
如果生成了 证书 或 密钥,则可以通过知道 应用程序 ID、密钥 或 证书 以及 租户(域或 ID)来 以服务主体身份登录。
API 权限: 指定应用可以访问的资源或 API。
身份验证设置: 定义应用支持的身份验证流程(例如,OAuth2、OpenID Connect)。
服务主体:创建应用时会创建服务主体(如果是从 Web 控制台创建)或在新租户中安装时。
服务主体 将获得其配置的所有请求权限。
用户对应用程序的同意
不允许用户同意
所有应用程序都需要管理员。
允许用户对来自经过验证的发布者的应用程序进行选择性权限的同意(推荐)
所有用户可以同意被分类为“低影响”的权限,适用于来自经过验证的发布者或在此组织中注册的应用程序。
默认 低影响权限(尽管您需要接受将其添加为低):
User.Read - 登录并读取用户资料
offline_access - 保持对用户已授予访问权限的数据的访问
openid - 登录用户
profile - 查看用户的基本资料
email - 查看用户的电子邮件地址
允许用户对应用程序同意(默认)
所有用户可以同意任何应用程序访问组织的数据。
管理员同意请求:默认 否
用户可以请求管理员同意他们无法同意的应用程序
如果 是:可以指示可以同意请求的用户、组和角色
还可以配置用户是否会收到电子邮件通知和到期提醒
Azure Active Directory 中的托管身份提供了一种 自动管理应用程序身份 的解决方案。这些身份由应用程序用于 连接 到与 Azure Active Directory (Azure AD) 身份验证兼容的 资源。这允许 消除在代码中硬编码云凭据 的需要,因为应用程序将能够联系 元数据 服务以获取有效令牌,以 作为指定的托管身份执行操作。
托管身份有两种类型:
系统分配。某些 Azure 服务允许您 直接在服务实例上启用托管身份。当您启用系统分配的托管身份时,会在 Entra ID 租户中创建一个 服务主体,该租户由资源所在的订阅信任。当 资源 被 删除 时,Azure 会自动为您 删除 该 身份。
用户分配。用户也可以生成托管身份。这些身份是在订阅内的资源组中创建的,并且将在 EntraID 中创建一个服务主体,该主体由订阅信任。然后,您可以将托管身份分配给一个或 多个 Azure 服务实例(多个资源)。对于用户分配的托管身份,身份与使用它的资源是分开管理的。
托管身份 不会生成永久凭据(如密码或证书)以访问与其附加的服务主体。
这只是一个 Azure 中的表,用于过滤服务主体 并检查已分配给的应用程序。
这不是另一种“应用程序”类型, Azure 中没有任何对象是“企业应用程序”,这只是检查服务主体、应用注册和托管身份的抽象。
管理单位允许 在组织的特定部分授予角色权限。
示例:
场景:一家公司希望区域 IT 管理员仅管理自己区域的用户。
实施:
为每个区域创建管理单位(例如,“北美 AU”、“欧洲 AU”)。
用来自各自区域的用户填充 AU。
AU 可以 包含用户、组或设备
AU 支持 动态成员资格
AU 不能包含 AU
分配管理员角色:
将“用户管理员”角色授予区域 IT 员工,范围限制在其区域的 AU。
结果:区域 IT 管理员可以管理其区域内的用户帐户,而不影响其他区域。
为了管理 Entra ID,有一些 内置角色 可以分配给 Entra ID 主体以管理 Entra ID
权限最高的角色是 全局管理员
在角色描述中可以看到其 细粒度权限
角色 是 分配 给 主体 的 范围: principal -[HAS ROLE]->(scope)
分配给组的角色 会 被组内所有成员继承。
根据角色分配的范围,角色 可能会 被继承 到范围容器内的 其他资源。例如,如果用户 A 在订阅上有一个 角色,他将在订阅内的所有资源组和资源组内的 所有资源 上拥有该 角色。
所有者 |
| 所有资源类型 |
贡献者 |
| 所有资源类型 |
读取者 | • 查看所有资源 | 所有资源类型 |
用户访问管理员 |
| 所有资源类型 |
来自文档: Azure 基于角色的访问控制 (Azure RBAC) 有几个 Azure 内置角色,您可以 分配 给 用户、组、服务主体和托管身份。角色分配是您控制 对 Azure 资源的访问 的方式。如果内置角色不满足您组织的特定需求,您可以创建自己的 Azure 自定义角色。
内置 角色仅适用于 它们所针对的资源,例如检查这两个 内置角色 在计算资源上的示例:
提供备份保管库执行磁盘备份的权限。 | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | |
在门户中查看虚拟机并以常规用户身份登录。 | fb879df8-f326-4884-b1cf-06f3ad86be52 |
这些角色也可以 分配给逻辑容器(如管理组、订阅和资源组),受影响的主体将在 这些容器内的资源上拥有它们。
在这里找到 所有 Azure 内置角色 的列表。
在这里找到 所有 Entra ID 内置角色 的列表。
也可以创建 自定义角色
它们是在一个范围内创建的,尽管一个角色可以在多个范围内(管理组、订阅和资源组)
可以配置自定义角色的所有细粒度权限
可以排除权限
拥有被排除权限的主体即使在其他地方授予权限也无法使用它
可以使用通配符
使用的格式是 JSON
actions
用于控制对资源的操作
dataActions
是对对象内数据的权限
自定义角色的权限 JSON 示例:
为了让一个 主体对资源有某种访问权限,他需要被明确授予一个角色(以任何方式)授予他该权限。
明确的 拒绝角色分配优先于 授予权限的角色。
全局管理员是 Entra ID 的一个角色,授予 对 Entra ID 租户的完全控制。然而,默认情况下,它并不授予对 Azure 资源的任何权限。
拥有全局管理员角色的用户可以在根管理组中 '提升' 为用户访问管理员 Azure 角色。因此,全局管理员可以管理 所有 Azure 订阅和管理组的访问。 此提升可以在页面底部完成:https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties
Azure 策略 是帮助组织确保其资源符合特定标准和合规要求的规则。它们允许您 强制执行或审核 Azure 中资源的设置。例如,您可以防止在未经授权的区域创建虚拟机,或确保所有资源都有特定标签以便跟踪。
Azure 策略是 主动的:它们可以阻止不合规资源的创建或更改。它们也是 反应性的,允许您查找并修复现有的不合规资源。
策略定义:以 JSON 编写的规则,指定允许或要求的内容。
策略分配:将策略应用于特定范围(例如,订阅、资源组)。
倡议:一组政策的集合,用于更广泛的执行。
效果:指定当策略被触发时会发生什么(例如,“拒绝”、“审核”或“附加”)。
一些示例:
确保符合特定 Azure 区域的合规性:此策略确保所有资源在特定 Azure 区域部署。例如,一家公司可能希望确保其所有数据存储在欧洲以符合 GDPR 合规性。
强制命名标准:策略可以强制 Azure 资源的命名约定。这有助于根据名称组织和轻松识别资源,这在大型环境中非常有用。
限制某些资源类型:此策略可以限制某些类型资源的创建。例如,可以设置策略以防止创建某些 VM 大小等昂贵资源类型,以控制成本。
强制标签策略:标签是与 Azure 资源关联的键值对,用于资源管理。策略可以强制要求所有资源必须存在某些标签,或具有特定值。这对于成本跟踪、所有权或资源分类非常有用。
限制对资源的公共访问:策略可以强制某些资源(如存储帐户或数据库)没有公共端点,确保它们仅在组织的网络内可访问。
自动应用安全设置:策略可以用于自动将安全设置应用于资源,例如将特定网络安全组应用于所有 VM,或确保所有存储帐户使用加密。
请注意,Azure 策略可以附加到 Azure 层次结构的任何级别,但它们 通常用于根管理组 或其他管理组。
Azure 策略 JSON 示例:
在 Azure 权限可以分配给层次结构的任何部分。这包括管理组、订阅、资源组和单个资源。权限由分配它们的实体的包含 资源 进行 继承。
这种层次结构允许高效和可扩展的访问权限管理。
RBAC(基于角色的访问控制)是我们在前面的部分中已经看到的:将角色分配给主体以授予其对资源的访问权限。 然而,在某些情况下,您可能希望提供 更细粒度的访问管理 或 简化 数百个角色 分配 的管理。
Azure ABAC(基于属性的访问控制)在 Azure RBAC 的基础上,通过在特定操作的上下文中添加 基于属性的角色分配条件 来构建。角色分配条件 是您可以选择性地添加到角色分配中的 额外检查,以提供更细粒度的访问控制。条件过滤作为角色定义和角色分配一部分授予的权限。例如,您可以 添加一个条件,要求对象具有特定标签才能读取该对象。 您 不能 明确 拒绝 对特定资源的访问 使用条件。
Azure 中的特权身份管理(PIM)是一个 管理、控制和监视特权访问 的工具,适用于 Azure Active Directory 和 Azure。它通过提供 及时和时间限制的特权访问、强制审批工作流和要求额外身份验证 来增强安全性。这种方法通过确保仅在必要时和特定时间段内授予提升的权限,从而最小化未经授权访问的风险。
在 OIDC 中使用 三种类型的令牌:
访问令牌: 客户端将此令牌呈现给资源服务器以 访问资源。它只能用于特定的用户、客户端和资源组合,并且 在到期之前无法撤销 - 默认情况下为 1 小时。
ID 令牌:客户端从 授权服务器 接收此 令牌。它包含有关用户的基本信息。它是 绑定到特定用户和客户端组合 的。
刷新令牌:与访问令牌一起提供给客户端。用于 获取新的访问和 ID 令牌。它绑定到特定的用户和客户端组合,并且可以被撤销。默认过期时间为 90 天(对于不活动的刷新令牌)和 活动令牌没有过期。
有关 条件访问 的信息 存储 在 JWT 中。因此,如果您从允许的 IP 地址请求 令牌,该 IP 将被 存储 在令牌中,然后您可以使用该令牌从 不允许的 IP 访问资源。
根据您想要执行的操作,访问令牌的 "aud" 必须被授权以联系您将要联系的 API URL。
命令 az account get-access-token --resource-type [...]
支持以下类型,每种类型将在结果访问令牌中添加特定的 "aud":
请注意,以下仅是 az account get-access-token
支持的 API,但还有更多。
aad-graph(Azure Active Directory Graph API):用于访问遗留的 Azure AD Graph API(已弃用),允许应用程序读取和写入 Azure Active Directory(Azure AD)中的目录数据。
https://graph.windows.net/
arm(Azure Resource Manager):用于通过 Azure Resource Manager API 管理 Azure 资源。这包括创建、更新和删除虚拟机、存储帐户等资源的操作。
https://management.core.windows.net/ or https://management.azure.com/
batch(Azure Batch Services):用于访问 Azure Batch,这是一项服务,可有效地在云中启用大规模并行和高性能计算应用程序。
https://batch.core.windows.net/
data-lake(Azure Data Lake Storage):用于与 Azure Data Lake Storage Gen1 进行交互,这是一项可扩展的数据存储和分析服务。
https://datalake.azure.net/
media(Azure Media Services):用于访问 Azure Media Services,提供基于云的视频和音频内容处理和交付服务。
https://rest.media.azure.net
ms-graph(Microsoft Graph API):用于访问 Microsoft Graph API,这是 Microsoft 365 服务数据的统一端点。它允许您访问 Azure AD、Office 365、企业移动性和安全服务等服务的数据和见解。
https://graph.microsoft.com
oss-rdbms(Azure 开源关系数据库):用于访问 Azure 数据库服务,支持 MySQL、PostgreSQL 和 MariaDB 等开源关系数据库引擎。
https://ossrdbms-aad.database.windows.net
查看以下页面以了解不同的 请求访问令牌 和使用它们登录的方法:
Az - Entra ID (formerly AzureAD - AAD)学习和实践 AWS 黑客攻击:HackTricks Training AWS Red Team Expert (ARTE) 学习和实践 GCP 黑客攻击:HackTricks Training GCP Red Team Expert (GRTE)