Поделиться через


Бессерверные подключения для служб 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 без необходимости смены паролей. В некоторых случаях все, что вам нужно, — это не требуется новый код. Zero Trust использует принцип "никогда не доверять, всегда проверять и без учетных данных". Это означает защиту всех коммуникаций путем доверия компьютеров или пользователей только после проверки удостоверения и перед предоставлением им доступа к внутренним службам.

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

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

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

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


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

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

Важно!

Некоторые языки должны явно реализовать 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>.blob.core.windows.net"),
    new DefaultAzureCredential());

См. также

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