Поделиться через


Понимание области применения Azure RBAC

Область — это набор ресурсов, к которым применяется доступ. При назначении роли важно понимать объём полномочий, чтобы предоставить объекту безопасности доступ, в котором он действительно нуждается. Ограничивая область, вы ограничиваете, какие ресурсы подвергаются риску, если субъект безопасности когда-либо скомпрометирован.

Уровни области действия

В Azure область действия можно задать на четырех уровнях: группы управления, подписки, группы ресурсов и ресурса. Структура областей построена на иерархических отношениях "родитель-потомок". Каждый уровень иерархии делает область более конкретной. Вы можете назначать роли на любом из этих уровней области действия. Уровень, который вы выбираете, определяет, насколько широко применяется роль. Более низкие уровни наследуют разрешения ролей от более высоких уровней.

Схема области назначения роли.

Группы управления — это более высокий уровень области по сравнению с уровнем подписок, но они поддерживают более сложные иерархии. На следующей схеме показан пример иерархии групп управления и подписок, которые можно определить. Дополнительные сведения о группах управления см. в статье "Что такое группы управления Azure?".

Схема иерархии групп управления и подписок.

Формат области

При назначении ролей с помощью командной строки необходимо указать область. Для средств командной строки область — это потенциально длинная строка, которая определяет точную область назначения роли. На портале Azure эта область обычно указана в качестве идентификатора ресурса.

Область состоит из ряда идентификаторов, разделенных косой чертой (/). Эту строку можно рассматривать как выражение следующей иерархии, где текст без заполнителей ({}) является фиксированным идентификатором:

/subscriptions
    /{subscriptionId}
        /resourcegroups
            /{resourceGroupName}
                /providers
                    /{providerName}
                        /{resourceType}
                            /{resourceSubType1}
                                /{resourceSubType2}
                                    /{resourceName}
  • {subscriptionId} — это идентификатор используемой подписки (GUID).
  • {resourceGroupName} — имя содержащей группы ресурсов.
  • {providerName} — имя поставщика ресурсов , обрабатывающего ресурс, а затем {resourceType} идентифицирует {resourceSubType*} дополнительные уровни в этом поставщике ресурсов.
  • {resourceName} — последняя часть строки, которая определяет определенный ресурс.

Группы управления являются уровнем выше подписок и имеют самую широкую (наименее конкретную) область. Назначения ролей на этом уровне применяются к подпискам в группе управления. Область применения для группы управления имеет следующий формат:

/providers
    /Microsoft.Management
        /managementGroups
            /{managementGroupName}

Примеры охвата

Область действия Пример
Группа управления /providers/Microsoft.Management/managementGroups/marketing-group
Подписка /subscriptions/00000000-0000-0000-0000-000000000000
Группа ресурсов /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
Ресурс /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345

Определение области ресурса

Довольно просто определить область для группы управления, подписки или группы ресурсов. Вам просто нужно знать имя и идентификатор подписки. Однако определение области ресурса занимает немного больше работы. Ниже приведены несколько способов определения области ресурса.

  • На портале Azure откройте ресурс, а затем просмотрите свойства. Ресурс должен указать идентификатор ресурса , где можно определить область. Например, вот идентификаторы ресурсов для аккаунта хранения.

    Снимок экрана: идентификаторы ресурсов для учетной записи хранения на портале Azure.

  • Другой способ — использовать портал Azure, чтобы временно назначить роль в области ресурсов, а затем использовать Azure PowerShell или Azure CLI для перечисления назначения ролей. В результатах область будет указана как свойство.

    RoleAssignmentId   : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro
                         viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
    Scope              : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
    DisplayName        : User
    SignInName         : [email protected]
    RoleDefinitionName : Storage Blob Data Reader
    RoleDefinitionId   : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
    ObjectId           : <principalId>
    ObjectType         : User
    CanDelegate        : False
    Description        :
    ConditionVersion   :
    Condition          :
    
    {
        "canDelegate": null,
        "condition": null,
        "conditionVersion": null,
        "description": null,
        "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
        "name": "{roleAssignmentId}",
        "principalId": "{principalId}",
        "principalName": "[email protected]",
        "principalType": "User",
        "resourceGroup": "test-rg",
        "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "roleDefinitionName": "Storage Blob Data Reader",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01",
        "type": "Microsoft.Authorization/roleAssignments"
      }
    

Области и шаблоны ARM

Назначение ролей — это специальный тип в Azure Resource Manager, который называется ресурсом расширения. Ресурс расширения — это ресурс, который дополняет возможности другого ресурса. Они всегда существуют как расширение (например, дочерний) другого ресурса. Например, назначение роли в области подписки является ресурсом расширения подписки. Имя назначения роли всегда совпадает с именем ресурса, который вы расширяете, и плюс /Microsoft.Authorization/roleAssignments/{roleAssignmentId}. При назначении ролей с помощью шаблона Azure Resource Manager (шаблона ARM) обычно не требуется предоставлять область. Причина в том, что поле области всегда является идентификатором расширяемого ресурса. Область можно определить по идентификатору назначения роли. В следующей таблице показаны примеры идентификатора назначения ролей и соответствующей области:

Идентификатор назначения ролей Область действия
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg

Дополнительные сведения о области и шаблонах ARM см. в статье "Назначение ролей Azure с помощью шаблонов Azure Resource Manager". Полный список типов ресурсов расширения см. в разделе "Типы ресурсов", расширяющие возможности других ресурсов.

Дальнейшие действия