Провайдеры удостоверений
In this article:
Провайдеры удостоверений#
Сервис Провайдеры удостоверений позволяет использовать внешнего провайдера удостоверений (Identity Provider, IdP) для авторизации пользователей в К2 Облаке. Для подключения провайдера удостоверений к облаку применяется OpenID Connect (OIDC), реализация протокола OAuth 2.0. В качестве провайдера удостоверений может выступать любой OIDC-совместимый провайдер, в частности, AD FS, Azure и Keycloak.
Интеграция провайдера удостоверений с облачным сервисом IAM позволяет осуществлять централизованное управление пользователями в облаке. При надлежащей настройке провайдера выполняется синхронизация групп между провайдером и К2 Облаком посредством механизма токенов. При добавлении или исключении пользователя из группы ему автоматически выдаются или отзываются права, которые предоставлены одноимённой группе провайдера удостоверений в облаке. Это позволяет регулировать доступ к облачным ресурсам без индивидуальной настройки привилегий для каждого пользователя.
Примечание
Пользователи, которые для регистрации в К2 Облаке задействуют провайдера удостоверений, рассматриваются облаком как временные. Соответственно, мы рекомендуем таким пользователям работать только через веб-интерфейс, а их локальные учётные записи не следует использовать в средствах автоматизации. Для этих целей лучше по-прежнему создавать обычных пользователей облака.
Примечание
Интеграция с провайдером удостоверений позволяет регулировать доступ ко всем облачным ресурсам. В одном из ближайших релизов мы планируем реализовать возможность авторизации в объектном хранилище с помощью провайдера удостоверений.
Чтобы пользователи Active Directory, Azure или Keycloak могли работать в К2 Облаке, необходимо осуществить предварительную настройку провайдера удостоверений, настроить точку интеграции в К2 Облаке и создать группы с требуемыми привилегиями.
Внимание
При подключении пользователя к облаку провайдер удостоверений должен обязательно передавать следующие свойства (Claims):
upn или preferred_username с уникальным идентификатором пользователя (логин, адрес электронной почты и т.п);
group или groups со списком групп (в облаке необходимо указать названия групп точно в том виде, в каком они передаются в id_token).
Примечание
Для входа в облако пользователям следует использовать ссылку вида https://<name>.idp.k2.cloud, где <name> — имя провайдера в К2 Облаке.
Логирование в журнал действий#
В Журнал действий логируются события создания/удаления сессий веб-интерфейса. Если сессия создана в результате авторизации через провайдер удостоверений, то для неё создаются следующие события:
Событие с типом ADOpenSession при входе пользователя.
Событие с типом AutoCloseSession при автоматическом закрытии истёкшей сессии. Доступ прекращается на стороне провайдера удостоверений, поэтому данное событие наступает лишь спустя некоторое время после выхода пользователя.
Синхронизация между провайдером удостоверений и облаком#
Для синхронизации прав доступа используется механизм токенов. Облако периодически опрашивает сервер провайдера удостоверений и вносит необходимые изменения в привилегии пользователя. Например, при исключении из группы пользователь автоматически лишается проектных и административных привилегий, которые были назначены одноимённой группе провайдера удостоверений в облаке.
При первичном логине OpenId Connect присылает три ключа, или токена: id_token, access_token и, опционально, refresh_token. Первый содержит необходимую для авторизации информацию (логин пользователя и имя группы), второй предоставляет ключ для доступа к ресурсам, а третий используется для обновления ключей. Два последних токена имеют предопределённое время жизни (каждый своё).
Синхронизация основана на механизме повторного запроса токенов облаком раз в 15 минут с использованием refresh_token. Если провайдер удостоверений настроен так, что refresh_token не присылается, то синхронизация не работает и пользователь блокируется по истечении периода жизни access_token.
Если refresh_token передаётся, то токены повторно запрашиваются каждые 15 минут, в том числе id_token. При изменении содержащейся в нём авторизационной информации, т.е. данных о принадлежности к группам, права пользователя будут обновлены в облаке.
По истечении времени жизни refresh_token пользователь будет заблокирован. Чтобы разблокировать пользователя в облаке, необходимо повторно пройти процедуру регистрации в облаке.
Настройка точки интеграции в облаке#
Для настройки точки интеграции в облаке необходимо создать провайдер. Если у вас в компании используется несколько служб каталогов Active Directory или Azure Active Directory, либо пространств Realm в Keycloak, то для каждого можно создать отдельный провайдер.
Создать провайдер#
Для настройки провайдера:
В веб-интерфейсе К2 Облака перейдите в раздел IAM Провайдеры удостоверений Провайдеры.
Нажмите Создать.
Задайте имя провайдера.
Примечание
Имя должно быть уникальным в пределах К2 Облака. Оно может состоять из латинских букв в нижнем регистре, цифр и дефисов и должно содержать не менее 4 и не более 10 символов.
При вводе имени внизу диалогового окна отображается сформированная ссылка на точку входа в консоль облака. Эту ссылку необходимо указать в качестве Redirect URI при настройке OpenID Connect в провайдере удостоверений.
В поле Идентификатор клиента вставьте Client Identifier, который вы задали при настройке провайдера удостоверений.
В поле Client secret вставьте клиентский секрет, который был сгенерирован при настройке провайдера удостоверений.
Укажите URL-адреса эндпоинтов для аутентификации, токенов и завершения сеанса. Ниже приведены примеры URL для AD FS, Azure и Keycloak (конкретный вид URL может отличаться).
Полный адрес до конечной точки OAuth по умолчанию имеет вид: https://<адрес_сервера>/adfs/oauth2/, где адрес_сервера — адрес сервера AD FS. Соответственно, вам необходимо указать следующие адреса:
https://<адрес_сервера>/adfs/oauth2/authorize в поле Auth URL;
https://<адрес_сервера>/adfs/oauth2/token в поле Token URL;
https://<адрес_сервера>/adfs/oauth2/logout в поле Logout URL.
Как получить URL-адреса эндпоинтов в случае Azure, описано в инструкции. Вам необходимо скопировать URL для authorization_endpoint, token_endpoint и end_session_endpoint. Ниже приведён пример возможных URL, которые следует указать в соответствующих полях:
https://login.microsoftonline.com/<directory_id>/oath2/v2.0/authorize в поле Auth URL;
https://login.microsoftonline.com/<directory_id>/oath2/v2.0/token в поле Token URL;
https://login.microsoftonline.com/<directory_id>/oath2/v2.0/logout в поле Logout URL.
Эндпоинты для Keycloak можно посмотреть в файле конфигурации для эндпоинтов OpenID Connect (подробнее смотри инструкцию по подключению Keycloak). Вам необходимо скопировать URL для authorization_endpoint, token_endpoint и end_session_endpoint. Ниже приведён пример возможных URL, которые следует указать в соответствующих полях:
https://<адрес_сервера>/realms/<имя_realm>/protocol/openid-connect/auth в поле Auth URL;
https://<адрес_сервера>/realms/<имя_realm>/protocol/openid-connect/token в поле Token URL;
https://<адрес_сервера>/realms/<имя_realm>/protocol/openid-connect/logout в поле Logout URL.
Нажмите Создать.
Изменить параметры провайдера#
На вкладке Информация на странице провайдера можно просмотреть текущие настройки точки интеграции (провайдера):
имя провайдера;
идентификатор клиента, который провайдер удостоверений использует для распознавания клиентского приложения;
клиентский секрет;
адреса эндпоинтов для аутентификации, токенов и завершения сеанса;
адрес точки входа в консоль облака для пользователей.
Там же вы можете изменить их значения. Для этого:
Перейдите в раздел IAM Провайдеры удостоверений Провайдеры.
Нажмите на имя провайдера в таблице ресурсов для перехода на его страницу.
Для редактирования конкретного параметра перейдите на вкладку Информация и нажмите на символ рядом с ним.
Примечание
Адрес точки входа меняется автоматически при изменении имени провайдера.
Удалить провайдер#
Внимание
При удалении провайдера пользователи соответствующего провайдера удостоверений потеряют доступ к К2 Облаку.
Провайдера можно удалить одним из следующих способов.
Этим способом можно удалить сразу несколько провайдеров:
Перейдите в раздел IAM Провайдеры удостоверений Провайдеры.
Выберите удаляемый провайдер в таблице ресурсов. Одновременно можно выбрать несколько провайдеров для удаления.
Нажмите Удалить.
Подтвердите действие в открывшемся окне.
Этим способом можно удалить только выбранный провайдер:
Перейдите в раздел IAM Провайдеры удостоверений Провайдеры.
Нажмите на имя провайдера в таблице для перехода на его страницу.
На вкладке Информация нажмите Удалить.
Подтвердите действие в открывшемся окне.
Управление группами провайдера удостоверений#
Группы позволяют управлять доступом пользователей к ресурсам К2 Облака. При входе в облако пользователи автоматически получают права в зависимости от принадлежности к той или иной группе. Если пользователь не принадлежит ни к одной группе или группе не назначены никакие привилегии в облаке, то пользователю будет доступен только просмотр его профиля.
Один и тот же пользователь может быть членом нескольких групп одновременно. Он получает совокупность привилегий, предоставленных в облаке этим группам. Группы могут иметь пересекающиеся привилегии.
Создать группу провайдера удостоверений#
Чтобы создать группу провайдера удостоверений в облаке:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Нажмите Создать.
В диалоговом окне выберите провайдер из раскрывающегося списка.
Задайте имя группы.
Примечание
Имя группы провайдера удостоверений должно в точности совпадать с именем группы, которое передаётся в Claims с именем group.
Нажмите Создать.
Если необходимо создать несколько групп, повторите указанные действия.
Подключить группу к проекту#
Чтобы члены группы провайдера могли пользоваться ресурсами конкретного проекта, необходимо добавить группу провайдера удостоверений в проект и назначить ей проектные привилегии. Привилегии можно задать сразу при добавлении проекта, либо определить их позже. Для задания привилегий надо включить группу провайдера удостоверений в группу IAM, либо назначить ей политику IAM (о привилегиях см. подробнее документацию на IAM). Мы рекомендуем использовать группы IAM вместо политик для предоставления привилегий.
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Проекты и нажмите Добавить.
В диалоговом окне выберите проект, к ресурсам которого вы хотите предоставить доступ членам группы. Нажмите Далее для перехода на следующий шаг.
Выберите группы IAM для предоставления привилегий в проекте и нажмите Выбрать. Подробнее о группах IAM и предоставляемых ими привилегиях можно прочитать в документации на IAM.
Данный шаг можно пропустить и предоставить привилегии с помощью политик. Нажмите Далее для перехода на следующий шаг.
Выберите политики IAM для предоставления привилегий в проекте и нажмите Выбрать. Подробнее о политиках IAM и предоставляемых ими привилегиях можно прочитать в документации на IAM. Если вы добавили группы, то политики можно не добавлять. Иначе необходимо выбрать хотя бы одну политику. Нажмите Добавить для сохранения привилегий группы в выбранном проекте.
Если группе провайдера удостоверений необходимо предоставить доступ к нескольким проектам, повторите описанные шаги.
Исключить группу из проекта#
При удалении группы провайдера удостоверений из проекта члены группы могут потерять доступ к некоторым ресурсам проекта. Какие ресурсы останутся доступны конкретному пользователю, зависит от того, какие ещё группы провайдера удостоверений, в которые он входит, добавлены в проект и какие привилегии они предоставляют.
Чтобы исключить группу из проекта:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Проекты.
Выберите проект в таблице ресурсов и нажмите Удалить. При этом сам проект не удаляется.
Подтвердите действие в открывшемся окне.
Внимание
Если удалить проект на странице проекта, то он будет удалён вместе со всеми ресурсами.
Удалить группу провайдера удостоверений#
При удалении группы провайдера удостоверений пользователи могут лишиться доступа к проектам, в которые эта группа была ранее добавлена. Какие проекты останутся доступны конкретному пользователю, зависит от того, в какие ещё группы он входит и в какие проекты добавлены эти группы.
Чтобы удалить группу:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Выберите удаляемую группу в таблице ресурсов. Одновременно можно удалить несколько групп.
Нажмите Удалить.
Подтвердите действие в открывшемся окне.
Кроме того, группу можно удалить на вкладке Информация на странице группы.
Настройка привилегий для группы#
Вы можете предоставить группе провайдера удостоверений доступ к ресурсам (или в терминологии облака — сервисам) того или иного проекта и задать административные привилегии. При этом такие привилегии получают все пользователи, которые являются членами этой группы. Настройка проектных и административных привилегий для группы осуществляется аналогично тому, как это делается для пользователей облака.
Добавить проектные привилегии#
Чтобы предоставить группе провайдера удостоверений доступ к ресурсам проекта:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Проекты и нажмите Настроить возле нужного проекта.
Откройте вкладку Группы или Политики в зависимости от того, каким образом вы хотите предоставить привилегии группе провайдера удостоверений. Нажмите Добавить.
В открывшемся окне выберите необходимые группы/политики IAM и нажмите Выбрать для включения в список на добавление.
Для сохранения выбранных привилегий нажмите Добавить.
Добавить административные привилегии#
Вы можете предоставить группе провайдера удостоверений административные привилегии на сервисы биллинга и IAM. Такие привилегии в облаке получат все пользователи, которые являются членами этой группы, поэтому рекомендуем предоставлять их с осторожностью. Более подробная информация об административных привилегиях приведена в документации на IAM.
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Административные привилегии и нажмите Настроить.
Откройте вкладку Группы или Политики в зависимости от того, каким образом вы хотите предоставить привилегии группе провайдера удостоверений. Нажмите Добавить.
В открывшемся окне выберите необходимые группы/политики IAM и нажмите Выбрать для включения в список на добавление.
Для сохранения выбранных привилегий нажмите Добавить.
Ограничить проектные привилегии#
Чтобы ограничить пользователям из группы провайдера удостоверений доступ к ресурсам проекта:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Проекты и нажмите Настроить возле нужного проекта.
Откройте вкладку Группы или Политики в зависимости от того, какие привилегии вы хотите удалить.
Выберите удаляемые группы/политики IAM в таблице ресурсов и нажмите Удалить.
Подтвердите действие в открывшемся окне.
Примечание
Пользователи могут сохранить доступ к ресурсам проекта, если аналогичные привилегии им предоставлены в других группах.
Ограничить административные привилегии#
Чтобы ограничить административные привилегии для пользователей группы провайдера удостоверений:
Перейдите в раздел IAM Провайдеры удостоверений Группы.
Выберите необходимый провайдер в раскрывающемся списке.
Найдите группу в таблице ресурсов и нажмите на идентификатор группы для перехода на её страницу.
Откройте вкладку Административные привилегии и нажмите Настроить.
Откройте вкладку Группы или Политики в зависимости от того, какие привилегии вы хотите удалить.
Выберите удаляемые группы/политики IAM в таблице ресурсов и нажмите Удалить.
Подтвердите действие в открывшемся окне.
Настройка точки интеграции для провайдера удостоверений#
Настроить точку интеграции в AD FS#
Для использования Active Directory Federation Service (AD FS) в качестве провайдера удостоверений для К2 Облака необходимо предварительно настроить точку интеграции в AD FS.
При надлежащих настройках пользователи смогут использовать свою локальную учётную запись для авторизации в облаке. Если пользователь уже осуществил вход в локальную учётную запись, то вход в облако выполняется автоматически благодаря поддержке однократной регистрации (Single Sign-On, SSO).
Примечание
У вас должна быть установлена и настроена серверная ферма AD FS. В пошаговой инструкции описывается настройка AD FS для Windows Server 2016.
Настроить конфигурацию OpenID Connect в AD FS#
Для подключения к К2 Облаку по протоколу OpenID Connect необходимо настроить Application Groups.
Откройте панель управления AD FS Management в меню Tools в правом верхнем углу Server Manager сервера AD FS.
Выберите пункт Application Groups в меню слева.
Нажмите Add Application Group… в меню справа или щёлкните правой кнопкой мыши на Application Groups и выберите Add Application Group….
Задайте произвольное имя для Application Group, выберите Server application accessing a web API в блоке Client-Server Applications и нажмите Next.
Скопируйте и сохраните Client Identifier, он потребуется на одном из следующих шагов и при настройке точки интеграции в К2 Облаке. Клиентский идентификатор используется AD FS для распознавания клиентского приложения.
Вставьте в поле Redirect URI адрес https://<name>.idp.k2.cloud, где <name> — имя провайдера в К2 Облаке, и нажмите Add. Для перехода на следующий шаг нажмите Next.
Сгенерируйте клиентский секрет, выбрав пункт Generate a shared secret. Сохраните секрет — он необходим для настройки точки интеграции в облаке. Если вы утратите секрет, то его придётся сгенерировать заново. Для перехода на следующий шаг нажмите Next.
В поле Identifier укажите сохранённый Client Identifier и нажмите Add. Для перехода на следующий шаг нажмите Next.
Выберите политику контроля доступа в соответствии с принятыми корпоративными правилами.
Настройте разрешения для доступа клиентских приложений. Необходимо включить опции allatclaims и openid.
Проверьте заданные параметры и завершите создание Application Group.
Настроить Claims для Active Directory#
Примечание
В случае AD FS специально задавать свойство (claim) upn не нужно — оно формируется автоматически.
Чтобы информация о принадлежности пользователей к тем или иным группам передавалась в облако, необходимо настроить Claims для пользовательских групп.
Откройте панель управления AD FS Management в меню Tools в правом верхнем углу Server Manager сервера AD FS.
Выберите пункт Application Groups в меню слева.
Дважды нажмите на имя ранее созданной Application Group, выберите Web API и нажмите Edit.
Откройте вкладку Issuance transform rule и нажмите Add rule….
Выберите
Send LDAP Attributes as Claims
в качестве Claim rule template и нажмите Next.Задайте имя правила и выберите
Active Directory
в качестве Attribute Store.В таблице ниже выберите
Token-Groups Unqualified Names
в качестве LDAP Attribute иGroup
в качестве Outgoing Claim Type.Примечание
Использование Unqualified Name не является обязательным и приведено в качестве примера возможных настроек.
Нажмите Finish для создания правила и закройте окна редактирования свойств.
Настроить точку интеграции в Azure#
Для использования Azure в качестве провайдера удостоверений для К2 Облака необходимо предварительно зарегистрировать и настроить приложение в Azure Active Directory.
Зарегистрировать приложение в Azure Active Directory#
Получить настройки для точки интеграции в К2 Облаке#
После регистрации приложения следует сохранить необходимые параметры для настройки точки интеграции в К2 Облаке.
Откройте страницу созданного приложения (после регистрации она открывается автоматически) и в разделе Overview скопируйте и сохраните Application (client) ID. Его необходимо указать в качестве Client ID при настройке провайдера в К2 Облаке.
Кроме того, вам потребуются URL-адреса эндпоинтов для аутентификации, токенов и завершения сеанса. Чтобы их получить, в разделе Overview нажмите на Endpoints и скопируйте ссылку на OpenID Connect metadata document.
Перейдите по скопированной ссылке и в открывшемся документе найдите и сохраните ссылки на authorization_endpoint, token_endpoint и end_session_endpoint.
Чтобы сгенерировать клиентский секрет, в меню Manage перейдите в раздел Certificates & secrets и на вкладке Client secrets нажмите New client secret. На открывшейся странице задайте описание секрета и срок жизни и нажмите Add. Скопируйте и сохраните значение секрета.
Внимание
Секрет необходимо сразу сохранить. При повторном открытии вкладки Client secrets секрет будет скрыт и вам придётся генерировать его заново.
Теперь у вас есть всё необходимое, чтобы настроить точку интеграции в К2 Облаке. После её настройки можно завершить конфигурацию приложения в Azure Active Directory.
Настроить приложение в Azure Active Directory#
Приложению необходимо указать точку входа в консоль К2 Облака. Для этого перейдите в раздел Authentication и нажмите Add platform. В открывшемся окне выберите карточку Web и в поле Redirect URI введите ссылку на точку входа, которая была сформирована при создании провайдера в К2 Облаке (https://<name>.idp.k2.cloud). Нажмите Configure.
Настройте разрешения для API. Для этого перейдите в раздел API Permissions и нажмите Add a permission. Перейдите на карточку Microsoft Graph и далее откройте карточку Delegated permissions. Выберите следующие разрешения для OpenId: offline_access, openid и profile. Нажмите Add permissions, чтобы их сохранить.
Далее необходимо настроить свойства (Claims). Для этого перейдите в раздел Token Configuration и нажмите Add group claims. На открывшейся странице в блоке Select group types to include in Access, ID, and SAML tokens выберите Security Groups. В блоке Customize token properties by type выберите sAMAccountName в качестве типа ID.
Примечание
Идентификатор sAMAccountName доступен только для синхронизированных пользователей Windows Server Active Directory, в противном случае будет присылаться Group ID. Подробнее о конфигурации свойств групп см. в документации Microsoft.
Нажмите Add, чтобы сохранить параметры.
Настроить точку интеграции в Keycloak#
Для использования Keycloak в качестве провайдера удостоверений для К2 Облака необходимо настроить соответствующее клиентское подключение.
Настроить конфигурацию клиента OpenID Connect в Keycloak#
Сначала необходимо создать клиента с типом OpenID Connect.
В административной консоли Keycloak выберите необходимое пространство Realm.
В разделе меню Manage выберите пункт Clients и нажмите Create client.
На шаге общих настроек в качестве Client Type выберите
OpenID Connect
и задайте имя клиента в поле Client ID. Нажмите Next для перехода на следующий шаг.На шаге конфигурации опций аутентификации включите Client Authentication и проверьте, что для Authentication flow выбрана опция Standard flow.
Для создания клиента нажмите Save.
Далее для созданного клиента необходимо задать точку входа в облако:
В разделе Clients в списке Clients List выберите созданного клиента и откройте его Client details.
На вкладке Settings найдите поле Valid Redirect URI и укажите адрес https://<name>.idp.k2.cloud, где <name> — имя провайдера в К2 Облаке.
Кроме того, вам потребуется следующая информация для настройки точки интеграции в облаке:
Клиентский секрет. Его можно найти на вкладке Credentials на странице Client Details.
Адреса эндпоинтов. Конфигурацию эндпоинтов можно посмотреть, перейдя по ссылке OpenID Endpoint Configuration на вкладке General на странице используемого пространства Realm в разделе Realm settings.
Настроить Claims#
Claims в Keycloak можно настроить разными способами. Ниже кратко описана одна из возможных схем.
В разделе Client scopes создайте новый контекст или выберите существующий, который вы хотите использовать для клиента.
После выбора нужного контекста перейдите на вкладку Mappers и нажмите Configure a new mapper в случае нового клиента или Add mapper и By configuration для существующего.
Чтобы задать свойство (claim) upn, выберите, например, User Attribute. В поле Name укажите произвольное имя для отображения (mapper), а в поле User Attribute — имя атрибута, из которого будет извлекаться идентификатор пользователя, например login. В поле Token Claim Name введите
upn
.Чтобы задать свойство (claim) group, выберите Group Membership. В поле Name укажите произвольное имя для отображения (mapper), а в поле Token Claim Name введите
group
.Назначьте созданный контекст вашему клиенту, если он не был ещё ему назначен. Чтобы контекст был применён, при его добавлении надо выбрать опцию Default.
Чтобы проверить, какие свойства (claims) пользователя будут передаваться в облако:
Откройте Client scopes на странице Clients details вашего клиента.
Перейдите на вкладку Evaluate и введите имя пользователя в поле User.
Нажмите Generated ID token в меню справа, чтобы посмотреть сгенерированный токен.