Ярлыки

понедельник, 7 мая 2018 г.

Отправка Email из Azure Functions: secure way


Azure Functions - очень удобный инструмент для автоматизации каких-либо задач. Как-только автоматизация настроена - сразу возникает вопрос: как получать уведомления о результатах? Самое логичное решение - использовать электронную почту для отправки оповещений.
Как делать это безопасно и бесплатно расскажу ниже.

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

Постановка задачи


Пускай у нас уже есть:

  • Function App с именем "test-azurefunctions-notifications"
  • Учётная запись от почтового сервера (пускай будет Office 365)

Сделаем так, чтобы мы могли:

  • Отправлять уведомления из Function App
  • Не хардкодить учётку в коде Function App

Все настройки можно выполнить при помощи Azure Portal.

Настройка Function App

Открываем: Function App -> Platform features -> NETWORKING -> Managed service identity


Включаем "Register with Azure Active Directory"


Это позволить приложению запрашивать access token для получения доступа к другим ресурсам Azure (в нашем случае Key Vault). Подробнее тут.

Настройка Azure Key Vault

Создаём Key Vault по инструкции. Добавляем логин и пароль от почтового аккаунта.

Key vault -> Secrets -> Generate/Import



Разрешаем нашему Function App запрашивать эти логин и пароль. Для этого идём в Key vault -> Access policies -> Add new  и выбираем:
  • Secret permissions: Get, List
  • Select principal: test-azurefunctions-notifications


Отправка уведомлений

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

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



Результат будет выглядеть примерно так:



Код на PowerShell.