Общие сведения об области действия для Azure RBAC

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

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

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

Scope for a role assignment

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

Management group and subscription hierarchy

Формат области действия

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

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

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

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

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

Примеры областей действия

Область Пример
Группа управления /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 откройте ресурс и просмотрите свойства. Здесь есть поле ИД ресурса, в котором можно определить область действия. Например, ниже приведены идентификаторы ресурсов для учетной записи хранения.

    Screenshot that shows resource IDs for a storage account in Azure portal.

  • Другой способ — использовать портал 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         : user@contoso.com
    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": "user@contoso.com",
        "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. Полный список типов ресурсов расширения см. в статье Типы ресурсов, расширяющие возможности других ресурсов.

Следующие шаги