この記事では、.NET 用 Azure Storage 管理ライブラリを使用して Azure Storage リソースに接続する方法について説明します。 接続すると、ストレージ アカウントの作成、更新、削除、ストレージ アカウント設定の管理を行うことができます。 Azure Storage クライアント ライブラリを使用したリソース管理とデータ アクセスの違いについては、「Azure Storage クライアント ライブラリの概要」を参照してください。
API リファレンス | NuGet | GitHub | フィードバックを送信
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- 使用するオペレーティング システム用の最新の .NET SDK。 ランタイムではなく、必ず SDK を入手してください。
プロジェクトの設定
このセクションでは、.NET 用 Azure Storage 管理ライブラリを使用して作業するためのプロジェクトの準備について説明します。
プロジェクト ディレクトリから、dotnet add package
コマンドを使用して、Azure Storage Resource Manager と Azure ID クライアント ライブラリのパッケージをインストールします。 Azure サービスへのパスワードレス接続には、Azure.Identity パッケージが必要です。
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
次の using
ディレクティブをコード ファイルの先頭に追加します。
using Azure.Identity;
using Azure.ResourceManager;
管理ライブラリ情報:
- Azure.ResourceManager.Storage: ストレージ アカウントを管理するためのコレクション、リソース、およびデータを表すプライマリ クラスが含まれています。
アクセスの認可とクライアントの作成
アプリケーションを接続し、ストレージ アカウント リソースを管理するには、ArmClient オブジェクトを作成します。 このクライアント オブジェクトは、すべての Azure Resource Manager (ARM) クライアントのエントリ ポイントです。 すべての管理 API が同じエンドポイントを経由するため、リソースを操作するために作成する必要がある最上位レベルの ArmClient
は 1 つだけです。
Azure RBAC を使用して管理アクセス許可を割り当てる
Azure には、管理操作を呼び出すアクセス許可を付与する組み込みロールが用意されています。 Azure Storage には、Azure Storage リソース プロバイダー専用の組み込みロールも用意されています。 詳細については、「管理操作のための組み込みロール」を参照してください。
DefaultAzureCredential を使用してアクセスを承認する
Microsoft Entra 認可トークンを使用して、 ArmClient
オブジェクトを承認できます。 この記事のコード例では、DefaultAzureCredential
を使用してクライアント オブジェクトを承認します。
DefaultAzureCredential
クラスは、Azure にデプロイされるアプリケーションの既定の TokenCredential
認証フローを提供します。 詳細については、「DefaultAzureCredential」を参照してください。
Microsoft Entra ID を使用して認可するには、セキュリティ プリンシパルを使用する必要があります。 必要なセキュリティ プリンシパルの種類は、アプリケーションの実行場所によって異なります。 次の表をガイドとして使用します。
アプリケーションの実行場所 | セキュリティ プリンシパル | ガイダンス |
---|---|---|
ローカル コンピューター (開発とテスト) | サービス プリンシパル | アプリの登録、Microsoft Entra グループの設定、ロールの割り当て、環境変数の構成の方法を確認するには、開発者サービス プリンシパルを使用してアクセスを認可する方法に関する記事を参照してください |
ローカル コンピューター (開発とテスト) | ユーザー ID | Microsoft Entra グループを設定し、ロールを割り当て、Azure にサインインする方法については、開発者資格情報を使用してアクセスを認可する方法に関する記事を参照してください |
Azure でホスト | マネージド ID | マネージド ID を有効にしてロールを割り当てる方法については、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用してアクセスを承認するためのガイダンスを参照してください。 |
Azure の外部でホストされる (オンプレミス アプリなど) | サービス プリンシパル | アプリを登録し、ロールを割り当て、環境変数を構成する方法については、アプリケーション サービス プリンシパルを使用してオンプレミス アプリからのアクセスを承認する方法に関する記事を参照してください |
アクセスを承認してストレージ アカウント リソースに接続する簡単で安全な方法は、DefaultAzureCredential インスタンスを作成して OAuth トークンを取得することです。 その後、その資格情報を使用して ArmClient オブジェクトを作成できます。
次の例では、DefaultAzureCredential
を使用して認可された ArmClient
オブジェクトを作成してから、指定されたサブスクリプション ID のサブスクリプション リソースを取得します。
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);
ユーザーの認証に使用する資格情報の種類が正確にわかっている場合は、.NET 用 Azure ID クライアント ライブラリの他のクラスを使用して OAuth トークンを取得できます。 これらのクラスは TokenCredential クラスから取得されます。
管理操作の承認の詳細については、「Azure RBAC を使用して管理アクセス許可を割り当てる」を参照してください。
ストレージ リソースプロバイダーをサブスクリプションに登録する
リソース プロバイダーを使用するには、Azure サブスクリプションに登録しておく必要があります。 この手順は、サブスクリプションごとに 1 回だけ実行する必要があり、リソース プロバイダー Microsoft.Storage が現在サブスクリプションに登録されていない場合にのみ適用されます。
ストレージ リソース プロバイダーを登録するか、Azure portal、Azure CLI、または Azure PowerShell を使用して登録状態をチェックできます。
次の例に示すように、Azure 管理ライブラリを使用して登録状態をチェックし、ストレージ リソース プロバイダーを登録することもできます。
public static async Task RegisterSRPInSubscription(SubscriptionResource subscription)
{
ResourceProviderResource resourceProvider =
await subscription.GetResourceProviderAsync("Microsoft.Storage");
// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
resourceProvider.Register();
}
Note
登録操作を実行するには、次の Azure RBAC アクション Microsoft.Storage/register/action に対するアクセス許可が必要です。 このアクセス許可は、共同作成者 と 所有者 の組み込みロールに含まれます。
ストレージ アカウント リソースを管理するためのクライアントを作成する
ArmClient
オブジェクトを作成し、ストレージ リソース プロバイダーを登録した後、リソース グループとストレージ アカウント レベルでクライアント オブジェクトを作成できます。 次のコード例では、特定のリソース グループとストレージ アカウントのクライアント オブジェクトを作成する方法を示します。
// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);
// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();
// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);
クライアント リソース階層についての理解
一般的なタスクを実行するために必要なクライアントの数と、各クライアントによって実行される冗長パラメーターの数の両方を減らすために、管理 SDK により、Azure のオブジェクト階層を反映するオブジェクト階層が提供されます。 SDK の各リソース クライアントには、スコープが既に適切なサブスクリプションとリソース グループに設定されている、その子のリソース クライアントにアクセスするためのメソッドが含まれています。
リソースの種類ごとに 3 つの標準レベルの階層があります。 ストレージ アカウント リソースの階層は次のとおりです。
- StorageAccountCollection: 特定の親リソースに属するストレージ アカウントのコレクション (リソース グループなど) に対して実行できる操作を表します。
-
StorageAccountResource: 完全なストレージ アカウント クライアント オブジェクトを表し、詳細を
StorageAccountData
タイプとして公開する Data プロパティを含みます。 クラス インスタンスは、サブスクリプション ID やリソース名などのスコープ パラメーターを渡す必要なく、そのリソースに対するすべての操作にアクセスできます。 - StorageAccountData: 特定のリソースを構成するモデルを表します。 通常、このクラスはサービス呼び出しからの応答データであり、リソースに関する詳細を提供します。
アプリケーションをビルドする
次のガイドでは、.NET 用 Azure Storage 管理ライブラリを使用してリソースを管理し、特定のアクションを実行する方法について説明します。
ガイド | 説明 |
---|---|
ストレージ アカウントの管理 | ストレージ アカウントの作成と管理、ストレージ アカウント キーの管理、およびカスタム再試行ポリシーを作成するためのクライアント オプションの構成方法について説明します。 |