
企業システムの常識をJBossで身につける(9)
社内システムのセキュリティとアクセス制御の常識
株式会社ビーブレイクシステムズ
原田 壮士、多田 丈晃、上川 伸彦
2010/6/4
PicketLinkのXACMLコンポーネント
PicketLinkのXACMLコンポーネントは、前述のOASISで規定されているXACMLのバージョン2を実装しています。今回は、XACMLのポリシーファイルの設定方法を説明します。なお、サンプルを用いたPicketLinkのXACMLコンポーネントの説明は省きます。
■ XACMLとは
XACMLとは、インターネットを通じた情報アクセスに関する制御ポリシーを記述するための言語使用です。
例として、図9のサンプルでXACMLについて簡単に説明します。図9は、「ログイン画面に対しては、JBossAdmin権限がないとアクセス(read、write)できない」というアクセスコントロールを表しています。そのため、Manager権限であるBさんは、ログイン画面を参照できません。このようなアクセスコントロールをXACMLでは、「Policy」として定義します。
![]() |
| 図9 PicketLinkのXACMLコンポーネントでのポリシー設定例明示図 |
Policy内では、どのように設定すればいいのでしょうか。以下の図10では、Policyを設定する際に基本的に必要な、PolicyとRule、Target、Conditionの概要を示しています。
![]() |
| 図10 ポリシーの設定イメージ |
以上が、XACMLについての概略です。より詳しくXACMLについて知りたい方は、OASISのページを参照してみてください。
■ XACMLのポリシーファイルの設定方法
XACMLのポリシーファイルの書き方ついて、再度図9のサンプルを用いて説明します。上記の図9では、AさんにはJBossAdminの権限をBさんにはManagerの権限を事前に与える必要があります。
XACMLのポリシーファイルでログイン画面に対して、以下の表の設定を行っていると考えてください。
| 表3 JBoss XACMLのPolicyの設定 | ||||||
|
上記の表3は、Policyの設定としてログイン画面に対してreadやwriteを行うためには、JBossAdmin(JBossのデフォルト権限)の権限を持たなければならないということを意味しています。
実際のXACMLのポリシーファイル内では、どのように設定できるのでしょうか。図9のアクセス制御の内容をXACMLとして設定した例が、コード6です。
コード6 sample-xacml-policy.xml<Policy xmlns="urn:oasis:names:tc:xacml:2.0:policy:schema:os"
RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:permit-overrides" Version="2.0" PolicyId="SamplePolicy">
<!-- ↑【1】RuleCombiningAlgIdで全体のルールのアルゴリズムとして、【2】以下で設定するルールのどれか1つでも当てはまればルールを許可するということを設定。【2】VersionとPolicyIdでバージョンとポリシーを識別するためのIDを設定 -->
<Target>
<Resources>
<Resource>
<ResourceMatch
MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
<AttributeValue
DataType= "http://www.w3.org/2001/XMLSchema#anyURI">/login.seam</AttributeValue>
<!-- ↑【3】アクセスコントロールの対象画面を設定 -->
<ResourceAttributeDesignator
DataType= http://www.w3.org/2001/XMLSchema#anyURI
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"/>
</ResourceMatch>
</Resource>
</Resources>
</Target>
<Rule Effect="Permit" RuleId="SampleRule">
<!-- ↑【4】ルールを分岐するための設定と、1つのルールを識別するためのIDを設定(ここでは、Permit(許可)を設定している。このほかのルールの分岐設定に関しては【8】を参照) -->
<Target>
<Actions>
<Action>
<ActionMatch
MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue
DataType= "http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
<!-- ↑【5】アクセスコントロールで許可されるActionを設定(今回はreadを設定) -->
<ActionAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#string"
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
<Action>
<ActionMatch
MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">write</AttributeValue>
<!-- ↑【6】アクセスコントロールで許可されるActionを設定(今回はwriteを設定) -->
<ActionAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#string"
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
</Actions>
</Target>
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
<AttributeValue
DataType= "http://www.w3.org/2001/XMLSchema#string">JBossAdmin</AttributeValue>
<!-- ↑【7】上記で設定したルールを分岐するための条件を設定(今回は条件として、JBossAdmin権限を設定)
<SubjectAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#string"
AttributeId="urn:oasis:names:tc:xacml:2.0:subject:role" />
</Apply>
</Condition>
</Rule>
<!-- どのルールにも当てはまらなければ、Denyが適用される -->
<Rule Effect="Deny" RuleId="DenyRule"/>
<!-- ↑【8】上記設定のアクセス許可ルールに当てはまらなかったときに実行される、ルールの分岐を設定(今回はルールとして、Deny(拒否)を設定) -->
</Policy>
このようにXACMLでは、細かいアクセスコントロールの設定を規定できます。「PicketLinkのXACMLコンポーネントは、その規定通りにアプリケーションを動作できる」というわけです。
今回紹介した認証系のアクセスコントロール(JBossではPicketLinkのIDMコンポーネント)と、細かい制御設定を規定できるアクセスコントロール(JBossでは、PicketLinkのXACMLコンポーネント)を組み合わせることで、社内システムに必要なレベルのアクセスコントロールを実現可能です。
既存の資産を利用したシステムの開発も可能
今回は「セキュリティとアクセス制御の常識」という題してJBossの持つセキュリティ機能について説明しました。セキュリティの重要な要素として「内部の脅威」があり、その対策として、JBossでもアクセスコントロールの仕組みを用意していることを理解できたかと思います。
社内システムの中には、認証や権限の管理をアプリケーションの機能として自前で実装しているところもあるかと思います。JBossのセキュリティ機能のように、すでにある仕組みを利用することで内部的なセキュリティを強化できるとともに、工数も削減できます。
今回は解説の対象にしませんでしたが、認証のためのユーザーやグループ、権限といった情報をLDAPやActiveDirectry、RDBから取得する手段も用意されていますので、既存の資産を利用したシステムの開発も可能です。
■ @IT関連記事
| Webアプリにおける11の脆弱性の常識と対策 Webアプリの常識をJSPとStrutsで身につける(11) Webアプリと切っても切れない関係にある脆弱性。11の代表的な攻撃手法を紹介しつつ、その対策も示します 「Java Solution」フォーラム 2009/9/1 |
| Tomcatはどこまで“安全”にできるのか? 無料で利用できる定番アプリケーションサーバTomcatを用い、「無料でどこまで製品サーバのセキュリティに迫れるか?」「どこまで安全にWebアプリケーション構築ができるか?」を追っていく |
||
| Java TIPS Javaプログラミングに役立つテクニックとノウハウ集 − VMが脆弱性のあるバージョンかチェックするには? − Tomcatでダイジェスト認証を使う − Tomcatで独自のエラーページを使う − ウェルカムページを設定する − アクセス制限をweb.xmlの記述だけで実現する − Javaでダイジェストを生成する |
| TERASOLUNAのセキュリティ機能でWebアプリを強化 オープンソースTERASOLUNAで作るWebアプリ(最終回) ログオンした情報を管理するユーザー情報保持機能と特定アクセスの画面を作るアクセス権限チェック機能を紹介 「Java Solution」フォーラム 2009/3/10 |
| Strutsで作るセキュアWebアプリケーション JavaにおけるWebアプリケーション開発時に最もよく利用されているStrutsフレームワーク。この実装時に注意すべき点を解説する 第1回 適切なエスケープ処理でXSSに備える 第2回 サーブレットコンテナが抱える問題を認識する 第3回 Validatorを利用した入力値チェックの注意点 最終回 安全なセッション管理を実現するために 「Security&Trust」フォーラム |
||
| 狙われる甘〜いTomcat 川口洋のセキュリティ・プライベート・アイズ(15) JSPの実行環境として浸透するTomcat。適切な設定をしていない環境からは、攻撃者を呼び寄せる甘い香りが…… 「Security&Trust」フォーラム 2009/5/25 |
||
| Webアプリケーションサーバのさまざまな脆弱点 連載:Webサイト運営者のセキュリティ確保の心得(2) 預かり情報を守るため、各サーバやWebアプリケーションに存在する脆弱点を取り上げ、その対応策や考え方を紹介 「Security&Trust」フォーラム 2002/4/12 |
||
| プロフィール |
| 原田 壮士(はらだ そうし) 2009年より、株式会社ビーブレイクシステムズに在籍。 就職活動時にビーブレイクシステムズの説明会でJavaの世界に感銘を受け、入社を決意する。最近ようやく社会人としての生活にも慣れ、仕事面でもJavaやWebアプリケーションへの理解が深まってきた。 しばらくすると、次の新入社員が入ってくるため、先輩風を吹かせる練習中 |
| プロフィール |
| 多田 丈晃(ただ たけあき) 2008年より、株式会社ビーブレイクシステムズに在籍。 システム開発の様々な工程を経験し、果ては新人研修まで担当したが、さらなる高みを目指してJavaとOSSに強いビーブレイクシステムズの門をたたく。 同僚の知識量と能力の高さに驚きつつ、日々研鑽を続けている。 |
| プロフィール |
| 上川 伸彦(かみかわ のぶひこ) 株式会社ビーブレイクシステムズ技術担当取締役。 RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。 |
| Index | ||||||||||
|
||||||||||
企業システムの常識をJBossで身につける バックナンバー 連載インデックスへ»
- 第1回 企業向けアプリの常識を学び、JBossの環境構築
- 第2回 “全部入り”のEclipseで学ぶ統合開発環境の常識
- 第3回 DI(依存性の注入)×AOP(アスペクト指向)の常識
- 第4回 企業でも情報整理で利用が進む「ポータル」の常識
- 第5回 非同期処理と疎結合ができる「メッセージング」の常識
- 第6回 いまさら聞けない「Webサービス」の常識
- 第7回 クラウドで再注目の「分散コンピューティング」の常識
- 第8回 悲観もあれば楽観もある「トランザクション」の常識
- 第9回 社内システムのセキュリティとアクセス制御の常識
- 第10回 内部統制に効く! ID管理・シングルサインオンの常識
- 第11回 「全体を見る」ためのビジネスプロセス・BPMの常識
- 最終回 急速なビジネスの変化に対応できる「BRMS」の常識
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


