Защита управляющей программы

В этой статье описывается, как размещать приложения управляющих программ в доверенной и защищенной среде Microsoft Azure Maps.

Вот несколько примеров приложений управляющих программ:

  • веб-задания Azure;
  • Приложение-функция Azure
  • Службы Windows
  • надежная служба, выполняемая в фоновом режиме.

Просмотр сведений о проверке подлинности в Azure Maps

Чтобы просмотреть сведения о проверке подлинности учетной записи Azure Maps на портале Azure, сделайте следующее:

  1. Войдите на портал Azure.

  2. Перейдите в меню портала Azure. Выберите Все ресурсы, а затем учетную запись Azure Maps.

  3. В разделе Параметры на панели слева выберите Проверка подлинности.

    Подробные сведения о проверке подлинности.

Вместе с учетной записью Azure Maps создаются три значения. Они используются для поддержки двух типов проверки подлинности в Azure Maps:

  • Проверка подлинности Azure Active Directory.Client ID представляет учетную запись, которая будет использоваться для запросов REST API. Значение Client ID должно храниться в конфигурации приложения и извлекаться перед выполнением HTTP-запросов Azure Maps, использующих проверку подлинности Azure AD.
  • Проверка подлинности с помощью общего ключа. Primary Key и Secondary Key используются в качестве ключа подписки для проверки подлинности с помощью общего ключа. Принцип проверки подлинности с помощью общего ключа заключается в передаче с каждым запросом в Azure Maps ключей, созданных в учетной записи Azure Maps. Рекомендуется регулярно повторно создавать ключи. Для обслуживания текущего подключения во время повторного создания вам буде доступно два ключа. Когда один ключ повторно создается, вы можете использовать второй. Если вы генерируете новые ключи, вам необходимо обновить данные о ключах для всех приложений, которые используют эту учетную запись. Дополнительные сведения см. в статье Проверка подлинности в Azure Maps.

Важно!

Для рабочих приложений рекомендуется реализовать Azure AD с управлением доступом на основе ролей Azure (Azure RBAC). Обзор понятий, применяемых в Azure Active Directory, см. в статье Проверка подлинности в Azure Maps.

Сценарий. Проверка подлинности на основе общего ключа, размещенного в Azure Key Vault

Приложения, которые используют проверку подлинности на основе общего ключа, должны размещать свои ключи в защищенном хранилище. В этом сценарии описано, как безопасно хранить ключ приложения в виде секрета в Azure Key Vault. Вместо того чтобы размещать общий ключ в конфигурации приложения, его можно получать из секрета Azure Key Vault. Чтобы упростить повторное создание ключей, рекомендуется использовать их поочередно. Тогда приложения смогут обновлять неиспользуемый ключ и развертывать его в Azure Key Vault, не нарушая действующие подключения, основанные на основном ключе. Сведения о настройке Azure Key Vault см. в статье Руководство для разработчиков Azure Key Vault.

Важно!

В этом сценарии выполняется непрямой доступ к Azure Active Directory через Azure Key Vault. Но мы рекомендуем явным образом использовать проверку подлинности AAD. Прямое использование AAD позволяет избежать ненужной сложности и дополнительных требований по настройке проверки подлинности по общему ключу и хранилища в Key Vault.

Процесс настройки включает следующие шаги.

  1. Создайте хранилище Azure Key Vault.
  2. Создайте субъект-службу Azure Active Directory, создав регистрацию или управляемое удостоверение приложения. Созданный таким образом субъект будет отвечать за доступ к Azure Key Vault.
  3. Предоставьте субъекту-службе разрешение get на доступ к секретам Azure Key. Сведения о настройке разрешений см. в статье Назначение политики доступа Key Vault с помощью портала Microsoft Azure.
  4. Временно предоставьте себе как разработчику разрешение set на доступ к секретам.
  5. Задайте общий ключ в разделе секретов Key Vault и укажите ссылку на идентификатор секрета в конфигурации управляющей программы.
  6. Удалите разрешение set для этого секрета.
  7. Чтобы извлекать секрет общего ключа из Azure Key Vault, реализуйте в управляющей программе проверку подлинности AAD.
  8. Создайте запрос к REST API для Azure Maps с использованием общего ключа. Теперь управляющая программа сможет получать общий ключ из настроенного хранилища Key Vault.

Совет

Если приложение размещается в среде Azure, мы рекомендуем применять управляемое удостоверение, чтобы снизить стоимость и сложность решения, обходясь без управления секретами для проверки подлинности. Сведения о настройке управляемого удостоверения см. в статье Использование управляемого удостоверения для подключения Key Vault к веб-приложению Azure (.NET).

Сценарий: управление доступом на основе ролей в Azure AD

После создания учетной записи Azure Maps значение Client ID для Azure Maps появляется на странице сведений о проверке подлинности на портале Azure. Это значение представляет учетную запись, которая будет использоваться для запросов REST API. Это значение нужно хранить в конфигурации приложения и извлекать перед выполнением HTTP-запросов. Этот сценарий реализуется для того, чтобы позволить управляющей программе проходить проверку подлинности в Azure AD и вызывать интерфейсы REST API для Azure Maps.

Совет

Чтобы получить преимущества, характерные для компонентов управляемого удостоверения, рекомендуем разместить приложение на виртуальных машинах Azure, в масштабируемых наборах виртуальных машин или Службе приложений Azure.

Размещение управляющей программы на ресурсах Azure

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

В обзоре управляемых удостоверений для ресурсов Azure описано, как предоставить приложению доступ к управляемому удостоверению.

Вот некоторые преимущества управляемого удостоверения:

  • Проверка подлинности с шифрованием открытого ключа с помощью сертификата X509, управляемого системой Azure.
  • Безопасность Azure AD за счет сертификатов X509 вместо секретов клиента.
  • Azure обновляет все сертификаты, связанные с ресурсом "Управляемое удостоверение", и управляет ими.
  • Более простое операционное управление учетными данными благодаря тому, что управляемое удостоверение избавляет от необходимости настраивать Azure Key Vault или другую службу защищенного хранилища секретов.

Размещение управляющей программы на ресурсах вне Azure

При выполнении в среде, отличной от Azure, управляемые удостоверения недоступны. Поэтому вам придется настроить субъект-службу путем регистрации приложения Azure AD для управляющей программы.

Создание регистрации приложения

Если вы уже создали регистрацию приложения, переходите к назначению делегированных разрешений API.

Чтобы создать регистрацию приложения, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Выберите Azure Active Directory.

  3. В разделе Управление в области слева выберите Регистрация приложений.

  4. Щелкните вкладку + Новая регистрация.

    Просмотр регистрации приложений.

  5. Введите значение в разделе Имя и выберите поддерживаемый тип учетной записи.

    Создание регистрации приложения.

  6. Выберите Зарегистрировать.

Назначение делегированных разрешений API

Чтобы назначить делегированные разрешения API для Azure Maps, сделайте следующее.

  1. Войдите на портал Azure, если вы еще этого не сделали.

  2. Выберите Azure Active Directory.

  3. В разделе Управление в области слева выберите Регистрация приложений.

  4. Выберите приложение.

    Выбор элемента

  5. В разделе Управление в области слева выберите Разрешения API.

  6. Выберите Добавить разрешение.

    Добавление разрешения приложения.

  7. Щелкните вкладку API, используемые моей организацией.

  8. В поле поиска введите Azure Maps.

  9. Выберите Azure Maps.

    Запрос разрешения приложения.

  10. Установите флажок Доступ к Azure Maps.

  11. Выберите Добавить разрешения.

    Выбор разрешений API для приложения

Создание секрета клиента или настройка сертификата

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

  • Отправьте сертификат открытого ключа.
  • Создайте секрет клиента.
Отправка сертификата открытого ключа

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

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

  2. Выберите Отправить сертификат. Отправка сертификата.

  3. Щелкните значок файла справа от текстового поля.

  4. Выберите файл .crt, .cer или .pem и щелкните Добавить.

    Отправка файла сертификата.

Создание секрета клиента

Чтобы создать секрет клиента, сделайте следующее.

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

  2. Выберите + Новый секрет клиента.

    Новый секрет клиента.

  3. Введите описание для секрета клиента.

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

    Добавление секрета клиента.

  5. Скопируйте секрет и сохраните его в защищенной службе, например в Azure Key Vault. Этот секрет мы применим в разделе Запрос маркера с управляемым удостоверением в этой статье.

    Копирование секрета клиента.

    Важно!

    Чтобы безопасно сохранить сертификат или секрет, воспользуйтесь руководством для разработчиков Azure Key Vault. Вы будете использовать этот секрет для получения маркеров из Azure AD.

Предоставление пользователям доступа к Azure Maps на основе ролей

Вы можете предоставить управление доступом на основе ролей Azure (Azure RBAC) , назначив группу Azure AD или субъекты безопасности одному либо нескольким определениям ролей Azure Maps.

Чтобы просмотреть доступные определения ролей Azure для Azure Maps, ознакомьтесь с разделом Просмотр встроенных определений ролей Azure Maps.

Подробные инструкции по назначению доступной роли Azure Maps для созданного управляемого удостоверения или субъекта-службы см. в статье Назначение ролей Azure с помощью портала Azure.

Чтобы эффективно управлять приложением Azure Maps и доступом множества пользователей к ресурсам, ознакомьтесь со статьей о группах Azure AD.

Важно!

Чтобы можно было разрешить пользователям аутентификацию для приложения, эти пользователи сначала должны быть созданы в Azure AD. Более подробную информацию см. в статье Добавление или удаление пользователей с помощью Azure Active Directory.

Чтобы эффективно управлять большим каталогом для пользователей, познакомьтесь с Azure AD.

Предупреждение

Встроенные определения ролей Azure Maps предоставляют доступ к множеству REST API Azure Maps. Чтобы ограничить доступ к API до минимума, см. сведения о создании определения настраиваемой роли и присвоении ему назначенного системой удостоверения. Это обеспечивает наличие минимального уровня привилегий, необходимых приложению для доступа к Azure Maps.

Запрос маркера с управляемым удостоверением

Завершив настройку управляемого удостоверения для ресурса размещения, вы сможете получать маркер для Azure Maps, используя пакет SDK или REST API для Azure. Чтобы узнать, как получить маркер доступа, см. эту статью.

Маркер запроса с регистрацией приложения

После регистрации приложения и связывания его с Azure Maps следует запросить маркер доступа.

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

  1. Войдите на портал Azure, если вы еще этого не сделали.

  2. Выберите Azure Active Directory.

  3. В разделе Управление в области слева выберите Регистрация приложений.

  4. Выберите приложение.

  5. Вы увидите страницу обзора. Скопируйте идентификаторы приложения (клиента) и каталога (арендатора).

    Копирование параметров маркера.

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

  1. В приложении Postman выберите New (Создать).

  2. В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).

  3. Введите имя запроса, например Запрос маркера POST.

  4. Выберите метод HTTP POST.

  5. Введите в адресную строку следующий URL-адрес (замените в нем {Tenant-ID} на идентификатор каталога (арендатора) и {Client-ID} на идентификатор приложения (клиента)), а вместо {Client-Secret} укажите секрет клиента:

    https://login.microsoftonline.com/{Tenant-ID}/oauth2/v2.0/token?response_type=token&grant_type=client_credentials&client_id={Client-ID}&client_secret={Client-Secret}%3D&scope=api%3A%2F%2Fazmaps.fundamentals%2F.default
    
  6. Выберите Отправить.

  7. Вы увидите приведенный ниже ответ в формате JSON.

{
    "token_type": "Bearer",
    "expires_in": 86399,
    "ext_expires_in": 86399,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFq..."
}

Дополнительные сведения о потоке проверки подлинности см. в статье Платформа удостоверений Майкрософт и поток учетных данных клиента OAuth 2.0.

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

Более подробные примеры см. в этой статье:

Найдите метрики использования API для учетной записи Azure Maps:

Просмотрите примеры, демонстрирующие интеграцию Azure AD с Azure Maps: