Общие сведения о назначении ролей в Azure

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

Назначение ролей

Доступ к ресурсам Azure предоставляется путем создания назначения роли и отмены доступа путем удаления назначения ролей.

Назначение роли состоит из нескольких компонентов, в том числе:

  • Субъект или которому назначена роль.
  • Назначенная им роль.
  • Область, при которой назначена роль.
  • Имя назначения роли и описание, которое помогает объяснить, почему роль назначена.

Например, можно использовать Azure RBAC для назначения ролей, таких как:

  • Пользователь Sally имеет доступ владельца к учетной записи хранения contoso123 в группе ресурсов Contoso служба хранилища.
  • У всех пользователей группы "Облачные Администратор istrators" в идентификаторе Microsoft Entra ID есть доступ для чтения ко всем ресурсам в группе ресурсов Contoso служба хранилища.
  • Управляемое удостоверение, связанное с приложением, разрешено перезапускать виртуальные машины в подписке Contoso.

Ниже показан пример свойств назначения ролей при отображении с помощью Azure PowerShell:

{
  "RoleAssignmentName": "00000000-0000-0000-0000-000000000000",
  "RoleAssignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "Scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "DisplayName": "User Name",
  "SignInName": "user@contoso.com",
  "RoleDefinitionName": "Contributor",
  "RoleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "ObjectId": "22222222-2222-2222-2222-222222222222",
  "ObjectType": "User",
  "CanDelegate": false,
  "Description": null,
  "ConditionVersion": null,
  "Condition": null
}

Ниже показан пример свойств назначения ролей при отображении с помощью Azure CLI или REST API:

{
  "canDelegate": null,
  "condition": null,
  "conditionVersion": null,
  "description": null,
  "id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "principalId": "22222222-2222-2222-2222-222222222222",
  "principalName": "user@contoso.com",
  "principalType": "User",
  "roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
  "roleDefinitionName": "Contributor",
  "scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "type": "Microsoft.Authorization/roleAssignments"
}

В следующей таблице описывается, что означает свойства назначения ролей.

Свойство Description
RoleAssignmentName
name
Имя назначения роли, которое является глобально уникальным идентификатором (GUID).
RoleAssignmentId
id
Уникальный идентификатор назначения роли, который включает имя.
Scope
scope
Идентификатор ресурса Azure, в который область назначена роль.
RoleDefinitionId
roleDefinitionId
Уникальный идентификатор роли.
RoleDefinitionName
roleDefinitionName
Имя роли.
ObjectId
principalId
Идентификатор объекта Microsoft Entra для субъекта, которому назначена роль.
ObjectType
principalType
Тип объекта Microsoft Entra, который представляет субъект. Допустимыми значениями являются User, Group и ServicePrincipal.
DisplayName Для назначений ролей для пользователей отображаемое имя пользователя.
SignInName
principalName
Уникальное имя субъекта-пользователя или имя приложения, связанного с субъектом-службой.
Description
description
Описание назначения роли.
Condition
condition
Оператор условия, созданный с помощью одного или нескольких действий из определения и атрибутов роли.
ConditionVersion
conditionVersion
Номер версии условия. По умолчанию используется версия 2.0 и является единственной поддерживаемой версией.
CanDelegate
canDelegate
Не реализовано.

Область

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

Совет

Используйте наименьшие область, необходимые для удовлетворения ваших требований.

Например, если нужно предоставить управляемому удостоверению доступ к одной учетной записи хранения, для обеспечения безопасности целесообразно создать назначение роли в области действия учетной записи хранения, а не группы ресурсов или подписки.

Дополнительные сведения об областях см. в статье Общие сведения об областях для Azure RBAC.

Роль для назначения

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

Можно назначить встроенное определение роли или пользовательское определение роли. При создании назначения ролей некоторые средства требуют использования идентификатора определения роли, а другие средства позволяют указать имя роли.

Дополнительные сведения об определениях ролей см. в разделе "Общие сведения о определениях ролей".

Субъект

Субъекты включают пользователей, группы безопасности, управляемые удостоверения, удостоверения рабочей нагрузки и субъекты-службы. Субъекты создаются и управляются в клиенте Microsoft Entra. Вы можете назначить роль любому субъекту. Используйте идентификатор объекта Идентификатора Microsoft Entra, чтобы определить субъект, которому требуется назначить роль.

При создании назначения ролей с помощью Azure PowerShell, Azure CLI, Bicep или другой инфраструктуры в качестве кода (IaC) укажите тип субъекта. К основным типам относятся User, Group и ServicePrincipal. Важно указать правильный тип субъекта. Иначе могут возникнуть ошибки, вызывающие прерывания в развертывании, особенно при работе с субъектами-службами и управляемыми экземплярами.

Имя

Имя ресурса назначения роли должно быть глобально уникальным идентификатором (GUID).

Имена ресурсов назначения ролей должны быть уникальными в клиенте Microsoft Entra, даже если область назначения роли является более узким.

Совет

При создании назначения ролей с помощью портал Azure, Azure PowerShell или Azure CLI процесс создания автоматически присваивает уникальное имя роли.

Если вы создаете назначение ролей с помощью Bicep или другой инфраструктуры в качестве кода (IaC), необходимо тщательно спланировать имя назначений ролей. Дополнительные сведения см. в статье "Создание ресурсов Azure RBAC с помощью Bicep".

Поведение при удалении ресурсов

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

При попытке повторно использовать имя назначения роли для другого назначения роли развертывание будет завершено ошибкой. Эта проблема, скорее всего, возникает при использовании Bicep или шаблона Azure Resource Manager (шаблона ARM) для развертывания назначений ролей, так как при использовании этих средств необходимо явно задать имя назначения ролей. Чтобы обойти это поведение, необходимо либо удалить старое назначение ролей, прежде чем повторно создать его, либо убедиться, что при развертывании нового назначения роли используется уникальное имя.

Description

Вы можете добавить текстовое описание в назначение роли. Хотя описания являются необязательными, рекомендуется добавить их в назначения ролей. Укажите краткое обоснование того, почему субъекту требуется назначенная роль. Когда кто-то выполняет аудит назначений ролей, описания могут помочь понять, почему они были созданы, и независимо от того, применяются ли они.

Условия

Некоторые роли поддерживают условия назначения ролей на основе атрибутов в контексте конкретных действий. Условие назначения роли — это дополнительная проверка, которую можно дополнительно добавить к назначению роли, чтобы обеспечить более детализированный контроль доступа.

Например, можно добавить условие, требующее наличия определенного тега для пользователя для чтения объекта.

Обычно вы создаете условия с помощью редактора визуальных условий, но вот как выглядит пример условия в коде:

((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'))

Предыдущее условие позволяет пользователям считывать большие двоичные объекты с помощью ключа тега индекса BLOB-объектов Project и значения Каскада.

Дополнительные сведения об условиях см. в статье "Что такое управление доступом на основе атрибутов Azure( Azure ABAC)?

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