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


Настройка строки подключения хранилища Azure

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

  • подключиться к эмулятору хранилища Azure.
  • получить доступ к учетной записи хранения в Azure;
  • получить доступ к указанным ресурсам Azure через подписанный URL-адрес (SAS).

Сведения о том, как просмотреть ключи доступа к учетной записи и скопировать строку подключения, см. в статье Управление ключами доступа учетной записи хранения.

Внимание

Для оптимальной безопасности корпорация Майкрософт рекомендует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к blob-объектам, очередям и табличным данным, когда это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации общего ключа. Дополнительные сведения об управляемых удостоверениях см. в статье "Что такое управляемые удостоверения для ресурсов Azure". Пример включения и использования управляемого удостоверения для приложения .NET см. в статье Аутентификация размещенных в Azure приложений в ресурсах Azure с помощью .NET.

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

В сценариях, когда используются подписанные URL-адреса (SAS), корпорация Майкрософт рекомендует использовать SAS делегирования пользователей. SAS делегирования пользователей защищены учетными данными Microsoft Entra вместо ключа учетной записи. Дополнительные сведения о подписанных URL-адресах см. в статье Предоставление ограниченного доступа к данным с помощью подписанных URL-адресов. Пример создания и использования SAS делегирования пользователей с .NET см. в статье "Создание SAS делегирования пользователей для большого двоичного объекта с помощью .NET".

Защита ключей доступа

Ключи доступа к учетной записи хранения предоставляют полный доступ к данным учетной записи хранения и возможность создавать маркеры SAS. Не забудьте защитить ключи доступа. Для безопасного управления ключами и их замены воспользуйтесь Azure Key Vault. Доступ к общему ключу предоставляет пользователю полный доступ к данным учетной записи хранения. Доступ к общим ключам следует тщательно ограничить и отслеживать. Используйте маркеры SAS делегирования пользователей с ограниченной областью доступа в сценариях, когда невозможно использовать авторизацию на основе идентификатора Майкрософт. Избегайте жесткого написания ключей доступа или сохраняйте их в любом месте обычного текста, доступного другим пользователям. Поверните ключи, если вы считаете, что они были скомпрометированы.

Внимание

Чтобы запретить пользователям доступ к данным в учетной записи хранения с общим ключом, вы можете запретить авторизацию общего ключа для учетной записи хранения. Подробный доступ к данным с минимальными привилегиями рекомендуется в качестве рекомендации по обеспечению безопасности. Авторизация на основе идентификатора Microsoft Entra с помощью управляемых удостоверений должна использоваться для сценариев, поддерживающих OAuth. Kerberos или SMTP следует использовать для Файлы Azure по протоколу SMB. Для Файлы Azure по протоколу REST можно использовать маркеры SAS. Доступ к общему ключу следует отключить, если не требуется, чтобы предотвратить его непреднамеренное использование. Дополнительные сведения см. в статье Предотвращение авторизации с общим ключом для учетной записи службы хранения Azure.

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

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

Указать строку соединения

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

  • Ключи учетной записи можно хранить безопасно в Azure Key Vault. Дополнительные сведения см. в разделе о ключах управляемой учетной записи хранения Azure Key Vault.
  • Вы можете хранить свою строку подключения в переменной среды.
  • Приложение может хранить строка подключения в файле app.config или web.config. Добавьте строку подключения в раздел AppSettings в этих файлах.

Предупреждение

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

Настройка строки подключения для Azurite

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

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

Примечание.

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

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

Подключение к учетной записи эмулятора с помощью ярлыка

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

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

В следующем фрагменте кода .NET показано, как можно использовать сочетание клавиш из метода, принимающего строку подключения. Например, конструктор BlobContainerClient(строка, строка) принимает строку подключения.

BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();

Перед вызовом кода во фрагменте убедитесь, что эмулятор работает.

Дополнительные сведения об Azurite см. в статье Использование эмулятора Azurite для локальной разработки службы хранилища Azure.

Настройка строки подключения для учетной записи хранения Azure

Чтобы создать строку подключения для учетной записи хранения Azure, используйте формат, указанный ниже. Указывает, следует ли подключаться к учетной записи хранения через HTTPS (рекомендуется) или HTTP. Замените myAccountName на имя вашей учетной записи хранения и замените myAccountKey на ваш ключ доступа учетной записи:

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

Например, строка подключения может выглядеть так:

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

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

Совет

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

Создание строки подключения с помощью подписанного URL-адреса

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

Чтобы создать строку подключения, содержащую подписанный URL-адрес, задайте ее в следующем формате:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

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

Примечание.

По соображениям безопасности с SAS рекомендуется использовать протокол HTTPS.

При указании SAS в строке подключения в файле конфигурации может потребоваться закодировать специальные символы в URL-адресе.

Пример SAS службы

Ниже приведен пример строки подключения, которая включает подписанный URL-адрес службы для хранилища BLOB-объектов:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Еще один пример той же строки подключения с кодированием URL-адреса:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Пример SAS учетной записи

Ниже приведен пример строки подключения, которая включает подписанный URL-адрес учетной записи для хранилища BLOB-объектов и файлового хранилища: Обратите внимание, что указаны конечные точки для обеих служб.

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

Еще один пример той же строки подключения с кодированием URL-адреса:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

Создание строки подключения для явной конечной точки хранилища

Вы можете указать явные конечные точки службы в строке подключения вместо конечных точек по умолчанию. Чтобы создать строку подключения, определяющую явную конечную точку, укажите полную конечную точку для каждой службы, включая спецификацию протокола (HTTPS (рекомендуется) или HTTP), в следующем формате:

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

Один из сценариев, когда может потребоваться указать явную конечную точку, — если конечная точка хранилища BLOB-объектов сопоставлена с личным доменом. В этом случае в строке подключения можно указать пользовательскую конечную точку хранилища BLOB-объектов. Вы можете дополнительно указать конечные точки по умолчанию для других служб, если приложение их использует.

Ниже приведен пример строки подключения, в которой указывается явная конечная точка для службы BLOB-объектов.

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

В следующем примере указываются явные конечные точки для всех служб, включая личный домен для службы BLOB-объектов:

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

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

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

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

Внимание

Значения конечных точек служб в строках подключения должны быть в формате правильно сформированного универсального кода ресурса (URI), включая https:// (рекомендуется) или http://.

Создание строки подключения с суффиксом конечной точки

Чтобы создать строка подключения для службы хранилища в регионах или экземплярах с различными суффиксами конечной точки, например для Microsoft Azure, управляемой 21Vianet или Azure для государственных организаций, используйте следующий формат строка подключения. Укажите, следует ли подключаться к учетной записи хранения через HTTPS (рекомендуется) или HTTP. Замените myAccountName именем своей учетной записи хранения, замените myAccountKey ключом доступа своей учетной записи и замените mySuffix суффиксом URI:

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

Ниже приведен пример строка подключения для служб хранилища в Azure, управляемых 21Vianet:

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

Авторизация доступа с помощью общего ключа

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

Следующие шаги