你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

管理服务主体角色

为了限制对 Azure 资源的访问,可以使用服务主体来管理角色分配。 每个角色提供用户在访问 Azure 资源时允许的不同权限。 本教程中的此步骤介绍如何创建和删除服务主体角色。

Azure CLI 提供以下命令来管理角色分配:

创建或删除角色分配

参与者角色具有读取和写入到 Azure 帐户的完全权限。 “读者”角色限制性更强,具有只读访问权限。 始终使用最低特权原则。 有关 Azure RBAC 中可用角色的完整列表,请参阅 Azure 内置角色

添加角色并不会限制以前分配的权限。 此示例添加“读者”角色并删除“参与者”角色 :

az role assignment create --assignee myServicePrincipalID \
                          --role Reader \
                          --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName

az role assignment delete --assignee myServicePrincipalID \
                          --role Contributor \
                          --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName

输出控制台:

{
  "condition": null,
  "conditionVersion": null,
  "createdBy": null,
  "createdOn": "yyyy-mm-ddT00:00:00.000000+00:00",
  "delegatedManagedIdentityResourceId": null,
  "description": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "principalId": "00000000-0000-0000-0000-000000000000",
  "principalType": "ServicePrincipal",
  "roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
  "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroupName",
  "type": "Microsoft.Authorization/roleAssignments",
  "updatedBy": "00000000-0000-0000-0000-000000000000",
  "updatedOn": "yyyy-mm-ddT00:00:00.000000+00:00"
}

如何获取范围参数的值

你可能会遇到一个问题,“如何知道 --scope 参数值?”答案是查找并复制服务主体需访问的 Azure 资源的资源 ID。 此信息通常可在 Azure 门户的“属性”或每个资源的“终结点”页中找到。 下面是常见的 --scope 示例,但依赖于实际格式和值的资源 ID

范围 示例
订阅 /subscriptions/mySubscriptionID
资源组 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
虚拟机 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
存储帐户文件服务 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
数据工厂 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

有关更多范围示例,请参阅了解 Azure RBAC 的范围

验证更改

可以通过列出分配的角色来验证所做的更改:

# list all role assignments for the current subscription
az role assignment list ---output table

# list role assignments for a user
az role assignment list --assignee myUserName@contoso.com

# list role assignments for a subscription
az role assignment list --subscription mySubscriptionID

还可以转到 Azure 门户,并在访问控制 (IAM) 菜单中手动将角色分配给服务主体。 有关列出角色分配的更多示例,请参阅使用 Azure CLI 列出 Azure 角色分配

后续步骤

了解如何管理服务主体角色后,请继续执行下一步,了解如何使用服务主体创建资源。