若要使用 PowerShell 将Azure角色分配给安全主体,请调用 New-AzRoleAssignment 命令。 若要运行该命令,需要一个包含 Microsoft.Authorization/roleAssignments/write 权限的角色,该权限必须在相应范围或更高级别分配给你。
命令的格式可能因分配范围而异,但-ObjectId 和 -RoleDefinitionName 参数是必需的。 虽然不需要该 -Scope 参数,但请将其包含在内以保留最低特权原则。 通过限制角色和范围,可以限制在安全主体被入侵时面临风险的资源。
-ObjectId 参数是 Microsoft Entra 的对象 ID,用于标识您要分配角色的用户、组或服务主体。 若要检索标识符,请使用 Get-AzADUser 筛选Microsoft Entra用户,如以下示例所示。
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
第一个响应返回安全主体,第二个响应返回安全主体的对象 ID。
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type :
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
-RoleDefinitionName 参数值是需要分配给主体的 RBAC 角色的名称。 若要使用 Microsoft Entra 凭据访问 Azure 门户中的 Blob 数据,用户必须具有以下角色分配:
- 数据访问角色,例如 存储 Blob 数据参与者 或 存储 Blob 数据读取者
- Azure 资源管理器 读取者 角色
要为 Blob 容器或存储帐户分配角色作用域,请为参数 -Scope 指定一个包含资源作用域的字符串。 此操作符合最低特权原则。“最低特权”是一个信息安全概念,按照此原则,只为用户授予履行其职责所需的最低访问权限级别。 这种做法降低了不必要的特权带来意外损害或故意损害的潜在风险。
容器的作用域格式如下:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
存储帐户的范围采用以下格式:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
若要分配作用域限定为存储帐户的角色,请为 --scope 参数指定一个包含该容器作用域的字符串。
以下示例为用户分配“存储 Blob 数据参与者”角色。 角色分配的作用域限定在容器级别。 请务必将括号中的示例值和占位符值 (<>) 替换为你自己的值:
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
以下示例通过指定对象 ID,将“存储 Blob 数据读取者”角色分配给用户。 角色分配的范围仅限于存储帐户级别。 请务必将括号中的示例值和占位符值 (<>) 替换为你自己的值:
New-AzRoleAssignment -ObjectID "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" `
-RoleDefinitionName "Storage Blob Data Reader" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
输出应类似如下所示:
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>
Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>
DisplayName : Mark Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
有关使用 PowerShell 在订阅或资源组范围分配角色的信息,请参阅使用 Azure PowerShell 分配 Azure 角色。
若要使用 Azure CLI 将Azure角色分配给安全主体,请使用 az 角色分配 create 命令。 命令的格式因分配范围而异。 若要运行该命令,您必须具有一个包含 Microsoft.Authorization/roleAssignments/write 权限并在相应范围或更高级别分配给您的角色。
若要分配容器范围的角色,请为 --scope 参数指定一个包含容器范围的字符串。 容器的作用域格式如下:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
以下示例为用户分配“存储 Blob 数据参与者”角色。 角色分配的作用域限定为容器级别。 请务必将括号中的示例值和占位符值 (<>) 替换为你自己的值:
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
以下示例通过指定对象 ID,将“存储 Blob 数据读取者”角色分配给用户。 若要详细了解 --assignee-object-id 和 --assignee-principal-type 参数,请参阅 az role assignment。 在此示例中,角色分配的范围仅限于存储帐户级别。 请务必将括号中的示例值和占位符值 (<>) 替换为你自己的值:
az role assignment create \
--role "Storage Blob Data Reader" \
--assignee-object-id "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" \
--assignee-principal-type "User" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
分配角色或删除角色分配时,更改最多可能需要 10 分钟才能生效。
若要了解如何使用 Azure CLI 在订阅、资源组或存储帐户范围内分配角色,请参阅使用 Azure CLI 分配 Azure 角色。