Защита внутренних служб с помощью проверки подлинности на основе сертификата клиента в службе "Управление 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. Разрешено использовать самозаверяющие сертификаты.

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

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

Примечание.

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

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

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

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

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

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

  2. В меню слева выберите конфигурацию Access и запишите настроенную модель разрешений.

  3. В зависимости от модели разрешений настройте политику доступа к хранилищу ключей или доступ Azure RBAC для управляемого удостоверения Управление API.

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

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

    Чтобы настроить доступ к Azure RBAC, выполните приведенные действия.

    1. В меню слева выберите Управление доступом (IAM).
    2. На странице управления доступом (IAM) выберите " Добавить назначение роли".
    3. На вкладке "Роль" выберите "Пользователь сертификата Key Vault".
    4. На вкладке "Члены" выберите "Управляемое удостоверение>" и "Выбрать участников".
    5. На странице "Выбор управляемого удостоверения" выберите управляемое удостоверение, назначаемое системой, или назначаемое пользователем управляемое удостоверение, связанное с экземпляром Управление API, а затем нажмите кнопку "Выбрать".
    6. Выберите Проверить + назначить.

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

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

  • Для доступа к хранилищу ключей необходимо использовать назначаемое системой управляемое удостоверение экземпляра службы управления 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. Выберите Добавить.

    Снимок экрана: добавление сертификата хранилища ключей для Управление API на портале.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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

Вы также можете отключить проверку цепочки сертификатов с помощью СЕРВЕРНОГО REST API.

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

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

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

Внимание

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

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