用户、组和角色分配
在 Entra ID 中创建用户和组,分配内置 RBAC 角色以控制对 Azure 资源的访问,并应用最小权限原则。
用户、组和角色分配 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
Azure RBAC:基于角色的访问控制
Azure 基于角色的访问控制 (RBAC) 是控制谁可以对 Azure 资源执行哪些操作的授权系统。您无需直接向个人分配权限,而是将角色分配给特定范围内的安全主体(用户、组、服务主体或托管身份)。随着组织的发展,这种分离方式可以让权限更易于管理。
RBAC 的三个概念
每个 RBAC 分配都包含三个组成部分。安全主体是获得访问权限的对象(用户、组或托管身份)。角色定义规定允许执行哪些操作(例如读取 VMs、写入存储)。范围规定访问权限适用的位置——从最广到最窄依次为:管理组、订阅、资源组或单个资源。访问权限会沿范围层次结构向下继承。
# View all role assignments in a subscription
az role assignment list \
--output table
# Check your own permissions on a resource
az role assignment list \
--assignee <your-user-principal-name> \
--output table内置角色概览
Azure 提供数百个内置角色。所有资源类型中最常用的四个角色是:Owner——拥有完全访问权限,包括向他人分配角色的能力;Contributor——可以创建和管理资源,但无法向他人授予访问权限;Reader——仅限查看;以及用户访问管理员——可以管理角色分配,但不能自行参与资源管理。
# List all built-in roles
az role definition list \
--custom-role-only false \
--query '[].{Name:roleName, Id:name}' \
--output table | head -20分配角色
角色分配会在指定范围内,向指定的安全主体授予角色定义中规定的权限。角色分配会传播到所有子范围——在资源组级别分配 Contributor,会使该组中的每个资源都获得 Contributor 访问权限。在订阅级别分配,则会使该订阅中的所有资源组都获得 Contributor 访问权限。
# Assign Contributor role to a user at resource group scope
az role assignment create \
--assignee alice@yourcompany.com \
--role Contributor \
--resource-group myRG
# Assign Reader role to a group at subscription scope
az role assignment create \
--assignee-object-id <group-object-id> \
--role Reader \
--scope /subscriptions/<subscription-id>最小权限原则
最小权限原则规定,每个身份只能拥有完成其工作所必需的最低权限。在 Azure RBAC 中,这意味着:不需要写入权限时,优先使用 Reader 而不是 Contributor;优先使用资源组范围而不是订阅范围;并尽可能使用特定资源级别的角色(例如 Storage Blob Data Contributor),而不是范围更广的 Contributor 角色。
自定义角色定义
当没有任何内置角色能够完全满足您的要求时,您可以创建自定义角色。自定义角色定义会指定一组 Actions(允许的控制平面操作)、NotActions(从允许集合中排除的操作)、DataActions(对资源执行的数据平面操作,例如读取 Blob 内容),以及 AssignableScopes(可以分配该角色的订阅或管理组)。
{
'Name': 'VM Operator',
'Description': 'Can start, stop, and restart VMs but not delete or reconfigure them',
'Actions': [
'Microsoft.Compute/virtualMachines/start/action',
'Microsoft.Compute/virtualMachines/restart/action',
'Microsoft.Compute/virtualMachines/deallocate/action',
'Microsoft.Compute/virtualMachines/read'
],
'NotActions': [],
'AssignableScopes': ['/subscriptions/<subscription-id>']
}通过组实现角色分配扩展
与其向单个用户分配角色,不如向组分配角色,这是一种最佳实践。新开发人员加入 DevTeam 后,您只需将其添加到 Entra ID 中的 DevTeam 安全组,他们就会自动继承该组拥有的所有角色分配,无需更改 Azure RBAC。这一集中管理点可以避免分散的个人分配,从而便于在员工离职时进行审核或撤销权限。
# Create a group and assign a role to it
az ad group create \
--display-name 'DevTeam' \
--mail-nickname DevTeam
# Assign role to the group
az role assignment create \
--assignee-object-id <group-object-id> \
--role Contributor \
--resource-group dev-rg用于自动化的服务主体
服务主体是应用程序、脚本和自动化工具用于向 Azure 进行身份验证并访问资源的身份。与用户身份不同,服务主体不具备交互式登录功能。您可以在 Entra ID 的应用注册中创建服务主体,然后在适当的范围分配 RBAC 角色——例如,授予 CI/CD 自动化流程对单个资源组的 Contributor 访问权限,以便部署基础结构。
# Create a service principal and assign Contributor to a resource group
az ad sp create-for-rbac \
--name myCICDprincipal \
--role Contributor \
--scopes /subscriptions/<sub-id>/resourceGroups/myRG拒绝分配
拒绝分配会阻止安全主体执行特定操作,即使角色分配原本允许这些操作也是如此。与角色分配不同,拒绝分配不能由管理员直接创建,而是由 Azure Blueprints 或托管应用程序附加,用于防止用户修改受保护的资源。拒绝分配的优先级高于任何匹配的角色分配。
# List deny assignments in a resource group
az role assignment list \
--include-deny-assignments \
--resource-group myRG \
--query '[?type==`Microsoft.Authorization/denyAssignments`]'特权身份管理 (PIM)
特权身份管理 (PIM)是 Entra ID P2 的一项功能,可提供即时特权访问。您无需永久分配 Owner 或全局管理员角色,而是让用户具备该角色的可用资格。需要使用时,用户可以在限定时间窗口内(例如 1–8 小时)激活分配,并可选择要求审批流程和填写理由。这样可以大幅缩小权限过高账户形成的长期攻击面。
用于持续治理的访问评审
访问评审(Entra ID P2)是定期自动执行的评审,要求资源所有者或经理确认团队成员是否仍需要当前的角色分配。评审人员可以直接在评审界面批准或拒绝继续访问。这可以发现因角色变更、项目完成或员工离职而遗留的过期权限,是满足法规合规计划要求的重要措施。
快速检查
请测试您对本课 Microsoft Azure 基础知识 (AZ-900) 概念的理解。
课程回顾
本课介绍了:Azure RBAC 将角色分配给特定范围内的安全主体;最小权限原则意味着只授予完成任务所需的最低权限;以及PIM 为高权限角色提供即时激活,而不是永久分配。接下来,我们将学习 Entra ID 中的多重身份验证和条件访问。
常见问题解答
「用户、组和角色分配」课时是免费的吗?
是的 — 「用户、组和角色分配」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「用户、组和角色分配」这节课中我会学到什么?
在 Entra ID 中创建用户和组,分配内置 RBAC 角色以控制对 Azure 资源的访问,并应用最小权限原则。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「用户、组和角色分配」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。