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