top of page
Search

Dynamics 365 и Azure без паролей: Managed Identity и Key Vault на практике

Writer: Sarov+
Sarov+
11 minutes ago
4 min read

При разработке интеграций с Dynamics 365, Dataverse и Azure постоянно возникает вопрос аутентификации. Логины и пароли, Client Secrets, API Keys и Connection Strings приходится где-то хранить, контролировать и периодически обновлять.

Особенно актуальной эта проблема становится сегодня, когда AI-инструменты получают доступ к локальному коду и репозиториям. Чем меньше секретов хранится в коде и локальных конфигурациях, тем безопаснее процесс разработки.

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

 

А узнать больше можно в нашем видео: 

 

Какие подключения мы используем

 

В повседневной разработке интеграции могут работать через разные Azure-ресурсы:

  • Azure Functions;

  • Azure WebJobs;

  • Web Apps и Web API;

  • консольные приложения и утилиты.

Они взаимодействуют с Dynamics 365/Dataverse, Azure OpenAI, Storage и другими Azure-сервисами, а также с внешними системами, например Jira или Twilio.

Практически в каждом таком сценарии необходимо решить одну задачу: как безопасно авторизовать приложение в нужном сервисе.

 

Почему традиционные способы создают проблемы

 

Самый очевидный вариант — логин и пароль. Но пароль может истечь, его необходимо обновлять во всех местах использования, а MFA дополнительно усложняет применение такого подхода в интеграциях.

Более распространенный вариант — Client ID + Client Secret. Он удобнее, но Client Secret также имеет ограниченный срок действия. Через год или два необходимо помнить, какие приложения его используют и где его нужно заменить.

Похожая ситуация возникает с:

  • API Keys;

  • Connection Strings;

  • секретами сторонних сервисов.

Чем больше environments и интеграций, тем сложнее контролировать все эти credentials.

 

Managed Identity: подключение без пароля

 

Для Azure-сервисов эту проблему помогает решить Managed Identity.

Упрощенно Managed Identity можно представить как специальную identity в Azure, которой предоставляется доступ к конкретным ресурсам.

Главное отличие заключается в том, что разработчику не нужно создавать и хранить для нее:

  • логин и пароль;

  • Client Secret;

  • другие credentials.

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

Например:

Azure Function → Managed Identity → Dataverse

или:

Azure Function → Managed Identity → Azure Service

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

Еще одно преимущество — сама Managed Identity не требует отдельной оплаты.

 

Как подключить Managed Identity к Dynamics 365

 

После создания Managed Identity ее необходимо предоставить Dynamics 365/Dataverse как Application User.

Процесс выглядит следующим образом:

  1. Создаем Managed Identity в Azure.

  2. Получаем ее Client ID.

  3. Открываем нужный Environment в Power Platform.

  4. Создаем Application User.

  5. Указываем соответствующий ID.

  6. Назначаем Business Unit и Security Role.

Важно придерживаться принципа минимально необходимых привилегий. Назначать каждому такому пользователю роль System Administrator без необходимости — не лучшая практика.

Лучше создать отдельную Security Role с теми правами, которые действительно нужны конкретной интеграции.

 

Как работать локально в Visual Studio

 

У Managed Identity есть важное ограничение: ее нельзя использовать локально так же, как внутри Azure.

При локальном debugging приложение может работать от Developer Account, настроенного в Visual Studio.

Таким образом:

в Azure: Application → Managed Identity → Resource

локально: Application → Developer Account → Resource

Это позволяет использовать практически один и тот же код и для локальной разработки, и после deployment в Azure.

При этом необходимо учитывать права. Developer Account и Managed Identity могут иметь разные Security Roles, поэтому поведение приложения локально и в Azure необходимо проверять отдельно.

 

Что делать с секретами внешних сервисов

 

Managed Identity хорошо решает проблему доступа к Azure-ресурсам, но существуют внешние системы — например Jira, Twilio и другие сервисы, которые используют собственные API Keys или Secrets.

Для таких данных можно использовать Azure Key Vault.

Вместо хранения секретов в:

  • коде;

  • Local Settings;

  • Environment Variables с чувствительными данными;

  • локальных конфигурационных файлах,

они сохраняются централизованно в Key Vault.

Managed Identity получает право читать необходимые секреты, а Developer Account может получить аналогичный доступ для локальной разработки.

В коде при этом достаточно знать URI Key Vault — сам URI секретом не является.

 

Что является секретом, а что нет

 

При внедрении такого подхода важно разделить конфигурационные данные на две категории.

Не являются секретами:

  • URL;

  • User ID;

  • Client ID Managed Identity;

  • другие публичные идентификаторы.

Являются секретами:

  • пароли;

  • API Keys;

  • токены;

  • Connection Strings с credentials;

  • ключи сторонних сервисов.

Нет необходимости помещать в Key Vault абсолютно всю конфигурацию. Там должны храниться именно чувствительные данные.

 

Преимущества подхода

 

Связка Managed Identity + Key Vault позволяет значительно упростить управление credentials.

Основные преимущества:

  • меньше паролей и секретов в локальной разработке;

  • отсутствие Client Secret rotation для Managed Identity;

  • меньше риска случайно закоммитить credentials в репозиторий;

  • отдельные права для каждого ресурса;

  • возможность использовать единый подход для Azure Functions, WebJobs, Web Apps и других приложений;

  • централизованное хранение секретов внешних сервисов.

При этом стоит учитывать, что изменения прав Managed Identity могут применяться не мгновенно, а доступ Developer Account для локальной разработки необходимо настраивать отдельно.

 

Краткий чек-лист внедрения

 

Перед переходом на такой подход стоит:

  1. Определить все внешние подключения приложения.

  2. Разделить обычные конфигурационные данные и секреты.

  3. Использовать Managed Identity там, где сервис ее поддерживает.

  4. Хранить необходимые внешние секреты в Azure Key Vault.

  5. Создать Application User и необходимые Security Roles в Dataverse.

  6. Настроить Developer Account для локальной разработки.

  7. Проверить права и работу приложения как локально, так и после deployment в Azure.

 

Заключение

 

Отказ от хранения паролей и Client Secrets — это не только вопрос удобства. Чем больше интеграций, environments и инструментов получают доступ к исходному коду, тем важнее минимизировать количество credentials, которыми приходится управлять вручную.

Managed Identity позволяет организовать доступ между Dynamics 365/Dataverse и Azure без хранения постоянных credentials, а Azure Key Vault дополняет этот подход там, где секреты все-таки необходимы.

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

 

 

 
 
 

Comments


Power Platform logo

Подписывайся на наши ресурсы.

  • Telegram
  • LinkedIn
  • Facebook
  • Twitter
  • YouTube
  • Instagram

© 2035 by The Pop Show. Powered and secured by Wix

bottom of page