Подключения без пароля для служб Azure

Замечание

Подключения без пароля — это функция, не зависящая от языка, охватывающая несколько служб Azure. Несмотря на то, что текущая документация посвящена нескольким языкам и службам, в настоящее время мы находимся в процессе создания дополнительной документации для других языков и служб.

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

Проблемы безопасности с паролями и секретами

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

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

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

// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
    new Uri("https://<storage-account-name>.blob.core.windows.net"),
    new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));

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

Беспарольные подключения и модель "Никому не доверяй"

Теперь вы можете использовать подключения без пароля в своих приложениях для подключения к службам Azure без необходимости смены паролей. В некоторых случаях все, что вам нужно, — это конфигурация — новый код не требуется. "Никому не доверяй" использует принцип «никогда не доверяй, всегда проверяй и без учетных данных». Этот принцип означает защиту всех коммуникаций путем доверия компьютеров или пользователей только после проверки удостоверения и перед предоставлением им доступа к внутренним службам.

Рекомендуемый вариант проверки подлинности для безопасных подключений без пароля — использовать управляемые удостоверения и управление доступом на основе ролей Azure (RBAC) в сочетании. С помощью этого подхода вам не нужно вручную отслеживать и управлять множеством различных секретов для управляемых удостоверений, так как Azure безопасно обрабатывает эти задачи внутри системы.

Вы можете настроить бессерверные подключения к службам Azure с помощью соединителя служб или настроить их вручную. Соединитель служб поддерживает управляемые удостоверения в службах размещения приложений, таких как Служба приложений Azure и Контейнеры приложений Azure. Service Connector также настраивает серверные службы для подключений без пароля с помощью управляемых удостоверений и Azure RBAC, а также предоставляет приложениям необходимые сведения о подключении.

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

В следующем видео показано подключение приложений к службам Azure без пароля на примере приложений Java. Аналогичное освещение ожидается и для других языков.


Знакомство с DefaultAzureCredential

Вы можете использовать DefaultAzureCredential из клиентских библиотек Azure Identity для реализации подключений без пароля к службам Azure через Microsoft Entra ID и управление доступом на основе ролей (RBAC).

Это важно

Некоторые языки требуют, чтобы вы явно реализовали DefaultAzureCredential в своем коде, тогда как в других DefaultAzureCredential используется внутри через базовые плагины или драйверы.

DefaultAzureCredential поддерживает несколько методов проверки подлинности и автоматически определяет, какой метод следует использовать во время выполнения. Такой подход позволяет приложению использовать различные способы аутентификации в разных средах (локальная среда разработки и рабочая среда) без реализации кода для конкретной среды.

Порядок и расположения, в которых DefaultAzureCredential выполняется поиск учетных данных, зависят от языков:

Например, при локальной работе с .NET обычно выполняется проверка подлинности с помощью учетной записи, DefaultAzureCredential используемой для входа в Visual Studio, Azure CLI или Azure PowerShell. При развертывании приложения в Azure DefaultAzureCredential автоматически определяет и использует управляемый идентификатор соответствующей службы размещения, например Служба приложений Azure. Для этого перехода не нужно вносить изменения в код.

Замечание

Управляемое удостоверение предоставляет удостоверение безопасности для представления приложения или службы. Платформа Azure управляет удостоверением, и вам не нужно подготавливать или менять секреты. Дополнительные сведения см. в обзорной документации.

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

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.servicebus.windows.net"),
    new DefaultAzureCredential());

См. также

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