Защита внутренних служб с помощью проверки подлинности на основе сертификата клиента в службе "Управление API" Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API
Управление API позволяет защитить доступ к серверной службе API с помощью сертификатов клиента и взаимной проверки подлинности TLS. В этом руководстве описывается, как на портале Azure управлять сертификатами в экземпляре службы "Управление API" Azure. Также вы узнаете, как настроить для API доступ к внутренней службе с использованием сертификата.
Вы также можете управлять сертификатами для Управления API с помощью REST API службы "Управление API".
Варианты использования сертификата
Управление API поддерживает два варианта управления сертификатами для защиты доступа к внутренним службам:
- ссылка на сертификат, управляемый в Azure Key Vault;
- добавление файла сертификата непосредственно в Управление API.
Мы рекомендуем всегда использовать сертификаты в хранилище ключей, так как это улучшает безопасность Управления API:
- сертификаты, хранящиеся в хранилищах ключей, можно многократно использовать в разных службах;
- к сертификатам, хранящимся в хранилищах ключей, можно применять детализированные политики доступа;
- при обновлении сертификатов в хранилище ключей они автоматически сменяются и в Управлении API. После обновления сертификата в хранилище ключей он обновится в Управлении API в течение 4 часов. Можно также вручную обновить сертификат с помощью портала Azure или REST API управления.
Предварительные требования
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Если экземпляр службы "Управление API" еще не создан, воспользуйтесь статьей Создание экземпляра службы управления API Azure.
Во внутренней службе должна быть настроена проверка подлинности с помощью сертификата клиента. Настройка проверки подлинности в Службе приложений Azure с помощью сертификата описана в этой статье.
Вам нужен доступ к сертификату и паролю управления, чтобы управлять им в хранилище ключей Azure или отправить в службу "Управление API". Этот сертификат должен быть в формате PFX. Разрешено использовать самозаверяющие сертификаты.
Если вы используете самозаверяющий сертификат:
Установите доверенные корневые и промежуточные сертификаты ЦС в экземпляре Управление API.
Примечание.
Сертификаты ЦС для проверки сертификатов не поддерживаются на уровне потребления.
Предварительные требования для интеграции с хранилищем ключей
Примечание.
В настоящее время эта функция недоступна в рабочих областях.
Если у вас еще нет хранилища ключей, создайте его. Инструкции по созданию хранилища ключей см. в разделе Краткое руководство. Создание хранилища ключей с помощью портала Azure.
Сведения о создании или импорте сертификата в хранилище ключей см. в кратком руководстве по настройке и получению сертификата из Azure Key Vault с помощью портал Azure.
Включите назначаемое системой или назначаемое пользователем управляемое удостоверение в экземпляре Управления API.
Настройка доступа к хранилищу ключей
На портале перейдите к хранилищу ключей.
В меню слева выберите конфигурацию Access и запишите настроенную модель разрешений.
В зависимости от модели разрешений настройте политику доступа к хранилищу ключей или доступ Azure RBAC для управляемого удостоверения Управление API.
Чтобы добавить политику доступа к хранилищу ключей, выполните следующие действия.
- В меню слева выберите политики доступа.
- На странице политик доступа нажмите кнопку +Создать.
- На вкладке "Разрешения" в разделе "Разрешения секрета" выберите "Получить" и "Список", а затем нажмите кнопку "Далее".
- На вкладке "Субъект" выберите субъект, найдите имя ресурса управляемого удостоверения и нажмите кнопку "Далее". Если вы используете назначаемое системой удостоверение, субъектом является имя экземпляра Управления API.
- Снова выберите Далее. На вкладке Проверить и создать выберите Создать.
Чтобы настроить доступ к Azure RBAC, выполните приведенные действия.
- В меню слева выберите Управление доступом (IAM).
- На странице управления доступом (IAM) выберите " Добавить назначение роли".
- На вкладке "Роль" выберите "Пользователь сертификата Key Vault".
- На вкладке "Члены" выберите "Управляемое удостоверение>" и "Выбрать участников".
- На странице "Выбор управляемого удостоверения" выберите управляемое удостоверение, назначаемое системой, или назначаемое пользователем управляемое удостоверение, связанное с экземпляром Управление API, а затем нажмите кнопку "Выбрать".
- Выберите Проверить + назначить.
Требования к брандмауэру хранилища ключей
Если хранилище ключей поддерживает брандмауэр, см. дополнительные требования ниже.
Для доступа к хранилищу ключей необходимо использовать назначаемое системой управляемое удостоверение экземпляра службы управления API.
В брандмауэре хранилища ключей установите флажок Разрешить доверенным службам Майкрософт обходить этот брандмауэр.
Убедитесь, что IP-адрес локального клиента временно может получить доступ к хранилищу ключей при выборе сертификата или секрета для добавления в Azure API Management. Дополнительные сведения см. в разделе Настройка сетевых параметров Azure Key Vault.
После завершения настройки можно заблокировать адрес клиента в брандмауэре хранилища ключей.
Требования к виртуальной сети
Если экземпляр службы управления API развернут в виртуальной сети, настройте также следующие параметры сети.
- Включите конечную точку службы для Azure Key Vault в подсети службы управления API.
- Настройте правило группы безопасности сети (NSG), разрешающее исходящий трафик для тегов службы AzureKeyVault и AzureActiveDirectory.
Дополнительные сведения приведены в статье Конфигурация сети при настройке Управления API Azure в виртуальной сети.
Добавление сертификата, размещенного в хранилище ключей
См. Предварительные требования для интеграции хранилища ключей.
Внимание
При добавлении сертификата хранилища ключей в экземпляр Управление API необходимо иметь разрешения на получение списка секретов из хранилища ключей.
Внимание
При использовании в Управлении API сертификата, размещенного в хранилище ключей, важно соблюдать осторожность, чтобы случайно не удалить сертификат, хранилище ключей или управляемое удостоверение для доступа к хранилищу ключей.
Чтобы добавить в Управление API сертификат, размещенный в хранилище ключей, выполните следующие действия.
Перейдите к экземпляру Управления API на портале Azure.
В разделе Безопасность выберите Сертификаты.
Щелкните Сертификаты>Добавить.
В поле Идентификатор введите любое имя.
В разделе Сертификатвыберите Хранилище ключей.
Введите идентификатор сертификата, размещенного в хранилище ключей, или щелкните Выбрать, чтобы выбрать сертификат из хранилища ключей.
Внимание
Если вы вводите идентификатор сертификата, размещенного в хранилище ключей, не следует указывать сведения о версии сертификата. В противном случае сертификат не будет автоматически сменяться в Управлении API после обновления в хранилище ключей.
В списке Удостоверение клиента выберите назначаемое системой или существующее управляемое удостоверение, назначаемое пользователем. Узнайте, как добавлять или изменять управляемые удостоверения в своей службе Управления API.
Примечание.
Удостоверению требуются разрешения на получение сертификатов и списка сертификатов из хранилища ключей. Если вы еще не настроили доступ к хранилищу ключей, в службе управления API появится запрос на автоматическую настройку удостоверения с необходимыми разрешениями.
Выберите Добавить.
Выберите Сохранить.
Загрузить сертификат
Чтобы передать сертификат клиента в Управление API, выполните следующие действия.
Перейдите к экземпляру Управления API на портале Azure.
В разделе Безопасность выберите Сертификаты.
Щелкните Сертификаты>Добавить.
В поле Идентификатор введите любое имя.
В списке Сертификат выберите Пользовательский.
Найдите PFX-файл сертификата, выберите его и введите соответствующий пароль.
Выберите Добавить.
Выберите Сохранить.
Отправленный сертификат отобразится на вкладке Сертификаты. Если у вас несколько сертификатов, сохраните отпечаток необходимого сертификата, чтобы настроить в API проверку подлинности шлюза на основе сертификата клиента.
Настройка проверки подлинности шлюза с помощью сертификата клиента в API
Перейдите к экземпляру Управления API на портале Azure.
В разделе Интерфейсы API выберите Интерфейсы API.
Выберите нужный API из списка.
На вкладке Конструктор щелкните значок редактора в разделе Внутренняя служба.
Для параметра Учетные данные шлюза выберите значение Сертификат клиента, а затем выберите свой сертификат в раскрывающемся списке.
Выберите Сохранить.
Внимание
Изменение вступает в силу немедленно, и с этого момента для проверки подлинности на сервере внутренней службы при вызове операций этого API будет использоваться сертификат.
Совет
Если для проверки подлинности шлюза при доступе к внутренней службе API настроен сертификат, он становится частью политики для этого API, и его можно просмотреть в редакторе политики.
Отключение проверки цепочки сертификатов для самозаверяемых сертификатов
Если вы используете самозаверяющие сертификаты, вам потребуется отключить проверку цепочки сертификатов, чтобы служба "Управление API" могла взаимодействовать с системой внутренней службы. В противном случае будет возвращена ошибка с кодом 500. Для этого используйте командлеты PowerShell New-AzApiManagementBackend
(для новой внутренней службы) или Set-AzApiManagementBackend
(для существующей внутренней службы) и задайте для параметра -SkipCertificateChainValidation
значение True
.
$context = New-AzApiManagementContext -resourcegroup 'ContosoResourceGroup' -servicename 'ContosoAPIMService'
New-AzApiManagementBackend -Context $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true
Вы также можете отключить проверку цепочки сертификатов с помощью СЕРВЕРНОГО REST API.
Удаление сертификата клиента
Чтобы удалить сертификат, выберите его и в контекстном меню (...) выберите действие Удалить.
Внимание
Если на этот сертификат ссылается хотя бы одна политика, появится окно с предупреждением об этом. Перед удалением сертификата необходимо сначала удалить его из всех политик, в которые настроено его использование.