XACML 仕様に基づいた、fine-grained authorization(FGA、きめの細かい認可)システムは、ユーザーの役割をベースにしてユーザーを認可する、これまでのRole Based Access Control (RBAC) 方式に加えて、状況や環境の情報に基づいた評価ルールによって、俊敏性と制御能力を増すことができる。最近のJavaOne 2010 カンファレンスでSubbu Devulapalli 氏は、ユーザー認可ドメインにおける標準とデプロイ モデルについて講演した。
氏は、プレゼンの冒頭で、認可ポリシーは、しばしばアプリケーションのプログラムにハードコードされていて、ビジネス環境で変更するのは、難しく、高くつく、と述べた。きめの細かい認可と資格の付与は、これまでの資格の付与とは、違う管理が必要である。認可要求は、ソフトウェア開発プロセスの初期フェーズの開始から、充分強調されるべきである。 Rich Security Modelingのような成果は、実際にソリューションをコーディングする前に、ユーザー認可モデルを設計する助けになる。ポリシー モデリングには、モデリングや設計工程における 原則、 目標、アクション、そして 制約のようなポリシーの様々なコンポーネントを含むべきである。そしてQAテスト工程では、アプリケーションのテストプロセスの一部として、 セキュリティ ポリシーのテストを含むべきである。
FGAモデルには、以下のものを含む:
- Role Based Access Control (RBAC、ロールベースのアクセス コントロール)
- Attribute Based Access Control (ABAC、特性ベースのアクセス コントロール)
- Access Control Lists (ACLs、アクセス コントロール リスト)
- Label/Lattice Based Access Control (LBAC、Label/Lattice ベースのアクセス コントロール)
認可とアクセス コントロールの標準には、JAAS パーミッション, XACML, そして OpenAZ(XACMLへのJavaバインディング)プロジェクトがある。デプロイには、2つのFGAモデルがある:
- 集中型: このモデルには、認証と認可のための集中型サーバーを呼ぶことも含む。それには、2つの実装方法がある:webサービスは、ほとんど互換性があるが、実行時に遅い、バイナリ プロトコルの方が、よりよいパフォーマンスを提供する。
- 組込み型: このモデルでは、認可のためのコードは、アプリケーション コードの一部としてデプロイされる。このモデルは、最高のパフォーマンスを出すが、メモリもより多く使用する。
開発者は、アプリケーションに認可要求を実装するときは、POJOを超えて考えるべきである。FGAは、アプリケーション アーキテクチャの全レイヤーで使われているので- UI要素( JSP, サーブレット, HTML, AJAX)、データ セキュリティ(データ オブジェクトに対するセキュリティを調整する)、サービス (EJB, JMS, RMI, Web サービス)、コンテンツとドキュメント-ユーザー認可を設計するときは、サービスの観点から考えるべきである。アプリケーションのデータ セキュリティは、データベースにデータを送る前に検証用のクエリを行ったり、CRUD操作を基に、追加のクエリ制限を課したり、そして、クエリで戻されたデータセットの項目をフィルター(あるいは、完全に消去)するようなタスクによって管理されるべきである。
Devulapalli 氏は、パフォーマンス、認可の問い合わせによるオーバヘッドの最小化、クラスタリングにおけるスケーラビリティの考慮、マルチスレッド化、キャシュなどによる高可用性、そしてPolicy Decision Point(PDP、ポリシー決定点)は自律的である必要があること(すなわち他のコンポーネントがたとえダウンしても、サービスを提供できなければならない)について話した。彼は、セッションの締めくくりに、アーキテクトや開発者は、目の前のプロジェクト ニーズを超えて、相互運用性のようなアーキテクチャ要求を考えるばかりでなく、買収や規制の観点から会社の将来の方向を考える必要がある、と提言した。