LoginSignup
3
2

More than 5 years have passed since last update.

OpenAMと連携したPolicy Agentの設定をさわってみる その2

Posted at

今日やること

OpenAMと連携したPolicy Agentは、OpenAM側で設定された認可設定をつかって、以下のようなアクセス制御を実装することができます。

  • あるユーザー属性をもった認証済みユーザーだけがアクセスできる
  • GETはできるけどPOST、PUT、DELETEはできない
  • 特定のURLにたいしてアクセス制御のルールを適用できる
  • 送信元IPアドレスなんかを評価して制御する

OpenAMの認可設定ってなに?

OpenAMの認可設定では、アクセスを許可するか拒否するかを決定する方法を定義することができます。認可設定を定義して、OpenAMがリソースへのアクセスを許可するかどうかを判断できるようすることで、Policy Agentはその設定に依存し、ユーザーからのアクセスに認可を適用することができます。

ちなみに、認可設定は以下のような設定をすることができます。

  • Resource
    • Resourceは、認可設定を適用するURLを指定することができます
  • Action
    • Actionは、Webサーバー上のページの閲覧、フォームの送信など、ユーザーがResourceに対して行うことができる操作を指定することができます
    • GET、POST、PUT、DELETE などのHTTPのRequest Methodで定義します
  • Subject
    • Subectは、認証したユーザーの属性を評価するルールを指定することができます
    • 認証されていればOKとするとか、管理者のみOKとするとか、ある所属の人であればOKなどを定義できます
  • Environment
    • Environmentは、認証したユーザーの属性ではなく、時間や送信元IPアドレスなどの状態を評価するルールを指定することができます。
  • Response Attribute
    • これはあまり使いどころが正直わからないです
    • 定義した認可設定にマッチした場合に、レスポンスに含むユーザーの属性を指定するというような項目だと思っています
    • しかし、ユーザー属性は昨日のプロファイル属性処理の設定とかで連携したらよいのでは?認可のフェーズで連携すると嬉しいユースケースがあるのでしょうか?わかんない(◞‸◟)

前準備

では、試す前にすこし前準備をします。

Webサーバー上にリソースを作成

前回作成したHTTP HEADERを表示するCGIプログラム(https://web.example.com/cgi-bin/headerinfo.pl)を使い回します。

SSOのみモードの無効化

昨日、有効化したSSOのみモードを無効化します。この設定が有効化されていると、認可設定が一切評価されず、OpenAMの認証済みCookieを持ってさえいれば、だれでもアクセスできてしまうためです。

まず、ブラウザを立ち上げて、OpenAMの管理者アカウント(ユーザー名はamadmin)でサインインし、Top Level Realm => Applications => Web Agentsにアクセスし、前々回に作成を行ったPolicy Agentの設定であるWebPolicyAgentForApache22をクリックします。

画面中段にある、SSOのみモードのチェックボックスを外し、保存をクリックします。

001.PNG

この時点で403 Forbiddenになる

試しに、Policy Agentが導入ずみのWebサーバーにアクセスしてみましょう。
ユーザーは管理者アカウント(amadmin)でも、デモアカウント(demo)でも、前回作ったアカウント(johnd)でもいいですが、OpenAMでサインイン後、アクセスをすると403 FORBIDDEN(「閲覧禁止」「禁止されています」の意)となります。

002.PNG

johndだけがアクセスできる

ここから徐々にアクセスを許可するルールを追加していきましょう。
まずは、johndだけアクセスできるという設定です。

認可設定

OpenAMの管理者アカウント(ユーザー名はamadmin)でサインインし、Top Level Realm => Authorization => Policy Sets => Default Policy Setにアクセスします。

003.PNG

Add a Policyをクリックします。

004.PNG

New Policyの画面が表示されるので、以下の設定を入力し、Createをクリックします。
/cgi-bin/以下のリソースにアクセスできるっていう設定ですね。

Name Resource Type Resources
Test Policy URL *://*:*/cgi-bin/*

こんな感じです。

005.PNG

ここで認可設定画面が表示されます。上のタブに前項で紹介したResource、Action etc...が並んでますね。
本項で設定したいのはjohndだけ(Subject)がアクセス(Action)できるという設定なので、まず、Subjectsタブから以下の設定を行います。
設定後、Save Changesを押す前に右のを押さないと保存されませんので注意してください(´・ω・`)

Type User Subjects Group SUbjects
Users & Groups johnd

006.PNG

続いて、Actionの設定です。
Actionsタブをクリックして、以下の設定を行います。

ACTION DEFAUT STATE
GET Allow

こんな感じです。

008.PNG

確認

  • デモアカウント(demo/changeit)でアクセス

403 FORBIDDEN ... (◞‸◟)

007.PNG

  • 検証アカウント(johnd/password)でアクセス

200 OK (・∀・)イイ!!

009.PNG

軽くまとめ

  • ユーザーのSubject(ユーザー名)をみて、アクセス制御ができる
  • アプリケーションに対して行われるAction(HTTP Method)に対しても、アクセス制御ができる
  • リソース(URL)ごとにルールをつくれる

送信元IPアドレスで制限をかける

続いて、送信元IPアドレスで制限をかけたいとおもいます。

認可設定

先ほど作成したTest Policyの設定変更を行います。
Environmentsタブから以下の設定を入力します。

Type Start IP End IP IP Range DNS Name
IPv4 Address/DNS Name 192.168.33.128 192.168.33.255 [] []

こんな感じです。

010.PNG

確認

  • 送信元IPアドレス192.168.33.1でアクセス

403 FORBIDDEN ... (◞‸◟)

011.PNG

  • IPアドレスの設定を192.168.33.0 ~ 192.168.33.127に変更してアクセス

こんな感じにすると。

012.PNG

200 OK (・∀・)イイ!!

013.PNG

軽くまとめ

  • 送信元IPアドレスを評価して、認可することができる
  • 会社のアプリケーションで、重要度の高いシステムの場合はこういった認可設定を入れるのがいいかも

今日はこのへんで!
明日は、Policy Agentを導入したWebサーバーをリバースプロキシにしてみる。

ばい!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2