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).

ヒント

Azure Storage では、Azure Active Directory (Azure AD) を使用して BLOB および Queue ストレージへの要求を承認することができます。Azure Storage supports authorizing requests to Blob and Queue storage using Azure Active Directory (Azure AD). Azure AD から返された OAuth 2.0 トークンを使用してユーザーまたはアプリケーションを承認する方法は、セキュリティと使いやすさの面で、共有キー承認よりも優位です。Authorizing users or applications using an OAuth 2.0 token returned by Azure AD provides superior security and ease of use over Shared Key authorization. Azure AD を使用すれば、アカウント アクセス キーをコードに保存する必要がないため、潜在的なセキュリティ脆弱性のリスクを排除できます。With Azure AD, there is no need to store the account access key with your code and risk potential security vulnerabilities.

さらに Azure Storage は、BLOB ストレージのユーザー委任 Shared Access Signature (SAS) をサポートしています。Additionally, Azure Storage supports the user delegation shared access signature (SAS) for Blob storage. ユーザー委任 SAS は Azure AD の資格情報を使用して署名されます。The user delegation SAS is signed with Azure AD credentials. アプリケーション設計で、BLOB ストレージへのアクセスのため、Shared Access Signature が必要な場合は、セキュリティを強化するために、Azure AD 資格情報を使用してユーザー委任 SAS を作成してください。When your application design requires shared access signatures for access to Blob storage, use Azure AD credentials to create a user delegation SAS for superior security.

Azure Storage アプリケーションでは、できる限り Azure AD を使用することをお勧めします。Microsoft recommends using Azure AD with your Azure Storage applications when possible. 詳細については、Azure Active Directory を使用して Azure BLOB およびキューへのアクセスを承認する方法に関するページを参照してください。For more information, see Authorize access to Azure blobs and queues using Azure Active Directory.

重要

ストレージ アカウント キーは、ストレージ アカウントの root パスワードに似ています。Your storage account key is similar to the root password for your storage account. アカウント キーは常に慎重に保護してください。Always be careful to protect your account key. このキーを他のユーザーに配布したり、ハードコーディングしたり、他のユーザーがアクセスできるプレーン テキストで保存したりしないでください。Avoid distributing it to other users, hard-coding it, or saving it anywhere in plaintext that is accessible to others. アカウント キーが侵害されたと思われる場合は、Azure Portal を使用してキーを再生成してください。Regenerate your account key using the Azure portal if you believe it may have been compromised.

SAS (Shared Access Signature) トークンは、アカウント アクセス キーと同じように厳重な保護が必要です。SAS (Shared Access Signature) tokens are critical to protect just like the account access keys. きめ細かな制御を提供する一方で、SAS はストレージ アカウント内のリソースへのアクセス権を付与するため、パブリックに共有してはなりません。While providing granularity SAS grants clients access to the resources in your storage account and should not be shared publicly. トラブルシューティングのために共有が必要な場合は、機密情報を除去したバージョンのログ ファイルを使用すること、または SAS トークン (存在する場合) をログ ファイルから削除することを検討し、スクリーンショットに SAS 情報が含まれていないことも確認してください。When sharing is required for troubleshooting reasons consider using a redacted version of any log files or deleting the SAS tokens (if present) from the log files, and make sure the screenshots don't contain the SAS information either.

接続文字列を表示およびコピーするView and copy a connection string

Azure portal からストレージ アカウントのアクセス キーまたは接続文字列を表示およびコピーするには:To view and copy your storage account access keys or connection string from the Azure portal:

  1. Azure Portal に移動します。Navigate to the Azure portal.

  2. 自分のストレージ アカウントを探します。Locate your storage account.

  3. ストレージ アカウントの概要の [設定] セクションで、 [アクセス キー] を選択します。In the Settings section of the storage account overview, select Access keys. アカウント アクセス キーと、各キーの完全な接続文字列が表示されます。Your account access keys appear, as well as the complete connection string for each key.

  4. [key1][キー] 値を見つけ、 [コピー] ボタンをクリックしてアカウント キーをコピーします。Find the Key value under key1, and click the Copy button to copy the account key.

  5. あるいは、接続文字列全体をコピーできます。Alternately, you can copy the entire connection string. [Key1][接続文字列] の値を見つけて [コピー] ボタンをクリックし、接続文字列をコピーします。Find the Connection string value under key1, and click the Copy button to copy the connection string.

    Azure portal でアクセス キーを表示する方法を示したスクリーンショット

接続文字列を保存する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 クラスを使用すると、クライアント アプリケーションがデスクトップ、モバイル デバイス、Azure 仮想マシン、Azure クラウド サービスのいずれで実行されているかにかかわらず、構成設定を解析できます。The CloudConfigurationManager class parses configuration settings regardless of whether the client application is running 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 directive:

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 like the .NET Framework's ConfigurationManager class.

次の手順Next steps