Как поместить сведения о строке подключения на страницу Typescript без каких-либо рисков для безопасности?

#typescript #azure #azure-storage #azure-authentication #front-end-optimization

#typescript #azure #azure-хранилище #azure-аутентификация #оптимизация интерфейса

Вопрос:

У меня есть приложение typescript, из которого мне нужно подключиться к хранилищу больших двоичных объектов Azure. Я разместил сведения о строке подключения blob-объекта в службе Azure key Vault. Но чтобы вызвать URL-адрес хранилища ключей для доступа к этим ключам и секретам, мне нужно включить идентификатор клиента, секреты клиента на моей странице Typescript. Но поскольку это интерфейсная страница, любой может увидеть эти секреты из консоли браузера. Как мы можем избавиться от этой ситуации. любое из приведенных ниже решений может решить мою проблему. Пожалуйста, сообщите нам об этом.

1.Is есть какой-нибудь способ скрыть эти секреты из окна консоли браузера. Таким образом, он не будет виден в браузере.

2.Is существует ли какой-либо способ использовать другую аутентификацию для Azure key vault со страницы typescipt без предоставления идентификатора клиента и секретных данных клиента.

Ответ №1:

1.Is есть какой-нибудь способ скрыть эти секреты из окна консоли браузера. Таким образом, он не будет виден в браузере.

Нет. Если ваше приложение может это видеть, то и пользователь может.

2.Is существует ли какой-либо способ использовать другую аутентификацию для Azure key vault со страницы typescipt без предоставления идентификатора клиента и секретных данных клиента.

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

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

  1. Назначьте пользователю роль считывателя данных больших двоичных объектов в учетной записи хранилища / контейнере больших двоичных объектов, к которому вы хотите, чтобы они могли получить доступ
  2. Зарегистрируйте приложение в Azure AD, требуя user_impersonation разрешения на хранилище Azure на вкладке Разрешения API
  3. Аутентифицировать пользователя с помощью MSAL
  4. Получить токен доступа для хранилища Azure с областью действия: https://storage.azure.com/user_impersonation
  5. Вызов API-интерфейсов хранилища с помощью токена

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

Другой альтернативой было бы отправлять запросы из внутреннего приложения.