接続文字列には、アプリケーションが共有キー承認を使用して実行時にAzure Storage アカウント内のデータにアクセスするために必要な承認情報が含まれます。 接続文字列は、次の目的に構成できます。
- Azurite ストレージ エミュレーターに接続します。
- Azureでストレージ アカウントにアクセスします。
- shared access signature (SAS) を使用して、Azure内の指定されたリソースにアクセスします。
アカウント アクセス キーを表示し、接続文字列をコピーする方法については、「Manage ストレージ アカウント アクセス キー」を参照>。
重要
最適なセキュリティを確保するために、Microsoftはマネージド ID でMicrosoft Entra IDを使用して、可能な限り BLOB、キュー、テーブル データに対する要求を承認することをお勧めします。 Microsoft Entra ID ID とマネージド ID を使用した承認により、共有キーの承認よりも優れたセキュリティと使いやすさが提供されます。 マネージド ID の詳細については、「Azure リソースのマネージド ID とはを参照してください。 .NET アプリケーションのマネージド ID を有効にして使用する方法の例については、 .NET でリソースをAzureするためのAzureホスト型アプリの認証に関するページを参照してください。
オンプレミスのアプリケーションなど、Azureの外部でホストされているリソースの場合は、Azure Arcを介してマネージド ID を使用できます。たとえば、Azure Arc対応サーバーで実行されているアプリは、マネージド ID を使用してAzure サービスに接続できます。 詳細については、「
Shared Access Signature (SAS) が使用されるシナリオでは、Microsoftはユーザー委任 SAS を使用することをお勧めします。 ユーザー委任 SAS は、アカウント キーではなくMicrosoft Entra資格情報で保護されます。 Shared Access Signature について詳しくは、Shared Access Signature によるデータへの制限付きアクセスの許可に関する記事をご覧ください。 .NETでユーザー委任 SAS を作成して使用する方法の例については、「 .NET を使用した BLOB のユーザー委任 SAS の作成」を参照してください。
アクセス キーの保護
ストレージ アカウント アクセス キーは、ストレージ アカウントのデータと SAS トークン生成機能へのフル アクセスを提供します。 アクセス キーは常に慎重に保護してください。 Azure Key Vaultを使用して、キーを安全に管理およびローテーションします。 共有キーへのアクセスにより、ストレージ アカウントのデータへのフル アクセスがユーザーに許可されます。 共有キーへのアクセスは慎重に制限し、監視する必要があります。 Microsoft Entra ID ベースの承認を使用できないシナリオでは、アクセス範囲が制限されたユーザー委任 SAS トークンを使用します。 アクセス キーをハードコーディングしたり、他のユーザーがアクセスできるプレーンテキストで保存したりしないでください。 キーが侵害された可能性があると思われる場合は、キーをローテーションしてください。
重要
ユーザーが共有キーを使用してストレージ アカウント内のデータにアクセスできないようにするには、ストレージ アカウントに対する共有キーの認可を禁止します。 セキュリティのベスト プラクティスとして、必要最小限の特権でデータに細かくアクセスすることをお勧めします。 マネージド ID を使用したMicrosoft Entra IDベースの承認は、OAuth をサポートするシナリオに使用する必要があります。 SMB 経由のAzure Filesには Kerberos を使用する必要があります。 REST 経由でAzure Filesする場合は、SAS トークンを使用できます。 共有キー アクセスは、不注意による使用を防ぐために、必要でない場合は無効にする必要があります。 詳細については、Azure Storage アカウントでの共有キー承認の防止を参照してください。
Microsoft Entra 条件付きアクセス ポリシーを使用してAzure Storage アカウントを保護するには、ストレージ アカウントの共有キーの承認を禁止する必要があります。
共有キー アクセスが無効になっていて、診断ログに共有キーの認可が報告されている場合は、ストレージへのアクセスに信頼されたアクセスが使用されていることを示しています。 詳細については、「Microsoft Entra テナントに登録されているリソースの信頼されたアクセスを参照してください。
接続文字列を格納する
アプリケーションは、実行時に接続文字列にアクセスして、Azure Storageに対する要求を承認する必要があります。 アカウント アクセス キーまたは接続文字列を格納するには、いくつかのオプションがあります。
- Microsoftでは、アカウント キーではなく、Microsoft Entra IDを使用してAzure Storageへのアクセスを承認することをお勧めします。 アカウント キーを使用する必要がある場合は、Azure Key Vaultに安全に格納します。 詳細については、「
Azure Storage を参照してください。 - 接続文字列は環境変数に格納できます。
- アプリケーションは、接続文字列を app.config または web.config ファイルに格納できます。 これらのファイルの AppSettings セクションに接続文字列を追加します。
警告
アカウント アクセス キーまたは接続文字列をクリア テキストに格納すると、セキュリティ 上のリスクが伴い、推奨されません。 暗号化された形式でアカウント キーを格納するか、ストレージ アカウントへのアクセスにMicrosoft Entra承認を使用するようにアプリケーションを移行します。
Azurite の接続文字列を構成する
エミュレーターでは、共有キー認証について、単一の固定アカウントと既知の認証キーがサポートされています。 このアカウントとキーのみ、エミュレーターで共有キー資格情報として使用できます。 これらは次のとおりです。
Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
注釈
エミュレーターでサポートされている認証キーは、クライアント認証コードの機能をテストすることだけを目的としています。 セキュリティ機能は果たしません。 エミュレーターで運用環境のストレージ アカウントとキーを使用することはできません。 開発アカウントを運用データで使用することは避けてください。
エミュレーターでは HTTP 経由の接続のみがサポートされます。 ただし、HTTPS は、運用Azureストレージ アカウント内のリソースにアクセスするための推奨プロトコルです。
ショートカットを使用してエミュレーター アカウントに接続する
アプリケーションからエミュレーターに接続する最も簡単な方法は、ショートカット 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) コンストラクターは接続文字列を受け取ります。
BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();
スニペット内のコードを呼び出す前に、エミュレーターが実行されていることを確認します。
Azurite の詳細については、「ローカル Azure Storage開発に Azurite エミュレーターを使用するを参照してください。
Azure ストレージ アカウントの接続文字列を構成する
Azure ストレージ アカウントの接続文字列を作成するには、次の形式を使用します。 HTTPS (推奨) と HTTP のどちらを使用してストレージ アカウントに接続するかを指定し、myAccountName をストレージ アカウントの名前に、myAccountKey をアカウント アクセス キーに置き換えます。
DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey
たとえば、接続文字列は次のようになります。
DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>
Azure Storageは接続文字列で HTTP と HTTPS の両方をサポートしていますが、HTTPS を強くお勧めします。
ヒント
ストレージ アカウントの接続文字列は、Azure ポータルで確認できます。 ストレージ アカウントの設定のセキュリティとネットワーク>アクセス キーの順に移動して、両方のプライマリおよびセカンダリのアクセス キーの接続文字列を確認できます。
Shared Access Signature を使用して接続文字列を作成する
ストレージ アカウント内のリソースへのアクセスを許可する SHARED Access Signature (SAS) URL を所有している場合は、接続文字列で SAS を使用できます。 SAS には要求の認証に必要な情報が含まれているため、SAS を使用した接続文字列は、プロトコル、サービス エンドポイント、およびリソースにアクセスするために必要な資格情報を提供します。
Shared Access Signature を含む接続文字列を作成するには、次の形式で文字列を指定します。
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
各サービス エンドポイントは省略可能ですが、接続文字列には少なくとも 1 つ含まれている必要があります。
注釈
ベスト プラクティスとして、SAS は HTTPS と組み合わせて使用することをお勧めします。
構成ファイルの接続文字列で SAS を指定する場合は、URL で特殊文字をエンコードする必要がある場合があります。
サービス SAS の例
Blob Storage のサービス SAS を含む接続文字列の例を次に示します。
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&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
アカウント SAS の例
Blob Storage と File Storage に使用されるアカウントの SAS を含んだ接続文字列の例を次に示します。 両方のサービスのエンドポイントが指定されていることに注意してください。
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&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
明示的なストレージ エンドポイントの接続文字列を作成する
既定のエンドポイントを使用する代わりに、接続文字列で明示的なサービス エンドポイントを指定できます。 明示的なエンドポイントを指定する接続文字列を作成するには、プロトコル仕様 (HTTPS (推奨) または HTTP を含む、各サービスの完全なサービス エンドポイントを次の形式で指定します。
DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey
たとえば Blob Storage のエンドポイントをカスタム ドメインにマップしてある場合、明示的なエンドポイントの指定が必要になります。 その場合は、接続文字列で BLOB ストレージのカスタム エンドポイントを指定できます。 お使いのアプリケーションが使用している場合は、その他のサービスへの既定のエンドポイントを指定することもできます。
BLOB サービスの明示的なエンドポイントを指定する接続文字列の例を次に示します。
# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>
この例では、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 の形式を指定するために使用されます。
ストレージ エンドポイントをカスタム ドメインにマップし、接続文字列からそのエンドポイントを省略した場合、その接続文字列を使用してコードからそのサービスのデータにアクセスすることはできません。
Azure Storage用にカスタム ドメインを構成する方法の詳細については、「カスタム ドメインを Azure Blob Storage エンドポイントにマップするを参照してください。
重要
接続文字列のサービス エンドポイントの値は、https://(推奨) や http:// など、整形式の URI である必要があります。
エンドポイント サフィックスを持つ接続文字列を作成する
21Vianet または Azure Government によって動作するMicrosoft Azureなど、異なるエンドポイント サフィックスを持つリージョンまたはインスタンスのストレージ サービスの接続文字列を作成するには、次の接続文字列形式を使用します。 HTTPS (推奨) または HTTP のどちらでストレージ アカウントに接続するかを示し、myAccountName をストレージ アカウントの名前、myAccountKey をアカウント アクセス キー、mySuffix を URI サフィックスに置き換えます。
DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;
21Vianet によって運用されるAzureのストレージ サービスの接続文字列例を次に示します。
DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;
共有キーを使用したアクセスの認可
アカウント キーまたは接続文字列を使用してAzure Storageへのアクセスを承認する方法については、次のいずれかの記事を参照してください。
アクセスを認証し、.NET アクセスを認証し、Java - アクセスを認証し、JavaScript を使用してBlob Storageに接続します
アクセスを認証し、Python
次のステップ
Shared Access Signature (SAS) - ローカルAzure Storage開発には Azurite エミュレーターを使用します