Azure Storage の接続文字列を構成するConfigure Azure Storage connection strings

接続文字列には、アプリケーションの実行時に共有キーによる承認を使用して Azure Storage アカウント内のデータにアクセスするために必要な承認情報が格納されています。A connection string includes the authorization information required for your application to access data in an Azure Storage account at runtime using Shared Key authorization. 接続文字列は、次の目的に構成できます。You can configure connection strings to:

  • Azure ストレージ エミュレーターに接続する。Connect to the Azure storage emulator.
  • Azure のストレージ アカウントにアクセスする。Access a storage account in Azure.
  • Shared Access Signature (SAS) を介して Azure の特定のリソースにアクセスする。Access specified resources in Azure via a shared access signature (SAS).

アカウント アクセス キーを表示し、接続文字列をコピーする方法については、「ストレージ アカウント アクセス キーを管理する」を参照してください。To learn how to view your account access keys and copy a connection string, see Manage storage account access keys.

アクセス キーの保護Protect your access keys

ストレージ アカウントのアクセス キーは、ストレージ アカウントの root パスワードに似ています。Your storage account access keys are similar to a root password for your storage account. アクセス キーは常に慎重に保護してください。Always be careful to protect your access keys. キーを安全に管理およびローテーションするには、Azure Key Vault を使用します。Use Azure Key Vault to manage and rotate your keys securely. アクセス キーを他のユーザーに配布したり、ハードコーディングしたり、他のユーザーがアクセスできるプレーンテキストで保存したりしないでください。Avoid distributing access keys to other users, hard-coding them, or saving them anywhere in plain text that is accessible to others. キーが侵害された可能性があると思われる場合は、キーをローテーションしてください。Rotate your keys if you believe they may have been compromised.

可能であれば、Blob Storage および Queue storage に対する要求の承認には、共有キーではなく Azure Active Directory (Azure AD) を使用します。If possible, use Azure Active Directory (Azure AD) to authorize requests to Blob and Queue storage instead of Shared Key. Azure AD では、共有キーよりも優れたセキュリティと使いやすさが実現されます。Azure AD provides superior security and ease of use over Shared Key. Azure AD を使用したデータへのアクセスの承認の詳細については、「Azure Active Directory を使用して BLOB とキューへのアクセスを承認する」を参照してください。For more information about authorizing access to data with Azure AD, see Authorize access to Azure blobs and queues using Azure Active Directory.

接続文字列を保存するStore a connection string

アプリケーションは実行時に接続文字列にアクセスして、Azure Storage に対する要求を承認する必要があります。Your application needs to access the connection string at runtime to authorize requests made to Azure Storage. 接続文字列は次の方法で保存できます。You have several options for storing your connection string:

  • 接続文字列は、環境変数に保存することができます。You can store your connection string in an environment variable.
  • デスクトップまたはデバイスで実行するアプリケーションの場合は、app.config ファイルまたは web.config ファイルに接続文字列を保存できます。An application running on the desktop or on a device can store the connection string in an app.config or web.config file. この接続文字列は、これらのファイルの AppSettings セクションに追加します。Add the connection string to the AppSettings section in these files.
  • Azure クラウド サービスで実行するアプリケーションの場合、接続文字列は Azure サービスの構成スキーマ (.cscfg) ファイルに保存できます。An application running in an Azure cloud service can store the connection string in the Azure service configuration schema (.cscfg) file. 接続文字列をサービス構成ファイルの ConfigurationSettings セクションに追加します。Add the connection string to the ConfigurationSettings section of the service configuration file.

構成ファイル内に接続文字列を保存すると、接続文字列を簡単に更新してストレージ エミュレーターとクラウドの Azure Storage アカウントを切り替えることができます。Storing your connection string in a configuration file makes it easy to update the connection string to switch between the storage emulator and an Azure storage account in the cloud. 必要な作業は、対象となる環境に合わせて接続文字列を編集するだけです。You only need to edit the connection string to point to your target environment.

Microsoft Azure Configuration Manager を使用すると、アプリケーションの実行場所に関係なく、実行時に接続文字列にアクセスできます。You can use the Microsoft Azure Configuration Manager to access your connection string at runtime regardless of where your application is running.

ストレージ エミュレーターの接続文字列を構成するConfigure a connection string for the storage emulator

ストレージ エミュレーターでは、共有キー認証について、単一の固定アカウントと既知の認証キーがサポートされています。The storage emulator supports a single fixed account and a well-known authentication key for Shared Key authentication. このアカウントとキーのみ、ストレージ エミュレーターで共有キー資格情報として使用できます。This account and key are the only Shared Key credentials permitted for use with the storage emulator. これらは次のとおりです。They are:

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

注意

ストレージ エミュレーターでサポートされている認証キーは、クライアント認証コードの機能をテストすることだけを目的としています。The authentication key supported by the storage emulator is intended only for testing the functionality of your client authentication code. セキュリティ機能は果たしません。It does not serve any security purpose. ストレージ エミュレーターで運用環境のストレージ アカウントとキーを使用することはできません。You cannot use your production storage account and key with the storage emulator. 開発アカウントを運用データで使用することは避けてください。You should not use the development account with production data.

ストレージ エミュレーターでは HTTP 経由の接続のみがサポートされます。The storage emulator supports connection via HTTP only. ただし、運用環境の Azure ストレージ アカウント内のリソースにアクセスする際は、HTTPS が推奨されるプロトコルです。However, HTTPS is the recommended protocol for accessing resources in a production Azure storage account.

ショートカットを使用してエミュレーター アカウントに接続するConnect to the emulator account using a shortcut

アプリケーションからストレージ エミュレーターに接続する最も簡単な方法は、ショートカット UseDevelopmentStorage=true を参照するアプリケーションの構成ファイル内で接続文字列を構成することです。The easiest way to connect to the storage emulator from your application is to configure a connection string in your application's configuration file that references the shortcut UseDevelopmentStorage=true. たとえば、app.config ファイル内でのストレージ エミュレーターへの接続文字列は次のようになります。Here's an example of a connection string to the storage emulator in an app.config file:

<appSettings>
  <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

よく知られたアカウント名とキーを使用してエミュレーター アカウントに接続するConnect to the emulator account using the well-known account name and key

エミュレーターのアカウント名とキーを参照する接続文字列を作成するには、接続文字列内のエミュレーターから使用する各サービスのエンドポイントを指定する必要があります。To create a connection string that references the emulator account name and key, you must specify the endpoints for each of the services you wish to use from the emulator in the connection string. これは、接続文字列が運用ストレージ アカウントに使用するものと異なるエミュレーター エンドポイントを参照するために必要です。This is necessary so that the connection string will reference the emulator endpoints, which are different than those for a production storage account. たとえば、接続文字列の値は次のようになります。For example, the value of your connection string will look like this:

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

この値は、前述のショートカット UseDevelopmentStorage=trueと同じです。This value is identical to the shortcut shown above, UseDevelopmentStorage=true.

HTTP プロキシを指定するSpecify an HTTP proxy

また、サービスをストレージ エミュレーターでテストする際に使用する HTTP プロキシを指定することもできます。You can also specify an HTTP proxy to use when you're testing your service against the storage emulator. これは、ストレージ サービスに対する操作をデバッグするとき、HTTP の要求と応答を調べる場合に便利です。This can be useful for observing HTTP requests and responses while you're debugging operations against the storage services. プロキシを指定するには、 DevelopmentStorageProxyUri オプションを接続文字列に追加し、値としてプロキシ URI を設定します。To specify a proxy, add the DevelopmentStorageProxyUri option to the connection string, and set its value to the proxy URI. たとえば、次に示す接続文字列は、ストレージ エミュレーターを指しており、HTTP プロキシを構成しています。For example, here is a connection string that points to the storage emulator and configures an HTTP proxy:

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri

ストレージ エミュレーターについて詳しくは、「開発とテストのための Azure のストレージ エミュレーター使用」をご覧ください。For more information about the storage emulator, see Use the Azure storage emulator for development and testing.

Azure Storage アカウントの接続文字列を構成するConfigure a connection string for an Azure storage account

Azure Storage アカウントへの接続文字列は、次の形式で作成します。To create a connection string for your Azure storage account, use the following format. HTTPS (推奨) と HTTP のどちらを使用してストレージ アカウントに接続するかを指定し、myAccountName をストレージ アカウントの名前に、myAccountKey をアカウント アクセス キーに置き換えます。Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, and replace myAccountKey with your account access key:

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

たとえば、接続文字列は次のようになります。For example, your connection string might look similar to:

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

Azure Storage では、HTTP と HTTPS の両方の接続文字列をサポートします。ただし、"HTTPS の使用を強くお勧めします"。Although Azure Storage supports both HTTP and HTTPS in a connection string, HTTPS is highly recommended.

ヒント

お使いのストレージ アカウントの接続文字列は、Azure Portal に見つかります。You can find your storage account's connection strings in the Azure portal. ストレージ アカウントのメニュー ブレードの設定 > 、アクセス キーの順に移動して、両方のプライマリおよびセカンダリのアクセス キーの接続文字列を確認できます。Navigate to SETTINGS > Access keys in your storage account's menu blade to see connection strings for both primary and secondary access keys.

Shared Access Signature を使用して接続文字列を作成するCreate a connection string using a shared access signature

ストレージ アカウント内のリソースへのアクセスを許可する Shared Access Signature (SAS) の URL を所有している場合は、その SAS を接続文字列の中で使用できます。If you possess a shared access signature (SAS) URL that grants you access to resources in a storage account, you can use the SAS in a connection string. 要求を認証するために必要な情報は SAS に保持されているため、リソースにアクセスするために必要な資格情報、サービス エンドポイント、プロトコルが、SAS を含んだ接続文字列によって得られます。Because the SAS contains the information required to authenticate the request, a connection string with a SAS provides the protocol, the service endpoint, and the necessary credentials to access the resource.

共有アクセス署名を含む接続文字列を作成するには、文字列を次の形式で指定します。To create a connection string that includes a shared access signature, specify the string in the following format:

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

サービス エンドポイントはいずれも省略可能ですが、少なくとも 1 つは、接続文字列に存在する必要があります。Each service endpoint is optional, although the connection string must contain at least one.

注意

ベスト プラクティスとして、SAS は HTTPS と組み合わせて使用することをお勧めします。Using HTTPS with a SAS is recommended as a best practice.

構成ファイル内で接続文字列に SAS を指定する場合、URL に含まれる特殊文字のエンコードが必要になる場合があります。If you are specifying a SAS in a connection string in a configuration file, you may need to encode special characters in the URL.

サービス SAS の例Service SAS example

Blob Storage のサービス SAS を含んだ接続文字列の例を次に示します。Here's an example of a connection string that includes a service SAS for Blob storage:

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

そしてこちらが、同じ接続文字列に特殊文字のエンコードを適用した例です。And here's an example of the same connection string with encoding of special characters:

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 の例Account SAS example

Blob Storage と File Storage に使用されるアカウントの SAS を含んだ接続文字列の例を次に示します。Here's an example of a connection string that includes an account SAS for Blob and File storage. 両方のサービスのエンドポイントが指定されていることに注意してください。Note that endpoints for both services are specified:

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 エンコードを適用した例です。And here's an example of the same connection string with URL encoding:

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

明示的なストレージ エンドポイントへの接続文字列を作成するCreate a connection string for an explicit storage endpoint

接続文字列の中で、既定のエンドポイントを使用せずに、明示的なサービス エンドポイントを指定することができます。You can specify explicit service endpoints in your connection string instead of using the default endpoints. 明示的なエンドポイントを指定する接続文字列を作成するには、次に示す形式を使用して、プロトコル仕様 (HTTPS (推奨) または HTTP) を含む完全なサービス エンドポイントをサービスごとに指定します。To create a connection string that specifies an explicit endpoint, specify the complete service endpoint for each service, including the protocol specification (HTTPS (recommended) or HTTP), in the following format:

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

たとえば Blob Storage のエンドポイントをカスタム ドメインにマップしてある場合、明示的なエンドポイントの指定が必要になります。One scenario where you might wish to specify an explicit endpoint is when you've mapped your Blob storage endpoint to a custom domain. その場合は、接続文字列で Blob Storage へのカスタム エンドポイントを指定できます。In that case, you can specify your custom endpoint for Blob storage in your connection string. お使いのアプリケーションが使用している場合は、その他のサービスへの既定のエンドポイントを指定することもできます。You can optionally specify the default endpoints for the other services if your application uses them.

Blob service のエンドポイントを明示的に指定する接続文字列の例を次に示します。Here is an example of a connection string that specifies an explicit endpoint for the Blob service:

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

この例では、Blob service のカスタム ドメインを含むすべてのサービスへの明示的なエンドポイントを指定します。This example specifies explicit endpoints for all services, including a custom domain for the Blob service:

# 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 の形式が決まります。The endpoint values in a connection string are used to construct the request URIs to the storage services, and dictate the form of any URIs that are returned to your code.

カスタム ドメインにストレージ エンドポイントをマッピングし、そのエンドポイントを接続文字列に指定しなかった場合、コードからその接続文字列を使用して、サービスのデータにアクセスすることはできません。If you've mapped a storage endpoint to a custom domain and omit that endpoint from a connection string, then you will not be able to use that connection string to access data in that service from your code.

重要

接続文字列のサービス エンドポイントの値は、https://(推奨) や http:// など、整形式の URI である必要があります。Service endpoint values in your connection strings must be well-formed URIs, including https:// (recommended) or http://. Azure Storage はカスタム ドメインに対して HTTPS をサポートしていないため、カスタム ドメインを指すすべてのエンドポイント URI に http:// を指定する "必要があります"。Because Azure Storage does not yet support HTTPS for custom domains, you must specify http:// for any endpoint URI that points to a custom domain.

エンドポイント サフィックスを含む接続文字列を作成するCreate a connection string with an endpoint suffix

Azure China 21Vianet、Azure Government など、別のエンドポイント サフィックスを持つリージョンまたはインスタンスのストレージ サービスの接続文字列を作成するには、次の接続文字列の形式を使用します。To create a connection string for a storage service in regions or instances with different endpoint suffixes, such as for Azure China 21Vianet or Azure Government, use the following connection string format. HTTPS (推奨) または HTTP のどちらでストレージ アカウントに接続するかを示し、myAccountName をストレージ アカウントの名前、myAccountKey をアカウント アクセス キー、mySuffix を URI サフィックスに置き換えます。Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, replace myAccountKey with your account access key, and replace mySuffix with the URI suffix:

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

Azure China 21Vianet のストレージ サービスの接続文字列の例を次に示します。Here's an example connection string for storage services in Azure China 21Vianet:

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

接続文字列の解析Parsing a connection string

.NET 用 Microsoft Azure Configuration Manager ライブラリ には、構成ファイルの接続文字列を解析するためのクラスが用意されています。The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. CloudConfigurationManager クラスで構成の設定を解析します。The CloudConfigurationManager class parses configuration settings. デスクトップ、モバイル デバイス、Azure 仮想マシン、または Azure クラウド サービスで実行されるクライアント アプリケーションの設定を解析します。It parses settings for client applications that run on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

CloudConfigurationManager パッケージを参照するには、次の using ディレクティブを追加します。To reference the CloudConfigurationManager package, add the following using directives:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

構成ファイルから接続文字列を取得する方法の例を次に示します。Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

Azure Configuration Manager の使用はオプションです。Using the Azure Configuration Manager is optional. また、.NET Framework の ConfigurationManager クラスなどの API を使用することもできます。You can also use an API such as the .NET Framework's ConfigurationManager Class.

次のステップNext steps