Использование сертификата для предоставления приложению доступа к хранилищу ключей Azure

#azure #api #iis #certificate

Вопрос:

У меня есть веб-API, размещенный на сервере Windows через IIS. Я использую хранилище ключей Azure для сокрытия секретов. Чтобы предоставить приложению доступ к хранилищу, я использую сертификат, установленный на сервере, который также зарегистрирован в приложении в Azure. Отпечаток большого пальца сертификата, идентификатор клиента и идентификатор приложения-все это доступно в файле конфигурации веб-API. Регистрация приложений предоставляется доступ с помощью политики в хранилище ключей.

Проблема в том, что помощник по интеграции в Azure предупреждает меня о том, что мне не следует настраивать сертификат внутри регистрации, но без объяснения причин (документация выделена серым цветом для предупреждения).

Можно ли безопасно игнорировать это предупреждение? Или есть лучший способ предоставить доступ к хранилищу моего приложения?

Редактировать — снип помощника по интеграции:

введите описание изображения здесь

Комментарии:

1. Можете ли вы отредактировать свой вопрос и включить скриншот получаемого предупреждения?

2. @ГауравМантри Готово.

3. Спасибо. Еще один вопрос — Где работает ваша виртуальная машина? Это локально или в Azure?

4. Это местное. Я не знаю, является ли это виртуальной машиной — я просто знаю, что она существует на локальном сервере и что я могу удаленно подключиться к ней для настройки IIS.

Ответ №1:

Можно ли безопасно игнорировать это предупреждение?

В вашем конкретном сценарии я бы сказал «да». Вы можете спокойно проигнорировать это сообщение.

По сути, вам нужен пользователь для доступа к хранилищу ключей. Учитывая, что ваше приложение работает локально, вы будете использовать Service Principal (созданное в рамках регистрации приложения) в качестве пользователя для доступа к хранилищу ключей.

Или есть лучший способ предоставить доступ к хранилищу моего приложения?

В вашем конкретном сценарии (когда ваше приложение работает локально) AFAIK нет.

Если бы ваше приложение работало в Azure, вы могли бы использовать Managed Identity . Это может быть или System-assigned Managed Identity или User-assigned Managed Identity . При использовании управляемой идентификации вам не нужно требовать проверки подлинности на основе секрета/сертификата.

Я не уверен, защищен ли ваш API Azure AD (т. Е. Пользователь должен пройти проверку подлинности/авторизацию перед использованием API), но если это так, то одной из альтернатив было бы предоставить пользователям вашего API доступ к хранилищу ключей. Затем запросы в Хранилище ключей будут отправляться в контексте этого пользователя. Однако это значительно усложнит управление, поскольку вам придется управлять контролем доступа для всех пользователей API.

Комментарии:

1. Спасибо. Да, я имею в виду, что мое приложение не только в конечном итоге будет иметь интерфейс пользовательского интерфейса, но также будет доступно для отдельных приложений-демонов в целях автоматизации, что еще больше усложнит его. Я думаю, что на данный момент у меня уже есть лучшее решение, которое уже реализовано.