コンテンツにスキップ

アクセス制御設定マニュアル


1. 概要

1.1 目的

本書は、IDApex サービスにおいて、ユーザーの「ロール」(役割)に基づいたアクセス制御(認可処理)を設定するための手順をまとめたマニュアルです。

通常のアプリケーションでは個別の設定画面で利用制限を行いますが、本システムではSAML/OIDC連携等の仕様に合わせ、ログイン時の動作(認証フロー)の中で権限チェックを行う特殊な構成を採用しています。これにより、特定の権限を持たないユーザーのアクセスをログイン時に遮断することで、よりセキュアなサービス利用環境の担保を目的としています。

1.2 前提条件

本書での作業を開始するための前提条件です。

前提条件 備考
基本設定マニュアル の設定が完了していること 日本語化などの基本設定が完了している必要があります 。
IDApex IGAとの連携が完了していること ユーザーの登録およびロール(役割)の付与は、IGA側から自動で行われます。
制御対象となるアプリケーション(クライアント)が登録されていること 設定対象のクライアントが一覧に存在することを確認してください 。
IDApex IAM 内で必要な「ロール」が作成済みであること 権限の基準となる「ロール」をあらかじめ定義しておく必要があります。

1.3 全体の流れ

本書では、ロール判定と認証フローを組み合わせた、以下の流れでアクセス制御を設定します。

  1. 認証フローへの認可ステップ追加
    ログイン時のルール(ブラウザフロー)の中に、「特定のロールを持っているか」を判定する条件(Condition - user role)を組み込みます。
  2. クライアントへのフロー適用(Bind flow)
    作成した権限チェック付きのフローを、対象のアプリケーション(クライアント)に紐付けます。
  3. 動作確認
    設定したロールを持つユーザーのみがログインでき、持たないユーザーが正しく拒否されるかを確認します。

2. アクセス制御設定

本セクションでは、ログインユーザーのロールに応じて各クライアントに対してアクセス制御を行うための設定を行います。

2.1 認証フローへの認可ステップ追加

SAML/OIDC連携などのアプリケーションにおいて、特定のロールを持つユーザーのみにアクセスを許可するための「認可機能付き認証フロー」を作成します。

  1. リスクベース認証設定マニュアルを参考に、「Login Flow」を作成。または複製(Duplicate)します。
    認証フロー名は任意の名称で構いません。
    今回は「Sample Role Check」とします。
    image
  2. 画面上部の「Add sub-flow」(サブフローの追加)を選択します。
    image
  3. サブフローの名前を「Role Check」(ロール確認)とし、フロータイプを「generic」のまま追加します 。
    image
  4. 追加したサブフローの必要条件を「Required」(必須)に変更します 。
  5. 「Role Check」の「Add sub-flow」(サブフローの追加)を選択します。
    image
  6. サブフローの名前を「Allow access」(許可)とし、フロータイプを「generic」のまま追加します 。
  7. 追加したサブフローの必要条件を「Conditional」(条件付き)に変更します 。
    image
  8. 「Allow access」内の「+」ボタンを押下し、「Add condition」(条件の追加)を選択します。
    「Condition - user role」を選択後、「追加」ボタンを押下します。
    image
  9. 追加された条件の歯車マークをクリックし、以下の設定を行って保存します 。
    エイリアスは任意の名称です。
    User roleはアクセスを許可するロールを選択してください。
    ※左上の「Filter by clients」を押下し「Filter by realm roles」を選択してください。
    Negate outputは必ずオフにしてください。

    image

  10. 同じサブフロー内の「+」ボタンを押し、「Add step」(ステップの追加)を選択して、ログインを許可する「Allow access」を追加します。

  11. 追加した「Condition - user role」と「Allow access」の必須条件を「Required」に変更します。
    image
  12. 「Role Check」の「Add sub-flow」(サブフローの追加)を選択します。
  13. サブフローの名前を「Deny access」(拒否)とし、フロータイプを「generic」のまま追加します 。
  14. 追加したサブフローの必要条件を「Conditional」(条件付き)に変更します 。
    image
  15. このサブフロー内の「+」ボタンを押し、「Add condition」(条件の追加)を選択して「Condition - user role」を選びます 。
  16. 追加された条件の歯車マークをクリックし、以下の設定を行って保存します 。
    エイリアスは任意の名称です。
    User roleはアクセスを許可するロールを選択してください。
    Negate outputは必ずオンにしてください。(User roleを持っていない、という設定になります)

    image

  17. 同じサブフロー内の「+」ボタンを押し、「Add step」(ステップの追加)を選択して、ログインを拒否する「Deny access」を追加します。

  18. 追加した「Condition - user role」と「Deny access」の必須条件を「Required」に変更します。
    image
  19. 「Deny access」の歯車マークを押下します。
  20. 「エイリアス」に任意の文字列、「Error message」にログイン拒否ページに表示されるエラーメッセージを入力し保存します。
    image

以上で認証フローと認可ステップの追加が完了しました。

認証フロー全体のキャプチャは次のページとなります。

image

許可したいロールのパターン分、認証フローの作成が必要です。

2.2 クライアントへのフロー適用(Bind flow)

2.1章で作成した「認可機能付き認証フロー」を、対象のアプリケーション(クライアント)の設定に紐付け、アクセス制御を有効化します。

  1. 左のメニューから 「クライアント」 を選択します。
  2. 一覧から、アクセス制限を行いたいクライアントを選択します 。
  3. 上部の 「Advanced」 タブを選択し、画面を一番下までスクロールします。 一番右にあるので表示されていない場合は「>」ボタンを押下してください。
  4. 「認証フローのオーバーライド」 セクションにて、以下の設定を行い 「保存」ボタン をクリックします。

    ブラウザフロー(Browser Flow):2.2章で作成したフロー(例:Sample Role Check)を選択

    image

2.3 動作確認

設定したアクセス制御が意図通りに動作するかを確認します。

テストを実施する際は、既存のログイン情報の影響を避けるため、必ずブラウザの 「シークレットウィンドウ(インコグニートモード)」 を使用してください。

  1. テストを行う前に、以下の2種類のテストユーザーが用意されていることを確認してください 。

    前提条件 備考
    権限ありユーザー 「ロールA」が割り当てられたグループに所属しているユーザー。
    権限なしユーザー 「ロールA」を持っていないユーザー。
  2. 以下の表に基づき、各ログイン経路で正しく認可処理が行われるかを確認します。

    ログイン経路 テストユーザー 確認手順 期待される結果
    ID/パスワード入力 権限なし ID・パスワードでログインを試行 クライアントにログインできないこと。
    ID/パスワード入力 権限あり ID・パスワードでログインを試行 クライアントへログインできること。
    既存Cookie利用 権限なし IDApex IAMへログイン成功後、ブラウザを閉じずにクライアントへ再アクセス クライアントにログインできないこと。
    既存Cookie利用 権限あり IDApex IAMログイン成功後、ブラウザを閉じずにクライアントへ再アクセス クライアントへログインできること。

    image