Microsoft Entra ID を使用してテーブルへのアクセスを承認する

Azure Storage では、Microsoft Entra ID を使用したテーブル データへの要求の承認がサポートされています。 Microsoft Entra ID では、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパル (これはユーザー、グループ、アプリケーション サービス プリンシパルのいずれかである可能性があります) にアクセス許可を付与できます。 セキュリティ プリンシパルは、Microsoft Entra ID によって認証され、OAuth 2.0 トークンを返します。 その後、そのトークンを、Table サービスに対する要求を承認するために使用できます。

Microsoft Entra ID を使用した Azure Storage に対する要求の認可は、共有キー認可よりも優れたセキュリティと使いやすさを実現します。 Microsoft は、必要最小限の特権でのアクセスを保証するために、可能な場合はテーブル アプリケーションで Microsoft Entra 認可を使用することを推奨しています。

Microsoft Entra ID を使用した認可は、すべてのパブリック リージョンおよび国のクラウドにおいて、すべての一般的な用途で使用できます。 Microsoft Entra 認可をサポートしているのは、Azure Resource Manager デプロイ モデルで作成されたストレージ アカウントだけです。

テーブルに関する Microsoft Entra ID の概要

セキュリティ プリンシパル (ユーザー、グループ、またはアプリケーション) がテーブル リソースへのアクセスを試みた場合、要求が承認される必要があります。 Microsoft Entra ID では、リソースへのアクセスは 2 段階のプロセスです。 まず、セキュリティ プリンシパルの ID が認証され、OAuth 2.0 トークンが返されます。 次に、そのトークンが Table サービスへの要求の一部として渡され、指定されたリソースへのアクセスを承認するためにサービスによって使用されます。

認証の手順では、アプリケーションが実行時に OAuth 2.0 アクセス トークンを要求する必要があります。 アプリケーションが Azure VM、仮想マシン スケール セット、または Azure Functions アプリなどの Azure エンティティ内から実行されている場合、マネージド ID を使用してテーブルにアクセスできます。

承認の手順では、セキュリティ プリンシパルに 1 つまたは複数の Azure ロールを割り当てる必要があります。 テーブル データへの一般的なアクセス許可セットを含む Azure ロールは、Azure Storage によって提供されます。 セキュリティ プリンシパルに割り当てられているロールによって、プリンシパルに付与するアクセス許可が決まります。 テーブル データにアクセスするための Azure ロールの割り当ての詳細については、「テーブル データにアクセスするための Azure ロールを割り当てる」を参照してください。

次の表は、さまざまなシナリオでデータへのアクセスを承認するための追加情報を示しています。

言語 .NET Java JavaScript Python Go
Microsoft Entra ID を使用した認証の概要 Azure サービスを使用して .NET アプリケーションを認証する方法 Java と Azure ID を使用した Azure 認証 Azure SDK を使用して JavaScript アプリを Azure に対して認証する Azure SDK を使用して Python アプリを Azure に対して認証する
開発者サービス プリンシパルを使用した認証 サービス プリンシパルを使用してローカル開発中に Azure サービスに対して .NET アプリを認証する サービス プリンシパルを使用した Azure 認証 サービス プリンシパルを使用して Azure サービスに対して JS アプリを認証する サービス プリンシパルを使用したローカル開発時に Azure サービスに対して Python アプリを認証する サービス プリンシパルによる Azure SDK for Go 認証
開発者またはユーザー アカウントを使用した認証 開発者アカウントを使用したローカル開発時に Azure サービスに対して .NET アプリを認証する ユーザー資格情報を使用した Azure 認証 開発アカウントを使用して Azure サービスに対して JS アプリを認証する 開発者アカウントを使用したローカル開発時に Azure サービスに対して Python アプリを認証する Azure SDK for Go での Azure 認証
Azure でホストされるアプリからの認証 Azure SDK for .NET を使用して Azure リソースに対して Azure でホストされるアプリを認証する Azure でホストされる Java アプリケーションを認証する Azure SDK for JavaScript を使用した Azure リソースに対する Azure ホスト JavaScript アプリの認証 Azure SDK for Python を使用して Azure リソースに対して Azure でホストされるアプリを認証する マネージド ID を使用して Azure SDK for Go で認証を行う
オンプレミス アプリからの認証 オンプレミスでホストされている .NET アプリから Azure リソースに対して認証する オンプレミスの JavaScript アプリを Azure リソースに対して認証する オンプレミスでホストされている Python アプリから Azure リソースに対して認証する
ID クライアント ライブラリの概要 .NET 用 Azure ID クライアント ライブラリ Java 用 Azure ID クライアント ライブラリ JavaScript 用 Azure ID クライアント ライブラリ Python 用 Azure ID クライアント ライブラリ Go 用 Azure ID クライアント ライブラリ

アクセス権の Azure ロールを割り当てる

Microsoft Entra は、Azure ロールベースのアクセス制御 (Azure RBAC) を通じて、セキュリティで保護されたリソースへのアクセス権を承認します。 Azure Storage では、テーブル データへのアクセスに使用される一般的なアクセス許可セットを含む一連の Azure 組み込みロールが定義されます。 テーブル データにアクセスするためのカスタム ロールを定義することもできます。

Azure ロールが Microsoft Entra セキュリティ プリンシパルに割り当てられると、Azure はそれらのリソースへのアクセスをそのセキュリティ プリンシパルに許可します。 Microsoft Entra セキュリティ プリンシパルは、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure リソースのマネージド ID である可能性があります。

リソースのスコープ

セキュリティ プリンシパルに Azure RBAC ロールを割り当てる前に、セキュリティ プリンシパルに必要なアクセスのスコープを決定します。 ベスト プラクティスとしては、常にできるだけ狭いスコープのみを付与するのが最善の方法です。 より広い範囲で定義されている Azure RBAC ロールは、その下のリソースによって継承されます。

Azure テーブル リソースへのアクセスのスコープは、次のレベルで指定できます (最も狭いスコープから順に示します)。

  • 個々のテーブル。 このスコープでは、ロールの割り当ては、指定されたテーブルに適用されます。
  • ストレージ アカウント。 このスコープでは、ロールの割り当ては、アカウントのすべてのテーブルに適用されます。
  • リソース グループです。 このスコープでは、ロールの割り当ては、リソース グループ内のすべてのストレージ アカウントのすべてのテーブルに適用されます。
  • サブスクリプション。 このスコープでは、ロールの割り当ては、サブスクリプション内のすべてのリソース グループ内のすべてのストレージ アカウントのすべてのテーブルに適用されます。
  • 管理グループ。 このスコープでは、ロールの割り当ては、管理グループ内のすべてのサブスクリプション内のすべてのリソース グループ内のすべてのストレージ アカウントのすべてのテーブルに適用されます。

Azure RBAC ロールの割り当てのスコープの詳細については、「Azure RBAC のスコープについて」を参照してください。

テーブル用の Azure 組み込みロール

Azure RBAC には、Microsoft Entra ID と OAuth を使用してテーブル データへのアクセスを承認するための組み込みロールが用意されています。 Azure Storage のテーブルへのアクセス許可を付与する組み込みロールには次のものがあります。

Azure 組み込みロールをセキュリティ プリンシパルに割り当てる方法については、「テーブル データにアクセスするための Azure ロールを割り当てる」を参照してください。 Azure RBAC ロールとそのアクセス許可を一覧表示する方法については、「Azure ロールの定義を一覧表示する」を参照してください。

Azure Storage の組み込みロールの定義方法については、「ロール定義について」を参照してください。 Azure カスタム ロールの作成については、「Azure カスタム ロール」を参照してください。

データ アクセスに対して明示的に定義されたロールによってのみ、セキュリティ プリンシパルによるテーブル データへのアクセスが許可されます。 所有者共同作成者ストレージ アカウント共同作成者などの組み込みロールは、セキュリティ プリンシパルがストレージ アカウントを管理することを許可しますが、Microsoft Entra ID を介したそのアカウント内のテーブル データへのアクセスは付与しません。 ただし、ロールに Microsoft.Storage/storageAccounts/listKeys/action が含まれている場合、そのロールが割り当てられているユーザーは、アカウント アクセス キーを使った共有キーによる承認を介してストレージ アカウントのデータにアクセスできます。

データ サービスと管理サービスの両方に対する Azure Storage 用の Azure 組み込みロールの詳細については、「Azure RBAC の Azure 組み込みロール」の「ストレージ」セクションを参照してください。 追加情報として、Azure でアクセス許可を付与するさまざまな種類のロールについては、「Azure ロール、Microsoft Entra ロール、従来のサブスクリプション管理者ロール」を参照してください。

重要

Azure ロールの割り当ての反映には最大で 30 分かかる可能性があります。

データ操作用のアクセス許可

特定の Table サービスの操作を呼び出すために必要なアクセス許可の詳細については、「データ操作呼び出しのアクセス許可」を参照してください。

次のステップ