Поделиться через


Защита внутренних служб с помощью проверки подлинности на основе сертификата клиента в службе "Управление API" Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни управления API

Управление API позволяет защитить доступ к серверной службе API с помощью сертификатов клиента и взаимной проверки подлинности TLS. В этом руководстве описывается, как управлять сертификатами на портале Azure в экземпляре службы Azure API Management. Также вы узнаете, как настроить для API доступ к внутренней службе с использованием сертификата.

Вы также можете управлять сертификатами для Управления API с помощью REST API службы "Управление API".

Варианты использования сертификата

Управление API поддерживает два варианта управления сертификатами для защиты доступа к внутренним службам:

  • ссылка на сертификат, управляемый в Azure Key Vault;
  • добавление файла сертификата непосредственно в Управление API.

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

  • сертификаты, хранящиеся в хранилищах ключей, можно многократно использовать в разных службах;
  • к сертификатам, хранящимся в хранилищах ключей, можно применять детализированные политики доступа;
  • Обновленные в хранилище ключей сертификаты автоматически поворачиваются в системе управления API. После обновления сертификата в хранилище ключей он обновится в Управлении API в течение 4 часов. Можно также вручную обновить сертификат с помощью портала Azure или REST API управления.

Предварительные требования

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. Перенос Azure PowerShell с AzureRM на Az.

  • Если вы еще не создали экземпляр службы управления API, см. статью Создание экземпляра службы управления API Azure.

  • Во внутренней службе должна быть настроена проверка подлинности с помощью сертификата клиента. Настройка проверки подлинности в Службе приложений Azure с помощью сертификата описана в этой статье.

  • Вам нужен доступ к сертификату и паролю управления, чтобы управлять им в хранилище ключей Azure или отправить в службу "Управление API". Этот сертификат должен быть в формате PFX. Разрешено использовать самозаверяющие сертификаты.

    Если вы используете самозаверяющий сертификат:

    • Установите доверенные корневые и промежуточные сертификаты УЦ в экземпляре управления API.

      Примечание.

      Сертификаты ЦС для проверки сертификатов не поддерживаются на уровне потребления.

    • Отключение проверки цепочки сертификатов

Предварительные требования для интеграции с хранилищем ключей

Примечание.

В настоящее время эта функция недоступна в рабочих областях.

  1. Если у вас еще нет хранилища ключей, создайте его. Инструкции по созданию хранилища ключей см. в разделе Краткое руководство. Создание хранилища ключей с помощью портала Azure.

    Сведения о создании или импорте сертификата в хранилище ключей см. в кратком руководстве по настройке и получению сертификата из Azure Key Vault с помощью портала Azure.

  2. Включите системное или пользовательское управляемое удостоверение в экземпляре API Management.

Настройка доступа к хранилищу ключей

  1. На портале перейдите к хранилищу ключей.
  2. В меню слева выберите конфигурацию Access и запишите настроенную модель разрешений.
  3. В зависимости от модели разрешений настройте либо политику доступа к хранилищу ключей, либо доступ Azure RBAC для управляемого удостоверения в API Management.

Чтобы добавить политику доступа к хранилищу ключей, выполните следующие действия.

  1. В меню слева выберите политики доступа.
  2. На странице политик доступа нажмите кнопку +Создать.
  3. На вкладке "Разрешения" в разделе "Разрешения секрета" выберите "Получить" и "Список", а затем нажмите кнопку "Далее".
  4. На вкладке "Субъект" выберите субъект, найдите имя ресурса управляемого удостоверения, а затем нажмите Далее. Если вы используете назначаемое системой удостоверение, субъектом является имя экземпляра Управления API.
  5. Снова выберите Далее. На вкладке Проверить и создать выберите Создать.

Требования к брандмауэру хранилища ключей

Если в вашем хранилище ключей включен брандмауэр хранилища ключей, существуют дополнительные требования.

  • Для доступа к хранилищу ключей необходимо использовать системно назначенное управляемое удостоверение экземпляра управления API.

  • В брандмауэре хранилища ключей установите флажок Разрешить доверенным службам Майкрософт обходить этот брандмауэр.

  • Убедитесь, что IP-адрес локального клиента временно может получить доступ к хранилищу ключей при выборе сертификата или секрета для добавления в Azure API Management. Дополнительные сведения см. в разделе Настройка сетевых параметров Azure Key Vault.

    После завершения настройки можно заблокировать адрес клиента в брандмауэре хранилища ключей.

Требования к виртуальной сети

Если экземпляр службы управления API развернут в виртуальной сети, настройте также следующие параметры сети.

  • Включите конечную точку службы для Azure Key Vault в подсети службы управления API.
  • Настройте правило группы безопасности сети (NSG), разрешающее исходящий трафик для тегов службы AzureKeyVault и AzureActiveDirectory.

Дополнительные сведения приведены в статье Конфигурация сети при настройке Управления API Azure в виртуальной сети.

Добавление сертификата, размещенного в хранилище ключей

См. Предварительные требования для интеграции хранилища ключей.

Внимание

При добавлении сертификата хранилища ключей в экземпляр Управление API необходимо иметь разрешения на получение списка секретов из хранилища ключей.

Внимание

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

Чтобы добавить в Управление API сертификат, размещенный в хранилище ключей, выполните следующие действия.

  1. Перейдите к экземпляру Управления API на портале Azure.

  2. В разделе Безопасность выберите Сертификаты.

  3. Выберите Сертификаты>Добавить.

  4. В поле Идентификатор введите любое имя.

  5. В разделе Сертификатвыберите Хранилище ключей.

  6. Введите идентификатор сертификата, размещенного в хранилище ключей, или щелкните Выбрать, чтобы выбрать сертификат из хранилища ключей.

    Внимание

    Если вы вводите идентификатор сертификата, размещенного в хранилище ключей, убедитесь, что в нём отсутствует информация о версии. В противном случае сертификат не будет автоматически сменяться в Управлении API после обновления в хранилище ключей.

  7. В списке Удостоверение клиента выберите назначаемое системой или существующее управляемое удостоверение, назначаемое пользователем. Узнайте, как добавлять или изменять управляемые удостоверения в службе управления API.

    Примечание.

    Удостоверению требуются разрешения на получение и перечисление сертификата из хранилища ключей. Если вы еще не настроили доступ к хранилищу ключей, в службе управления API появится запрос на автоматическую настройку удостоверения с необходимыми разрешениями.

  8. Выберите Добавить.

    Снимок экрана: добавление сертификата Key Vault к Управлению API на портале.

  9. Выберите Сохранить.

Загрузить сертификат

Чтобы передать сертификат клиента в Управление API, выполните следующие действия.

  1. Войдите в ваш экземпляр службы управления API в портале Azure.

  2. В разделе Безопасность выберите Сертификаты.

  3. Выберите Сертификаты>+ Добавить.

  4. В поле Идентификатор введите любое имя.

  5. В списке Сертификат выберите Пользовательский.

  6. Найдите PFX-файл сертификата, выберите его и введите соответствующий пароль.

  7. Выберите Добавить.

    Снимок экрана: отправка сертификата клиента в Управление API на портале.

  8. Выберите Сохранить.

Отправленный сертификат отобразится на вкладке Сертификаты. Если у вас несколько сертификатов, сохраните отпечаток необходимого сертификата, чтобы настроить в API проверку подлинности шлюза на основе сертификата клиента.

Настройка проверки подлинности шлюза с помощью сертификата клиента в API

  1. На портале Azure перейдите к экземпляру Управления API.

  2. В разделе Интерфейсы API выберите Интерфейсы API.

  3. Выберите нужный API из списка.

  4. На вкладке Конструктор щелкните значок редактора в разделе Бэкэнд.

  5. Для параметра Учетные данные шлюза выберите значение Сертификат клиента, а затем выберите свой сертификат в раскрывающемся списке.

  6. Выберите Сохранить.

    Использование сертификата клиента для проверки подлинности шлюза

Внимание

Изменение вступает в силу немедленно, и с этого момента для проверки подлинности на сервере внутренней службы при вызове операций этого 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

Вы также можете отключить проверку цепочки сертификатов с помощью Backend REST API.

Удаление сертификата клиента

Чтобы удалить сертификат, выберите его и в контекстном меню (...) выберите действие Удалить.

Удаление сертификата

Внимание

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