Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Строка подключения включает сведения об авторизации, необходимые вашему приложению для доступа к данным в учетной записи Azure Storage во время выполнения приложения с помощью авторизации с общим ключом. Настройка строки подключения позволяет выполнить следующие действия:
- подключиться к эмулятору хранилища Azure.
- Доступ к учетной записи хранения в Azure.
- Доступ к указанным ресурсам в Azure через подписанный URL-адрес (SAS).
Чтобы узнать, как просматривать ключи доступа к учетной записи и копировать строку подключения, см. раздел Управление ключами доступа к учетной записи хранения.
Внимание
Для оптимальной безопасности Microsoft рекомендует использовать Microsoft Entra ID с управляемыми идентификациями для авторизации запросов к blob-объектам, очередям и табличным данным, когда это возможно. Авторизация с помощью Microsoft Entra ID и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации общего ключа. Дополнительные сведения об управляемых удостоверениях см. в статье Что такое управляемые удостоверения для ресурсов Azure. Для примера того, как включить и использовать управляемое удостоверение для приложения .NET, см. статью Аутентификация приложений, размещенных на Azure, к ресурсам Azure с помощью .NET.
Для ресурсов, размещенных за пределами Azure, таких как локальные приложения, можно использовать управляемые удостоверения через Azure Arc. Например, приложения, работающие на серверах с поддержкой Azure Arc, могут использовать управляемые удостоверения для подключения к службам Azure. Дополнительные сведения см. в разделе Аутентификация для ресурсов Azure с серверами, поддерживающими Azure Arc.
В сценариях, когда используются подписи общего доступа (SAS), Microsoft рекомендует использовать делегированные подписи общего доступа (SAS). SAS для делегации пользователей защищается с помощью учетных данных системы Microsoft Entra вместо ключа учетной записи. Дополнительные сведения о подписанных URL-адресах см. в статье Предоставление ограниченного доступа к данным с помощью подписанных URL-адресов. Для примера создания и использования SAS делегативного доступа с .NET см. Создание SAS делегативного доступа для блок-объекта с .NET.
Защита ключей доступа
Ключи доступа к учетной записи хранения предоставляют полный доступ к данным учетной записи хранения и возможность создавать маркеры SAS. Не забудьте защитить ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и их смены. Доступ к общему ключу предоставляет пользователю полный доступ к данным учетной записи хранения. Доступ к общим ключам следует тщательно ограничить и отслеживать. Используйте делегированные пользователем токены SAS с ограниченной областью доступа в сценариях, где невозможно использовать авторизацию на основе Microsoft Entra ID. Избегайте жесткого написания ключей доступа или сохраняйте их в любом месте обычного текста, доступного другим пользователям. Поверните ключи, если вы считаете, что они были скомпрометированы.
Внимание
Чтобы запретить пользователям доступ к данным в учетной записи хранения с общим ключом, вы можете запретить авторизацию общего ключа для учетной записи хранения. Гранулярный доступ к данным с минимальными необходимыми привилегиями рекомендуется как лучшая практика безопасности. Авторизацию на основе Microsoft Entra ID с использованием управляемых удостоверений следует применять для сценариев, поддерживающих OAuth. Kerberos следует использовать для Azure Files по протоколу SMB. Для Azure Files через REST можно использовать SAS маркеры. Доступ к общему ключу следует отключить, если не требуется, чтобы предотвратить его непреднамеренное использование. Дополнительные сведения см. в разделе Авторизация общего ключаPrevent для учетной записи Azure Storage.
Чтобы защитить учетную запись Azure Storage с помощью политик Microsoft Entra Conditional Access, необходимо запретить авторизацию общего ключа для учетной записи хранения.
Если вы отключили доступ к общему ключу, и вы видите авторизацию общего ключа, указанную в журналах диагностики, это означает, что доверенный доступ используется для доступа к хранилищу. Дополнительные сведения см. в разделе Доверенный доступ для ресурсов, зарегистрированных в клиенте Microsoft Entra.
Сохранить строку подключения
Приложение должно получить доступ к connection string во время выполнения, чтобы авторизовать запросы, сделанные в Azure Storage. У вас есть несколько вариантов хранения ключей доступа к учетной записи или строки подключения.
- Microsoft рекомендует использовать Microsoft Entra ID для авторизации доступа к Azure Storage вместо ключей учетной записи. Если вы должны использовать ключи учетной записи, безопасно сохраните их в Azure Key Vault. Дополнительные сведения можно найти в разделе Authorize access to data in Azure Storage.
- Вы можете хранить строку подключения в переменной среды.
- Приложение может хранить connection string в файле app.config или web.config. Добавьте connection string в раздел AppSettings в этих файлах.
Предупреждение
Хранение ключей доступа к учетной записи или connection string в чистом тексте представляет угрозу безопасности и не рекомендуется. Сохраните ключи вашей учетной записи в зашифрованном формате или перенесите приложения, чтобы использовать авторизацию Microsoft Entra для доступа к вашей учетной записи хранения.
Настроить строку подключения для Azurite'а
Эмулятор поддерживает одну предопределенную учетную запись и известный ключ аутентификации для аутентификации с помощью общего ключа. Эти учетная запись и ключ — единственные разрешенные учетные данные общего ключа для использования с эмулятором. В их число входят:
Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
Примечание.
Ключ проверки подлинности, поддерживаемый эмулятором, предназначен только для тестирования функциональности кода проверки подлинности клиента. Его использование не гарантирует защиту. Нельзя использовать рабочую учетную запись хранения и ключ для эмулятора. Не следует использовать учетную запись для разработки с рабочими данными.
Эмулятор поддерживает подключения только по протоколу HTTP. Однако HTTPS — это рекомендуемый протокол для доступа к ресурсам в учетной записи хранения Azure в рабочей среде.
Подключение к учетной записи эмулятора с помощью ярлыка
Самый простой способ подключиться к эмулятору из приложения — настроить connection string в файле конфигурации приложения, который ссылается на ярлык UseDevelopmentStorage=true. Сокращение эквивалентно полной строке подключения для эмулятора, которая указывает имя учетной записи, ключ учетной записи и конечные точки эмулятора для каждой из служб Azure Storage.
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(String, String) принимает connection string.
BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();
Перед вызовом кода во фрагменте убедитесь, что эмулятор работает.
Дополнительные сведения об Azurite см. в статье Использование эмулятора Azurite для локальной разработки Azure Storage.
Настройка строки подключения для учетной записи хранения Azure
Чтобы создать строку подключения для учетной записи хранилища Azure, используйте следующий формат. Указывает, следует ли подключаться к учетной записи хранения через HTTPS (рекомендуется) или HTTP. Замените myAccountName на имя вашей учетной записи хранения и замените myAccountKey на ваш ключ доступа учетной записи:
DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey
Например, connection string может выглядеть примерно так:
DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>
Хотя Azure Storage поддерживает протокол HTTP и HTTPS в строке подключения, настоятельно рекомендуется HTTPS.
Совет
Строки подключения вашей учетной записи хранилища можно найти в портале Azure. Перейдите к Безопасность + сеть>Ключи доступа в параметрах учетной записи хранения, чтобы просмотреть строки подключения для первичных и вторичных ключей доступа.
Создайте строку подключения с использованием общей метки доступа
Если у вас есть SAS URL, который предоставляет доступ к ресурсам в учетной записи хранения, вы можете использовать SAS в строке подключения. Так как SAS содержит необходимую для аутентификации запроса информацию, connection string с SAS предоставляет протокол, конечную точку сервиса и необходимые сведения для доступа к ресурсу.
Чтобы создать строку подключения, включающую подпись общего доступа, укажите строку в следующем формате:
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
Каждая конечная точка службы является необязательной, хотя connection string должна содержать по крайней мере одну.
Примечание.
По соображениям безопасности с SAS рекомендуется использовать протокол HTTPS.
Если вы указываете SAS в строке подключения в файле конфигурации, может потребоваться закодировать специальные символы в URL-адресе.
Пример Service SAS
Ниже приведен пример строки подключения, которая включает служебный SAS для хранилища объектов BLOB.
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Ниже приведен пример того же connection string с кодировкой URL-адресов:
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Пример SAS учетной записи
Ниже приведен пример строки подключения, которая включает SAS учетной записи для хранилища 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
Ниже приведен пример того же connection string с кодировкой URL-адресов:
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
Создайте строку подключения для явной конечной точки хранилища
Можно указать явные конечные точки службы в connection string вместо использования конечных точек по умолчанию. Чтобы создать connection string, указывающую явную конечную точку, укажите полную конечную точку службы для каждой службы, включая спецификацию протокола (HTTPS (рекомендуется) или HTTP, в следующем формате:
DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey
Один из сценариев, когда может потребоваться указать явную конечную точку, — если конечная точка хранилища BLOB-объектов сопоставлена с личным доменом. В этом случае вы можете указать настраиваемую конечную точку для хранилища BLOB-объектов в connection string. Вы можете дополнительно указать конечные точки по умолчанию для других служб, если приложение их использует.
Ниже приведен пример connection string, указывающий явную конечную точку для службы 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 Storage см. в разделе Настройка домена для конечной точки Azure Blob Storage.
Внимание
Значения конечных точек служб в строках подключения должны быть в формате правильно сформированного универсального кода ресурса (URI), включая https:// (рекомендуется) или http://.
Создайте строку подключения с суффиксом конечной точки
Чтобы создать строку подключения для службы хранения в регионах или экземплярах с различными суффиксами конечных точек, например для Microsoft Azure, которая управляется 21Vianet или Azure Government, используйте следующий формат строки подключения. Укажите, следует ли подключаться к учетной записи хранения через HTTPS (рекомендуется) или HTTP. Замените myAccountName именем своей учетной записи хранения, замените myAccountKey ключом доступа своей учетной записи и замените mySuffix суффиксом URI:
DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;
Ниже приведен пример connection string для служб хранилища в Azure, управляемых 21Vianet:
DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;
Авторизация доступа с помощью общего ключа
Сведения о том, как авторизовать доступ к Azure Storage с помощью ключа учетной записи или с помощью connection string, см. в одной из следующих статей:
- Авторизуйте доступ и подключитесь к Blob Storage с помощью .NET
- Авторизуйте доступ и подключитесь к хранилищу BLOB с Java
- Авторизуйте доступ и подключитесь к Blob Storage с помощью JavaScript
- Авторизуйте доступ и подключитесь к Blob Storage с помощью Python