Что такое управление доступом на основе ролей в Azure (RBAC)?
Управление доступом к облачным ресурсам является критически важной функцией в любой организации, использующей облако. Управление доступом на основе ролей Azure (RBAC Azure) позволяет управлять доступом пользователей к ресурсам Azure, включая настройку разрешений на выполнение операций с этими ресурсами и определение областей доступа.
Azure RBAC — это система авторизации, созданная на основе Resource Manager Azure, которая обеспечивает точное управление доступом к ресурсам Azure.
В этом видео представлен краткий обзор Azure RBAC.
Какие возможности обеспечивает RBAC Azure?
Вот примеры того, что можно выполнять с помощью RBAC Azure:
- предоставление одному пользователю разрешения на управление виртуальными машинами в подписке, а другому — на управление виртуальными сетями;
- предоставление группе DBA разрешения на управление базами данных SQL в подписке;
- предоставление пользователю разрешения на управление всеми ресурсами в группе ресурсов, включая виртуальные машины, веб-сайты и подсети;
- представление приложению доступа ко всем ресурсам в группе ресурсов.
Принцип работы RBAC Azure
Для управления доступом к ресурсам с помощью Azure RBAC создаются назначения ролей. Это важнейшее понятие. Именно таким образом предоставляются разрешения. Назначение ролей состоит из трех элементов: субъект безопасности, определение роли и область действия.
Субъект безопасности
Субъект безопасности — это объект, представляющий пользователя, группу, субъект-службу или управляемое удостоверение, которые запрашивают доступ к ресурсам Azure. Любому из этих субъектов безопасности можно назначить роль.
Определение роли
Определение роли представляет собой коллекцию разрешений. Обычно это называется ролью. В определении роли перечисляются действия, которые можно выполнить, например чтение, запись и удаление. Роль может быть общей, например "Владелец", или более конкретной, например "Модуль чтения виртуальной машины".
В Azure есть несколько встроенных ролей. Например, роль Участник виртуальных машин позволяет пользователю создавать виртуальные машины и управлять ими. Если встроенные роли не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли Azure.
В этом видео представлен краткий обзор встроенных и настраиваемых ролей.
Azure предоставляет действия с данными, которые позволяют предоставлять доступ к данным в объекте. Например, если у пользователя есть доступ на чтение данных в учетной записи хранения, это позволяет ему считывать большие двоичные объекты или сообщения в этой учетной записи.
Дополнительные сведения о ролях Azure см. в этой статье.
Область
Область — это набор ресурсов, к которым предоставляется доступ. При назначении роли можно точнее ограничить разрешенные действия, определив их область. Это удобно, если вы хотите привлечь какого-либо пользователя к работе над веб-сайтом, но только для одной группы ресурсов.
В Azure область действия можно задать на четырех уровнях: на уровне группы управления, уровне подписки, группы ресурсов или ресурса. Структура областей строится на отношениях "родитель-потомок". Вы можете назначать роли на любом из этих уровней области действия.
Дополнительные сведения об областях см. в статье Общие сведения об областях для Azure RBAC.
Назначения ролей
Назначение ролей — это процесс связывания определения роли с пользователем, группой, субъектом-службой или управляемым удостоверением в определенной области в целях предоставления доступа. Доступ предоставляется путем создания назначения ролей, а отзывается путем его удаления.
На приведенной ниже схеме показан пример назначения ролей. В этом примере группе "Маркетинг" назначена роль Участник для группы ресурсов "Продажи медицинских препаратов". Это означает, что пользователи из группы "Маркетинг" могут создавать ресурсы Azure в группе ресурсов "Продажи медицинских препаратов" или управлять любыми такими ресурсами. Пользователи в группе "Маркетинг" не имеют доступа к ресурсам за пределами группы ресурсов "Продажи медицинских препаратов", если они не имеют других назначений ролей.
Назначать роли можно с помощью портала Azure, Azure CLI, Azure PowerShell, пакетов SDK Azure или REST API.
Дополнительные сведения см. в статье Шаги по добавлению назначения роли.
Группы
Назначения ролей являются транзитивными для групп. Это означает, что если пользователь является членом группы, а эта группа является членом другой группы, имеющей назначение ролей, то пользователь будет иметь разрешения в назначении ролей.
Несколько назначений ролей
Что произойдет, если у вас будет несколько перекрывающихся назначений ролей? RBAC Azure — это аддитивная модель, поэтому ваши действующие разрешения являются сочетанием назначений ролей. Рассмотрим следующий пример, где пользователю предоставляется роль участника на уровне подписки и роль читателя для группы ресурсов. Сочетание разрешений участника и разрешений читателя, по сути, представляет собой роль участника для подписки. Следовательно, в этом примере назначение роли читателя не играет роли.
Запрет назначений
Раньше RBAC Azure была разрешающей моделью без запретов, но теперь она ограниченно поддерживает запрет назначений. Запрет назначений, как и назначение ролей, связывает набор запрещающих действий с пользователем, группой или субъектом-службой в определенной области для отказа в доступе. Назначение роли определяет набор допустимых действий, а назначение запрета определяет набор недопустимых действий. Другими словами, запрет назначений блокирует выполнение определенных действий пользователями, даже если назначение роли предоставляет им доступ. Запрет назначений имеет приоритет над назначением ролей.
Дополнительные сведения о запретах назначений Azure см. в этой статье.
Как RBAC Azure определяет право доступа пользователя к ресурсу
Ниже перечислены основные действия, выполняемые RBAC Azure для определения того, есть ли у вас доступ к ресурсу. Эти действия относятся к Azure Resource Manager или службам плоскости данных, интегрированным с Azure RBAC. Это полезно, если вы пытаетесь устранить проблему с доступом.
Пользователь A (или директор службы) приобретает токен для Azure Resource Manager.
Токен включает членство в группе пользователей (включая переходные членства в группах).
Пользователь выполняет вызов REST API в Azure Resource Manager с помощью присоединенного токена.
Azure Resource Manager извлекает все назначения ролей и запрет назначений, которые применяются к ресурсу, на котором выполняется действие.
Если применяется запрет назначения, доступ блокируется. В противном случае вычисление продолжается.
Azure Resource Manager сужает назначенные роли, которые применяются к этому пользователю или группе, и определяет, какие роли у пользователя есть для этого ресурса.
Azure Resource Manager определяет, включено ли действие в вызове API в роли, которые пользователь имеет для этого ресурса. Если роли содержат
Actions
, где имеется подстановочный знак (*
), действующие разрешения вычисляются путем вычитанияNotActions
из допустимойActions
. Аналогичным образом вычитание выполняется для любых действий с данными.Actions - NotActions = Effective management permissions
DataActions - NotDataActions = Effective data permissions
Если у пользователя нет роли с действием в запрашиваемой области, доступ не предоставляется. В противном случае оцениваются все условия.
Если назначение роли включает условия, они оцениваются. В противном случае доступ разрешен.
Если условия соблюдены, доступ разрешен. В противном случае доступ запрещен.
На следующей схеме представлены сводные сведения о логике оценки.
Где хранятся данные Azure RBAC?
Определения и назначения ролей, а также назначения запретов хранятся глобально, чтобы обеспечить доступ к ресурсам независимо от региона, в котором они созданы.
При удалении назначения роли или любых других данных Azure RBAC данные глобально удаляются. Субъекты, имеющие доступ к ресурсу через данные Azure RBAC, потеряют доступ.
Почему данные Azure RBAC являются глобальными?
Данные Azure RBAC являются глобальными, чтобы клиенты могли своевременно получать доступ к ресурсам независимо от того, откуда они обращаются. Azure RBAC применяется Resource Manager Azure, которая имеет глобальную конечную точку, и запросы направляются в ближайший регион для скорости и устойчивости. Поэтому azure RBAC необходимо применять во всех регионах, а данные реплицируются во все регионы. Дополнительные сведения см. в статье Устойчивость azure Resource Manager.
Рассмотрим следующий пример. Арина создает виртуальную машину в Восточной Азии. Боб, который является членом команды Арины, работает в США. Бобу требуется доступ к виртуальной машине, созданной в Восточной Азии. Чтобы предоставить Бобу своевременный доступ к виртуальной машине, Azure необходимо глобально реплицировать назначение ролей, которое предоставляет Бобу доступ к виртуальной машине из любого места, где находится Боб.
Требования лицензий
Эта функция бесплатна и доступна в вашей подписке Azure.