企業システムの常識をJBossで身につける
連載インデックスへ
企業システムの識を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コンポーネントでのポリシー設定例明示図
図9  PicketLinkのXACMLコンポーネントでのポリシー設定例明示図

 Policy内では、どのように設定すればいいのでしょうか。以下の図10では、Policyを設定する際に基本的に必要な、PolicyとRule、Target、Conditionの概要を示しています。

図10 ポリシーの設定イメージ
図10 ポリシーの設定イメージ

 以上が、XACMLについての概略です。より詳しくXACMLについて知りたい方は、OASISのページを参照してみてください。

XACMLのポリシーファイルの設定方法

 XACMLのポリシーファイルの書き方ついて、再度図9のサンプルを用いて説明します。上記の図9では、AさんにはJBossAdminの権限をBさんにはManagerの権限を事前に与える必要があります。

 XACMLのポリシーファイルでログイン画面に対して、以下の表の設定を行っていると考えてください。

表3 JBoss XACMLのPolicyの設定
<Target>対象 login.seam
<Rule>ルール read
write
<Condition>条件 JBossAdmin権限

 上記の表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コンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。

1-2-3-4

 Index
第9回 社内システムのセキュリティとアクセス制御の常識
  Page1
社内システムにとってのセキュリティの脅威
社内システムにおける「アクセスコントロール」
  Page2
JBossのセキュリティ管理はどうなっている?
JBossが持つ認証機能を実装するには
  Page3
JBoss SXのベーシック認証を試してみよう
  Page4
PicketLinkのXACMLコンポーネント
既存の資産を利用したシステムの開発も可能



Java Solution全記事一覧

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH