Azure Blob Storage と .NET の作業を始める
- [アーティクル]
-
-
この記事では、.NET 用 Azure Blob Storage クライアント ライブラリを使用して、Azure Blob Storage に接続する方法について説明します。 接続したら、開発者ガイドを使用して、Blob Storage サービスのコンテナー、BLOB、機能に対してコードを操作する方法について学習します。
最初から最後までの手順を示す例については、「クイックスタート: .NET 用 Azure Blob Storage クライアント ライブラリ」を参照してください。
API リファレンス | ライブラリ ソース コード | PAKケージ (NuGet) | サンプル | フィードバックを送る
このセクションでは、.NET 用 Azure Blob Storage クライアント ライブラリを操作するためのプロジェクトの準備について説明します。
プロジェクト ディレクトリから、dotnet add package
コマンドを使用して、Azure Blob Storage と Azure ID のクライアント ライブラリのパッケージをインストールします。 Azure サービスへのパスワードレス接続には、Azure.Identity パッケージが必要です。
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
次の using
ディレクティブをコード ファイルの先頭に追加します。
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
BLOB クライアント ライブラリ情報:
Blob Storage へのアクセスを承認して接続する
アプリを BLOB Storage に接続するには、BlobServiceClient クラスのインスタンスを作成します。 このオブジェクトは、ストレージ アカウント レベルでデータ リソースを操作するための開始点となります。 それを使って、ストレージ アカウントとそのコンテナーを操作できます。 また、操作する必要があるリソースに応じて、サービス クライアントを使用してコンテナー クライアントまたは BLOB クライアントを作成することもできます。
クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。
Microsoft Entra 認可トークン、アカウント アクセス キー、または Shared Access Signature (SAS) を使用して、BlobServiceClient
オブジェクトを認可できます。 最適なセキュリティのため、Microsoft では、可能な限り、Microsoft Entra ID とマネージド ID を使って、BLOB データに対する要求を認可することをお勧めします。 詳しくは、Microsoft Entra ID を使用した BLOB へのアクセスの認可に関する記事をご覧ください。
Microsoft Entra ID を使用して認可するには、セキュリティ プリンシパルを使用する必要があります。 必要なセキュリティ プリンシパルの種類は、アプリが実行される場所によって異なります。 次の表を参考にしてください。
DefaultAzureCredential を使用してアクセスを承認する
Blob Storage へのアクセスを承認して接続する最も簡単で安全な方法は、DefaultAzureCredential インスタンスを作成して OAuth トークンを取得することです。 その後、その資格情報を使用して BlobServiceClient オブジェクトを作成できます。
この例では、DefaultAzureCredential
を使用して認可された BlobServiceClient
オブジェクトを作成します。
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
ユーザーの認証に使用する資格情報の種類が正確にわかっている場合は、.NET 用 Azure ID クライアント ライブラリの他のクラスを使用して OAuth トークンを取得できます。 これらのクラスは TokenCredential クラスから取得されます。
.NET アプリに依存関係の挿入用のクライアントを登録することもできます。 詳しくは、「Azure SDK for .NET での依存関係の挿入」をご覧ください。
Blob service エンドポイントと SAS トークンを使って、URI を作成します。 次に、その URI を使って BlobServiceClient を作成します。
public static void GetBlobServiceClientSAS(ref BlobServiceClient blobServiceClient,
string accountName, string sasToken)
{
string blobUri = "https://" + accountName + ".blob.core.windows.net";
blobServiceClient = new BlobServiceClient
(new Uri($"{blobUri}?{sasToken}"), null);
}
SAS トークンの生成と管理の詳細については、次の記事を参照してください。
注意
Microsoft では、Shared Access Signature (SAS) を使うシナリオにはユーザー委任 SAS を使うことをお勧めします。 ユーザー委任 SAS は、アカウント キーの代わりに Microsoft Entra 資格情報で保護されます。
ストレージ アカウント名とアカウント キーを使って、StorageSharedKeyCredential を作成します。 その後、そのオブジェクトを使って BlobServiceClient を初期化します。
public static void GetBlobServiceClient(ref BlobServiceClient blobServiceClient,
string accountName, string accountKey)
{
Azure.Storage.StorageSharedKeyCredential sharedKeyCredential =
new StorageSharedKeyCredential(accountName, accountKey);
string blobUri = "https://" + accountName + ".blob.core.windows.net";
blobServiceClient = new BlobServiceClient
(new Uri(blobUri), sharedKeyCredential);
}
接続文字列を使って BlobServiceClient を作成することもできます。
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
アカウント キーの取得方法と、キーを適切に管理して保護するためのベスト プラクティス ガイドラインについては、「ストレージ アカウント アクセス キーを管理する」をご覧ください。
重要
アカウント アクセス キーは慎重に使用する必要があります。 アカウント アクセス キーを紛失した場合、または誤ってセキュリティで保護されていない場所に置いた場合には、サービスが脆弱になる可能性があります。 アクセス キーを持つすべてのユーザーは、ストレージ アカウントに対する要求を承認でき、実質的にすべてのデータにアクセスできます。
DefaultAzureCredential
はセキュリティ機能と利点が強化されており、Azure サービスに対する認可を管理するために推奨されるアプローチです。
これらの各承認メカニズムについて詳しくは、「Azure Storage 内のデータへのアクセスを承認する」をご覧ください。
Azure Blob Storage のデータ リソースを操作するアプリを構築する際、コードでは主に、ストレージ アカウント、コンテナー、BLOB という 3 つのリソースの種類と対話します。 これらのリソースの種類、リソースの相互関係、およびアプリがリソースと対話する方法について詳しくは、「アプリが Blob Storage データ リソースと対話する方法を理解する」を参照してください。
以下のガイドでは、.NET 用の Azure Storage クライアント ライブラリを使用してデータにアクセスし、特定のアクションを実行する方法について説明します。