Azure Storage では、Microsoft Entra ID を使用してキュー データへの要求を承認できます。 Microsoft Entra ID では、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパル (これはユーザー、グループ、アプリケーション サービス プリンシパルのいずれかである可能性があります) にアクセス許可を付与できます。 セキュリティ プリンシパルは、Microsoft Entra ID によって認証され、OAuth 2.0 トークンを返します。 その後、トークンを使用して、Queue サービスに対する要求を承認できます。
Microsoft Entra ID を使った認可によって、共有キー認可よりもセキュリティが向上し、使いやすくなります。 Microsoft では、可能な限り、必要最小限の特権でアクセスできるように、キュー アプリケーションで Microsoft Entra 承認を使用することをお勧めします。
Microsoft Entra ID による承認は、すべてのパブリック リージョンと国内クラウドのすべての汎用ストレージ アカウントで使用できます。 Microsoft Entra 認可をサポートしているのは、Azure Resource Manager デプロイ モデルで作成されたストレージ アカウントだけです。
キューに関する Microsoft Entra ID の概要
セキュリティ プリンシパル (ユーザー、グループ、またはアプリケーション) がキュー リソースへのアクセスを試みる場合、匿名アクセスに使用できるキューでない限り、要求を承認する必要があります。 Microsoft Entra ID では、リソースへのアクセスは 2 段階のプロセスです。
まず、セキュリティ プリンシパルの ID が認証され、OAuth 2.0 トークンが返されます。
認証の手順では、アプリケーションが実行時に OAuth 2.0 アクセス トークンを要求する必要があります。 アプリケーションが Azure VM、仮想マシン スケール セット、Azure Functions アプリなどの Azure エンティティ内から実行されている場合は、 マネージド ID を 使用してキュー データにアクセスできます。
次に、そのトークンが Queue サービスへの要求の一部として渡され、指定されたリソースへのアクセスを承認するためにサービスによって使用されます。
承認の手順では、要求を行うセキュリティ プリンシパルに 1 つまたは複数の Azure RBAC ロールを割り当てる必要があります。 詳細については、「アクセス権に Azure ロールを割り当てる」を参照してください。
ポータル、PowerShell、または Azure CLI で Microsoft Entra アカウントを使用する
Microsoft Entra アカウントを使用して Azure portal でデータにアクセスする方法については、「Azure portal からのデータ アクセス」を参照してください。 Microsoft Entra アカウントを使用して Azure PowerShell または Azure CLI コマンドを呼び出す方法については、「PowerShell または Azure CLI からのデータ アクセス」を参照してください。
Microsoft Entra ID を使用してアプリケーション コードでのアクセスを認可する
Microsoft Entra ID を使用して Azure Storage へのアクセスを認可するには、次のいずれかのクライアント ライブラリを使用して OAuth 2.0 トークンを取得できます。
- ほとんどの開発シナリオでは、Azure ID クライアント ライブラリをお勧めします。
- Microsoft Authentication Library (MSAL) は、特定の高度なシナリオに適している場合があります。
Azure ID クライアント ライブラリ
Azure ID クライアントライブラリを使うと、Azure SDK を介して Microsoft Entra ID を使って認可するための OAuth 2.0 アクセス トークンを取得するプロセスが簡単になります。 .NET、Java、Python、JavaScript、Go 用の最新バージョンの Azure Storage クライアント ライブラリは、各言語用の Azure ID ライブラリに統合され、Azure Storage 要求を承認するためのアクセス トークンを取得するための簡単で安全な手段が提供されます。
Azure ID クライアント ライブラリの利点は、アプリケーションが開発環境または Azure のどちらで実行されているかにかかわらず、同じコードを使用してアクセス トークンを取得できることです。 Azure ID クライアント ライブラリからは、セキュリティ プリンシパルのためのアクセス トークンが返されます。 コードが Azure で実行されている場合は、セキュリティ プリンシパルは、Azure リソース用のマネージド ID、サービス プリンシパル、またはユーザーやグループのいずれでもかまいません。 開発環境では、クライアント ライブラリにより、ユーザーまたはサービス プリンシパルにテストのためのアクセス トークンが提供されます。
Azure ID クライアント ライブラリによって返されるアクセス トークンは、トークン資格情報にカプセル化されています。 その後、トークン資格情報を使用してサービス クライアント オブジェクトを取得し、Azure Storage に対する承認された操作の実行で使用できます。 アクセス トークンとトークン資格情報を取得する簡単な方法は、Azure ID クライアント ライブラリによって提供される DefaultAzureCredential クラスを使用することです。 DefaultAzureCredential では、複数の異なる資格情報の種類を順番に試行して、トークン資格情報の取得を試みます。 DefaultAzureCredential は、開発環境と Azure の両方で機能します。
次の表は、さまざまなシナリオでデータへのアクセスを承認するための追加情報を示しています。
Microsoft Authentication Library (MSAL)
Microsoft では可能であれば Azure ID クライアント ライブラリを使用することをお勧めしますが、MSAL ライブラリは特定の高度なシナリオで使用するのに適している場合があります。 詳細については、MSAL の詳細に関するページを参照してください。
MSAL を使用して Azure Storage へのアクセスのための OAuth トークンを取得する場合は、Microsoft Entra リソース ID を指定する必要があります。 Microsoft Entra リソース ID は、発行されたトークンを使用して Azure リソースへのアクセスを提供できる対象のユーザーを示します。 Azure Storage の場合、リソース ID は 1 つのストレージ アカウントに固有となるか、あらゆるストレージ アカウントに適用されます。
1 つのストレージ アカウントとサービスに固有のリソース ID を指定すると、そのリソース ID は、指定されたアカウントとサービスのみへの要求を認可するためのトークンを取得するために使用されます。 次の表は、操作しているクラウドに基づいて、リソース ID に使用する値の一覧を示しています。
<account-name>
をストレージ アカウントの名前に置き換えます。
雲 | リソースID |
---|---|
Azure グローバル | https://<account-name>.queue.core.windows.net |
Azure Government(アジュール・ガバメント) | https://<account-name>.queue.core.usgovcloudapi.net |
Azure 中国 21Vianet | https://<account-name>.queue.core.chinacloudapi.cn |
次の表に示すように、任意のストレージ アカウントに適用されるリソース ID を指定することもできます。 このリソース ID はすべてのパブリックおよびソブリン クラウドに対して同じであり、任意のストレージ アカウントへの要求を認可するためのトークンを取得するために使用されます。
雲 | リソースID |
---|---|
Azure グローバル Azure Government(アジュール・ガバメント) Azure 中国 21Vianet |
https://storage.azure.com/ |
アクセス権の Azure ロールを割り当てる
Microsoft Entra では、Azure RBAC を使用して、セキュリティで保護されたリソースへのアクセス権を認可します。 Azure Storage では、キュー データへのアクセスに使用される一般的なアクセス許可のセットを含む一連の組み込み RBAC ロールを定義します。 キュー データにアクセスするためのカスタム ロールを定義することもできます。 キュー アクセス用に Azure ロールを割り当てる方法の詳細については、キュー データにアクセスするための Azure ロールの割り当てに関するページを参照してください。
Microsoft Entra セキュリティ プリンシパルは、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure リソースのマネージド ID である可能性があります。 セキュリティ プリンシパルに割り当てられている RBAC ロールによって、プリンシパルに付与されるアクセス許可が決まります。 キュー アクセス用に Azure ロールを割り当てる方法の詳細については、キュー データへのアクセスのための Azure ロールの割り当てに関するページを参照してください。
場合によっては、キュー リソースへのきめ細かいアクセスを有効にしたり、ストレージ リソースに多数のロール割り当てがある場合にアクセス許可を簡略化したりする必要があります。 Azure 属性ベースのアクセス制御 (Azure ABAC) を使用して、ロール割り当てに関する条件を構成できます。 カスタム役割で条件を使用したり、組み込みロールを選択したりすることができます。 ABAC を使用して Azure Storage リソースの条件を構成する方法の詳細については、「 Azure ロールの割り当て条件を使用してキューへのアクセスを承認する」を参照してください。 キュー データ操作でサポートされる条件の詳細については、「Azure キューの Azure ロール割り当て条件のアクションと属性」を参照してください。
注
Azure Storage アカウントを作成するとき、Microsoft Entra ID を介してデータにアクセスするためのアクセス許可は自動的に割り当てられません。 Queue Storage にアクセスするには、Azure ロールを明示的に割り当てる必要があります。 これは、サブスクリプション、リソース グループ、ストレージ アカウント、またはキューのレベルで割り当てることができます。
リソース スコープ
セキュリティ プリンシパルに Azure RBAC ロールを割り当てる前に、セキュリティ プリンシパルに必要なアクセスのスコープを決定します。 ベスト プラクティスとしては、常にできるだけ狭いスコープのみを付与するのが最善の方法です。 より広い範囲で定義されている Azure RBAC ロールは、その下のリソースによって継承されます。
最も狭いスコープから始めて、次のレベルで Azure キュー リソースへのアクセスのスコープを設定できます。
- 個々のキュー。 このスコープでは、ロールの割り当てはキュー内のメッセージ、およびキューのプロパティとメタデータに適用されます。
- ストレージ アカウント。 このスコープでは、ロールの割り当てがすべてのキューとそのメッセージに適用されます。
- リソース グループ。 このスコープでは、ロールの割り当ては、リソース グループ内のすべてのストレージ アカウントのすべてのキューに適用されます。
- サブスクリプション。 このスコープでは、ロールの割り当ては、サブスクリプション内のすべてのリソース グループ内のすべてのストレージ アカウント内のすべてのキューに適用されます。
- 管理グループ。 このスコープでは、ロールの割り当ては、管理グループ内のすべてのサブスクリプションのすべてのリソース グループ内のすべてのストレージ アカウント内のすべてのキューに適用されます。
Azure RBAC ロールの割り当てのスコープの詳細については、「Azure RBAC のスコープについて」を参照してください。
キューに関する Azure 組み込みロール
Azure RBAC には、Microsoft Entra ID と OAuth を使用してキュー データへのアクセスを承認するための組み込みロールがいくつか用意されています。 Azure Storage のデータ リソースへのアクセス許可を付与するロールの例を次に示します。
- ストレージ キュー データ共同作成者:Azure キューの読み取り/書き込み/削除のアクセス許可を付与するために使用します。
- ストレージ キュー データ閲覧者:Azure キューの読み取り専用アクセス許可を付与するために使用します。
- ストレージ キュー データのメッセージ プロセッサ:Azure Storage キューのピーク、メッセージの取得と削除のアクセス許可を付与するために使用します。
- ストレージ キュー データ メッセージ送信者:Azure Storage キューへのメッセージの追加アクセス許可を付与するために使用します。
Azure 組み込みロールをセキュリティ プリンシパルに割り当てる方法については、「 キュー データにアクセスするための Azure ロールの割り当て」を参照してください。 Azure RBAC ロールとそのアクセス許可を一覧表示する方法については、「Azure ロールの定義を一覧表示する」を参照してください。
Azure Storage の組み込みロールの定義方法については、「ロール定義について」を参照してください。 Azure カスタム ロールの作成については、「Azure カスタム ロール」を参照してください。
セキュリティ プリンシパルがキュー データへのアクセスを許可できるのは、データ アクセス用に明示的に定義されたロールのみです。 所有者、共同作成者、ストレージ アカウント共同作成者などの組み込みロールでは、セキュリティ プリンシパルがストレージ アカウントを管理できますが、Microsoft Entra ID を介してそのアカウント内のキュー データへのアクセスは提供されません。 ただし、ロールに Microsoft.Storage/storageAccounts/listKeys/action が含まれている場合、そのロールが割り当てられているユーザーは、アカウント アクセス キーを使った共有キーによる承認を介してストレージ アカウントのデータにアクセスできます。 詳細については、「Azure portal でキュー データへのアクセスの承認方法を選択する」を参照してください。
データ サービスと管理サービスの両方に対する Azure Storage 用の Azure 組み込みロールの詳細については、「Azure RBAC の Azure 組み込みロール」の「ストレージ」セクションを参照してください。 追加情報として、Azure でアクセス許可を付与するさまざまな種類のロールについては、「Azure ロール、Microsoft Entra ロール、従来のサブスクリプション管理者ロール」を参照してください。
重要
Azure ロールの割り当ての反映には最大で 30 分かかる可能性があります。
データ操作用のアクセス許可
特定の Queue サービス操作を呼び出すために必要なアクセス許可の詳細については、「データ操作を 呼び出すためのアクセス許可」を参照してください。
Microsoft Entra アカウントを使用してデータにアクセスする
Azure portal、PowerShell、または Azure CLI を使用したキュー データへのアクセスは、ユーザーの Microsoft Entra アカウントを使用するか、アカウント アクセス キー (共有キー承認) を使用して承認できます。
注意事項
共有キーを使用した承認は、安全性が低い可能性があるため、お勧めしません。 最適なセキュリティを確保するには、「Azure Storage アカウントの共有キーによる承認を禁止する」の説明に従って、ストレージ アカウントの共有キーによる承認を無効にします。
アクセス キーと接続文字列の使用は、運用環境や機密データにアクセスしない概念実証アプリまたは開発プロトタイプに限定する必要があります。 それ以外の場合は、Azure リソースに対する認証時に、Azure SDK で使用できるトークンベースの認証クラスを常に優先する必要があります。
Microsoft は、クライアントが Microsoft Entra ID または Shared Access Signature (SAS) を使って、Azure Storage 内のデータへのアクセスを認可することをお勧めします。 詳細については、「Azure Storage 内のデータへのアクセスを承認する」を参照してください。
Azure portal からのデータ アクセス
Azure portal では、Microsoft Entra アカウントまたはアカウント アクセス キーのいずれかを使用して、Azure ストレージ アカウントのキュー データにアクセスできます。 Azure portal で使用する認証スキームは、お客様に割り当てられている Azure ロールに応じて異なります。
キュー データにアクセスしようとすると、まず、Azure portal によって 、Microsoft.Storage/storageAccounts/listkeys/action で Azure ロールが割り当てられているかどうかが確認されます。 このアクションでロールが割り当てられている場合、Azure portal では、アカウント キーを使用して共有キーの承認を介してキュー データにアクセスします。 このアクションを持つロールが割り当てられていない場合、Azure portal では Microsoft Entra アカウントを使ってデータへのアクセスを試みます。
Microsoft Entra アカウントを使用して Azure portal からキュー データにアクセスするには、キュー データにアクセスするためのアクセス許可が必要です。また、Azure portal のストレージ アカウント リソース間を移動するためのアクセス許可も必要です。 Azure Storage によって提供される組み込みロールは、キュー リソースへのアクセス権を付与しますが、ストレージ アカウント リソースへのアクセス許可は付与しません。 このため、ポータルへのアクセスには、スコープがストレージ アカウント以上のレベルに設定された、閲覧者ロールなどの Azure Resource Manager ロールの割り当ても必要です。 リーダー役割は最も制限の厳しいアクセス許可を付与しますが、ストレージ アカウントの管理リソースへのアクセス権を付与する別の Azure Resource Manager ロールも受け入れることができます。 Microsoft Entra アカウントを使用して Azure portal でデータ アクセスのアクセス許可をユーザーに割り当てる方法の詳細については、「 キュー データにアクセスするための Azure ロールを割り当てる」を参照してください。
Azure portal では、キューに移動するときに使用されている承認スキームが示されます。 ポータルでのデータ アクセスの詳細については、「 Azure portal でキュー データへのアクセスを承認する方法を選択する」を参照してください。
PowerShell または Azure CLI からのデータ アクセス
Azure CLI と PowerShell では、Microsoft Entra 資格情報を使用したサインインがサポートされています。 サインインした後、セッションはその資格情報で実行されます。 詳細については、次のいずれかの記事を参照してください。