属性ベースアクセス制御(ABAC )は、 IAMのポリシーベースアクセス制御とも呼ばれ、主体、オブジェクト、要求された操作、場合によっては環境属性に関連付けられた属性を評価することによって、主体が一連の操作を実行する権限を決定するアクセス制御パラダイムを定義します。[ 1 ]
ABAC は、アクセス制御ポリシーを実装する方法であり、適応性が高く、幅広い属性を使用してカスタマイズできるため、分散環境や急速に変化する環境での使用に適しています。ABAC で実装できるポリシーの唯一の制限は、計算言語の機能と関連属性の可用性です。[ 2 ] ABAC ポリシールールは、主体の属性、オブジェクトの属性、および環境属性のブール関数として生成されます。[ 3 ]
ロールベースアクセス制御(RBAC)は、特定の権限セットを持つロールを定義し、そのロールに主体を割り当てますが、ABACは、さまざまな属性を評価できる複雑なルールセットを表現できます。ABACは、セキュリティポリシーに一貫した主体属性と客体属性を定義することで、非ABACアクセス方式で必要となる、個人の主体に対する明示的な承認を不要にし、アクセスリストやグループの管理の複雑さを軽減します。
属性値は、セット値またはアトミック値のいずれかになります。セット値属性は、複数のアトミック値を含みます。例としては、ロールやプロジェクトなどがあります。アトミック値属性は、1つのアトミック値のみを含みます。例としては、クリアランスやセンシティブなどがあります。属性は、静的値または属性同士を比較できるため、リレーションベースのアクセス制御が可能になります。
ABACという概念自体は長年存在していましたが、動的でコンテキスト認識型かつリスクインテリジェントなリソースへのアクセス制御を提供することで、さまざまな情報システムからの特定の属性を含むアクセス制御ポリシーを定義して認証を解決し、効率的な規制遵守を実現できるため、「次世代」の認証モデルとみなされています。また、企業は既存のインフラストラクチャに基づいて柔軟な実装を行うことができます。
属性ベースのアクセス制御は、ポリシーベースのアクセス制御( PBAC ) またはクレームベースのアクセス制御( CBAC ) と呼ばれることもあります。CBAC は Microsoft 固有の用語です。ABAC を実装する主要な標準はXACMLとALFA (XACML)です。[ 4 ]
ABACは次のように捉えることができる。
ABACには、以下の推奨アーキテクチャが付属しています。
属性は、あらゆるもの、あらゆる人に関するものになり得ます。属性は大きく4つのカテゴリーに分類されます。
ポリシーとは、属性を組み合わせて、何が可能で何が不可能かを表現する記述です。ABACにおけるポリシーは、許可ポリシーと拒否ポリシーに分類できます。また、ポリシーはローカルポリシーまたはグローバルポリシーに分類でき、他のポリシーを上書きするように記述することも可能です。例としては、以下のようなものがあります。
ABAC を使用すると、さまざまなシナリオやテクノロジーに対応するポリシーを無制限に作成できます。[ 7 ]
歴史的に、アクセス制御モデルには、強制アクセス制御(MAC)、任意アクセス制御(DAC)、そして近年ではロールベースアクセス制御(RBAC)などがありました。これらのアクセス制御モデルはユーザー中心であり、リソース情報、ユーザー(要求元)とリソースの関係、時刻やユーザーのIPアドレスなどの動的な情報といった追加パラメータは考慮されていません。
ABACは、要求元のエンティティ(ユーザー)、対象となるオブジェクトまたはリソース、要求されるアクション(表示、編集、削除)、および環境情報またはコンテキスト情報を記述する属性に基づいてアクセス制御を定義することで、この問題に対処しようとします。これが、アクセス制御が属性ベースであると言われる理由です。
ABACには主に3つの実装方法があります。
XACML(拡張アクセス制御マークアップ言語)は、アーキテクチャ(ALFAおよびNGACと共通)、ポリシー言語、およびリクエスト/レスポンス方式を定義します。ただし、属性管理(ユーザー属性の割り当て、オブジェクト属性の割り当て、環境属性の割り当て)はXACMLでは処理せず、これらの処理は従来のIAMツール、データベース、およびディレクトリに委ねられています。
米国軍の全部門を含む企業がABACの使用を開始した。基本的なレベルでは、ABACはデータをユーザーに割り当てるのではなく、「IF/THEN/AND」ルールでデータを保護する。米国商務省はこれを義務的な慣行とし、その採用は複数の政府機関や軍事機関に広がっている。[ 8 ]
ABACの概念は、テクノロジースタックおよびエンタープライズインフラストラクチャのあらゆるレベルに適用できます。例えば、ファイアウォール、サーバー、アプリケーション、データベース、データ層でABACを使用できます。属性を使用することで、アクセス要求の正当性を評価するための追加的なコンテキストが得られ、アクセスを許可するか拒否するかの決定に役立ちます。
ABACソリューションを評価する際に重要な考慮事項は、パフォーマンスへの潜在的な負荷とユーザーエクスペリエンスへの影響を理解することです。制御の粒度が細かくなるほど、負荷も高くなることが予想されます。
ABAC を使用すると、API メソッドまたは関数に対して属性ベースのきめ細かい認可を適用できます。たとえば、銀行 API がapproveTransaction(transId)メソッドを公開している場合、ABAC を使用して呼び出しを保護できます。ABAC を使用すると、ポリシー作成者は次のように記述できます。
流れは以下のようになります。
approveTransaction(123)ABACの主な利点の1つは、認可ポリシーと属性をテクノロジーに依存しない方法で定義できることです。つまり、APIやデータベース用に定義されたポリシーをアプリケーション領域で再利用できます。ABACの恩恵を受けられる一般的なアプリケーションは次のとおりです。
APIのセクションで説明したのと同じプロセスと流れが、ここでも適用されます。
データベースのセキュリティは、長らくデータベースベンダー固有のものでした。Oracle VPD、IBM FGAC、Microsoft RLSはいずれも、きめ細かなABACのようなセキュリティを実現するための手段です。
例えば、次のような例が挙げられます。
role = managerアクションを実行できます。SELECTtable = TRANSACTIONSuser.region = transaction.regionデータセキュリティは通常、データベースセキュリティよりもさらに一歩進んで、データ要素に直接制御を適用します。これはデータ中心のセキュリティと呼ばれることがよくあります。従来のリレーショナルデータベースでは、ABACポリシーは、フィルタリング条件と属性に基づくマスキングを使用した論理制御を使用して、テーブル、列、フィールド、セル、サブセルでデータへのアクセスを制御できます。属性は、データ、ユーザー、セッション、またはツールに基づいて、特定のデータ要素へのアクセスを動的に許可/拒否する際に最大限の柔軟性を提供します。ビッグデータやHadoopなどの分散ファイルシステムでは、データレイヤーに適用されるABACは、フォルダ、サブフォルダ、ファイル、サブファイル、およびその他のきめ細かいレベルでのアクセスを制御します。
属性ベースのアクセス制御は、Hadoop のようなビッグデータシステムにも適用できます。データレイクからデータを取得する際に、以前に使用されたものと同様のポリシーを適用できます。[ 9 ] [ 10 ]
Windows Server 2012以降、Microsoftはファイルとフォルダーへのアクセスを制御するためにABACアプローチを実装しました。これは、動的アクセス制御(DAC)[ 11 ]とセキュリティ記述子定義言語(SDDL)によって実現されます。SDDLは、ユーザー(クレーム)とファイル/フォルダーのメタデータを使用してアクセスを制御するため、ABAC言語と見なすことができます。