Azure ロールの割り当て条件を使用して Azure Blob Storage へのアクセスを承認する

属性ベースのアクセス制御 (ABAC) は、セキュリティ プリンシパル、リソース、環境、および要求自体に関連付けられた属性に基づいてアクセス レベルを定義する認可戦略です。 ABAC では、これらの属性を使用して述語として表される条件に基づいて、セキュリティ プリンシパルにリソースへのアクセス権を付与できます。

Azure ABAC は、Azure ロールの割り当てに条件を追加することで、Azure のロールベースのアクセス制御 (Azure RBAC) を基盤として構築されています。 これにより、プリンシパル、リソース、要求、環境の属性に基づいてロールの割り当て条件を作成することができます。

重要

Azure 属性ベースのアクセス制御 (Azure ABAC) は、ストレージ アカウントの Standard と Premium 両方のパフォーマンス レベルで、requestresourceenvironment 属性を使用して Azure Blob Storage、Azure Data Lake Storage Gen2、Azure キューへのアクセスを制御するために一般提供 (GA) されています。 現在、コンテナー メタデータ リソース属性とリスト BLOB インクルード要求属性はプレビュー段階です。 Azure Storage の ABAC の完全な機能状態情報については、「Azure Storage の条件機能の状態」を参照してください。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure Storage での条件の概要

Microsoft Entra ID (Microsoft Entra ID) を使い、Azure RBAC を使って Azure Storage リソースへの要求を認可できます。 Azure RBAC を使用すると、ロールの定義とロールの割り当てを使用して、リソースにアクセスできるユーザーと、それらのリソースで実行できる操作を定義することで、リソースへのアクセスを管理できます。 Azure Storage データへのアクセスに使用される一般的なアクセス許可セットを含む一連の Azure 組み込みロールは、Azure Storage によって定義されます。 選択したアクセス許可セットを使用してカスタム ロールを定義することもできます。 Azure Storage では、ストレージ アカウントと BLOB コンテナーの両方に対するロールの割り当てがサポートされます。

Azure ABAC は、特定のアクションのコンテキストにおけるロールの割り当て条件を追加することで、Azure RBAC を基盤として構築されています。 "ロールの割り当て条件" は、ストレージ リソースに対するアクションが認可されると評価される追加の検査です。 この条件は、次のいずれかに関連付けられている属性を使用して述語として表されます。

  • 認可を要求しているセキュリティ プリンシパル
  • アクセス権が要求されているリソース
  • 要求のパラメーター
  • 要求が行われている環境

ロールの割り当て条件を使用する利点は次のとおりです。

  • リソースへのよりきめ細かいアクセスを有効にする - たとえば、BLOB が Project=Sierra としてタグ付けされている場合にのみ、ストレージ アカウント内の BLOB への読み取りアクセス権をユーザーに付与する場合は、タグを属性として使用して読み取りアクションの条件を使用できます。
  • 作成および管理する必要があるロールの割り当ての数を減らす - これを行うには、セキュリティ グループに対して一般化されたロールの割り当てを使用してから、アクセスされる特定のリソース (BLOB やコンテナーなど) の属性をプリンシパルの属性と一致させる条件を使用して、グループの個々のメンバーのアクセスを制限します。
  • ビジネスの意味を持つ属性の観点からアクセス制御ルールを表現する - たとえば、プロジェクト名、ビジネス アプリケーション、組織の機能、または分類レベルを表す属性を使用して、条件を表現できます。

条件を使用する場合のトレードオフは、組織全体で属性を使用するときに構造化された一貫性のある分類が必要になるという点です。 アクセスが侵害されるのを防ぐために、属性を保護する必要があります。 また、条件は慎重に設計し、その効果を確認する必要があります。

Azure BLOB ストレージでは、Azure Storage のロールの割り当て条件がサポートされます。 また、階層型名前空間 (HNS) 機能が有効になっているアカウントでも条件を使用できます (Data Lake Storage Gen2)。

サポートされる属性と操作

DataActions のロールの割り当ての条件を構成して、これらのゴールを達成できます。 カスタム役割で条件を使用したり、組み込みロールを選択したりすることができます。 ストレージ リソース プロバイダーを介した管理アクションでは条件はサポートされていません。

組み込みロールまたはカスタム ロールに条件を追加できます。 ロールの割り当て条件を使用できる組み込みロールは次のとおりです。

条件をサポートするアクションがロールに含まれる限り、カスタム役割で条件を使用できます。

BLOB インデックス タグに基づく条件を使用している場合は、タグ操作のアクセス許可が Storage Blob データ所有者に含まれているので、このロールを使用する必要があります。

Note

BLOB インデックス タグは、階層型名前空間を使用する Data Lake Storage Gen2 ストレージ アカウントではサポートされていません。 HNS が有効になっているストレージ アカウントでは、インデックス タグを使用してロール割り当て条件を作成しないでください。

Azure ロールの割り当て条件の形式では、条件で @Principal@Resource@Request@Environment のいずれかの属性を使用できます。 @Principal 属性は、ユーザー、エンタープライズ アプリケーション (サービス プリンシパル)、マネージド ID などのプリンシパルにあるカスタム セキュリティ属性です。 @Resource 属性では、アクセスされているストレージ リソースの既存の属性 (ストレージ アカウント、コンテナー、BLOB など) を参照します。 @Request 属性では、ストレージ操作要求に含まれる属性またはパラメーターを参照します。 @Environment 属性は、ネットワーク環境または要求の日時を参照します。

Azure RBAC では、サブスクリプションごとに制限された数のロールの割り当てがサポートされています。 何千もの Azure ロールの割り当てを作成する必要がある場合は、この制限を受ける可能性があります。 数百または数千のロールの割り当てを管理するのは困難な可能性があります。 場合によっては、条件を使用して、ストレージ アカウントでのロールの割り当ての数を減らし、管理しやすくすることができます。 プリンシパルに条件と Microsoft Entra のカスタム セキュリティ属性を使って、ロールの割り当ての管理をスケーリングすることができます。

Azure Storage の条件機能の状態

Azure 属性ベースのアクセス制御 (Azure ABAC) は、ストレージ アカウントの Standard と Premium 両方のパフォーマンス レベルで、requestresourceenvironment 属性を使用して Azure Blob Storage、Azure Data Lake Storage Gen2、Azure キューへのアクセスを制御するために一般提供 (GA) されています。 現在、コンテナー メタデータ リソース属性とリスト BLOB インクルード要求属性はプレビュー段階です。

次のテーブルは、ストレージ リソースの種類および属性の種類ごとの ABAC の現在の状態を示しています。 特定の属性の例外も表示されています。

リソースの種類 属性の型 属性 可用性
BLOB
Data Lake Storage Gen2
キュー
要求
リソース
環境
プリンシパル
この表に記載されているものを除くすべての属性 GA
Data Lake Storage Gen2 リソース スナップショット プレビュー
BLOB
Data Lake Storage Gen2
リソース コンテナー メタデータ プレビュー
BLOB 要求 リスト BLOB インクルード プレビュー

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Note

いくつかのストレージ機能は、階層型名前空間 (HNS) を使用する Data Lake Storage Gen2 ストレージ アカウントではサポートされていません。 詳細については、「BLOB ストレージ機能のサポート」を参照してください。

以下の ABAC 属性は、ストレージ アカウントで階層型名前空間が有効になっている場合、サポートされません。

次のステップ

関連項目