My Home NW Lab

逸般の誤家庭のネットワーク

Duo SecurityでDuo Centralの認証ソースとしてAzure ADを使用する

Duo SecurityでDuo Centralの認証ソースとしてAzure Active Directory (Azure AD)を使用する場合の設定手順を紹介します。 認証連携が行われる都合で関連要素が多いため、重要な要素は個別に解説を入れております。

全体概要図

設定対象の範囲 (本記事のスコープ)

設定対象の範囲

  • Duo Centralの認証ソースとしてAzure ADを使用する設定を行ったうえで、Duo Centralを有効化してログイン確認までを行います。

  • Duo Centralから先のApplicationにアクセスする設定は、Application固有の設定が多くなってしまうため本記事では対象外にしております。

事前設定

本記事の環境は、Directory SyncでAzure ADのDirectory情報を予め取り込んでいます。

myhomenwlab.hatenablog.com

Duo Centralへの認証が通るとUsersに自動的に登録される挙動はありますが、Azure ADのアカウントの所属Groupの情報までは登録できないためDirectory Syncも併用しています。詳細は後述します。

Usernameの正規化

Duo Securityの Users にAzure ADのアカウントを取り込む際に、Usernameを正規化する設定がDirectory SyncとDuo Centralの両方に存在します。 Directory Syncでの設定が Normalize usernames であり、Duo Central (メニュー: Single Sign-On)での設定が Username normalization となります。

Normalize usernames と Username normalization

設定値によっては、メール アドレス形式のアカウント情報が正規化されてUsername部分のみがDuo Securityの Users に登録されます。

Directory SyncとDuo Centralで取り込み箇所が分かれてしまっているため、相反する設定を行うと1つのアカウント情報から2つのUserとして登録されてしまうケースが存在します。 そのため、設計にて Users への取り込み方針を予め決めておいてください。

Duo Securityにおける Directory Sync の Normalize usernames と Duo Central の Username normalization

Duo CentralとUsersの登録

Duo Centralにログインしたアカウントは、Duo Securityの Users に登録されます。注意点としてGroupには紐付かない点が重要になります。

具体的には、Meraki DashboardへのSingle Sign-Onの設定を例にすると、Applicationの設定でRoleとGroupをマッピングする必要が出てきます。 そのため、Azure ADによってDuo CentralへのSingle Sign-Onが許可されていて実際にDuo Centralにログインできるものの、その先のApplicationにはGroupにマッピングされていないためSinge Sign-Onが出来ないケースが発生します。

Duo Centralの挙動 (Users観点)

本記事では上述のケースを避けるために、事前にDirectory SyncでAzure ADからDirectory情報を取り込んでいます。

設定作業時の注意点

  • Duo SecurityのAdmin PanelAzure ADのAzure Portal を行き来する場面があるため、どちらの管理コンソールから設定作業を行っているのかを意識するようにしてください。

  • 事前設定も行っていると、Enterprise Applicationが Directory Sync (Azure AD)Duo Central の2つの用途で存在するようになるため設定対象を間違えないように注意してください。
    Directory Sync (Azure AD) の方は Duo Azure AD Sync の名称ですが、本記事で扱う Duo Central は任意の名称で作成します。 本記事では Duo Central 向けのEnterprise Applicationはドキュメントの例に則って Duo SSO の名称にしております。

    Duo Security関連の2つのEnteprise Application

事前準備

  • Duo SecurityのSingle Sign-On画面 (Duo Central)にログイン可能にするGroupを予め作成しておきます。

    本記事では Dou_SSO_Group として作成しておきます。

    設定項目 設定値 備考
    Group type Security
    Group name Duo_SSO_Group 任意の名称を設定します。
    Group description Duo Signle Sign-On Group 任意の説明を設定します。
    Members 任意のUserを指定 任意のUserを指定しておきます。

    Single Sign-On向けGroupの事前準備

Duo Centralの設定

Duo Central向けのEnterprise Applicationの作成

  • Duo SecurityのAdmin Panelからメニュー: Single Sign-On を開きます。Privacy Statement と Duo’s Privacy Data Sheet を読んだ上で同意するのであれば、チェック ボックスにチェックを入れて Activate and Start Setup を押下します。

    メニュー: Single Sign-On (初回設定時)

  • Customize your SSO subdomain を設定します。Trial中の場合は設定できないため Complete later を押下します。

    Customize your SSO subdomain (Trial中の場合の例)

  • Azure ADを認証ソース (Authentication Source)とするため Add SAML Identity Provider ボタンを押下します。

    SAML Identity Provider の選択

  • SAML Identity Provider Configuration の設定画面が表示されます。

    SAML Identity Provider Configuration の設定画面

  • Azure PortalAzure Active Directory から Manage セクションの Enterprise applications を開きます。

    Azure ADのEnterprise applicationsの設定画面への移動

  • Enterprise applications の設定画面で New application ボタンを押下して、Duo SecurityのSingle Sign-On向けのEnterprise Applicationを作成していきます。

    Enterprise applications の設定画面の New application ボタン

    • Create your own application ボタンを押下します。

      Duo SecurityのSingle Sign-On向けのEnterprise Applicationの作成

      • What's the name of your app? にDuo SecurityのSingle Sign-Onの設定である旨を判別できる任意の名称を入力します。本記事では公式ドキュメントの設定名の例と合わせて Duo SSO としています。

      • What are you looking to do with your application? には Integrate any other application you don't find in the gallery (Non-gallery) を選択します。

  • 先に作成したEnterprise Application (本記事では Duo SSO)の Manage セクションの Users and groups を開きます。

    Duo SecurityのSingle Sign-On向けのEnterprise Application (本記事では Duo SSO の名称で設定)

  • Add user/group ボタンを押下して、Duo SecurityのSingle Sign-On画面 (Duo Central)にログイン可能にするUserやGroupを追加します。
    本記事では事前に作成していた Dou_SSO_Group のGroupを追加しています。

    User/Groupの追加 (1/2)

    User/Groupの追加 (2/2)

Enterprise ApplicationのSingle sign-onの設定

  • Enterprise Applicationの Manage セクションの Single sign-on を開きます。

    Enterprise Applicationの Single sign-on 設定画面への移動

  • Select a single sign-on methodSAML を選択します。

    Select a single sign-on method に SAML を選択

Basic SAML Configuration の設定

  • Basic SAML ConfigurationEdit ボタンを押下します。Duo Security側の情報を参照しながらAzure AD側に設定を行います。

    Basic SAML Configuration の設定

    • Duo Security側に表示されている Entity ID を、Azure AD側の Identifier (Entity ID) に貼り付けます。

    • Duo Security側に表示されている Assertion Consumer Service URL を Azure AD側の Reply URL (Assertion Consumer Service URL) に張り付けます。

    • 表に表すと対応関係は下記のようになります。

      Duo Security側の表示項目 Azure AD側の設定項目
      Entity ID Identifier (Entity ID)
      Assertion Consumer Service URL Reply URL (Assertion Consumer Service URL)

      Basic SAML Configurationの設定 (Duo Security視点)

      Basic SAML Configurationの設定 (Azure AD視点)

    • 設定が完了したら Save ボタンを押下して設定の保存を忘れないようにしてください。

Attributes & Claims の設定

  • Attributes & ClaimsEdit ボタンを押下します。

    Attributes & Claims の設定

  • Additional claims の設定を行います。

    • Add new claim ボタンを押下します。

      Add new claim ボタンから Manage claim の設定画面に移動

    • Manage claim の設定画面にて下記の設定を順に Additional claims に追加していきます。下記以外のデフォルトで存在する Additional claims は削除しておきます。

      Name Source Source attribute
      Email Attribute user.mail
      Username Attribute user.userprincipalname
      FirstName Attribute user.givenname
      LastName Attribute user.surname
      DisplayName Attribute user.displayname
      • Manage claim の設定画面での設定箇所は下記の画面キャプチャの箇所を参考にしてください。

        Manage claim の設定画面での設定箇所

      • 設定が全て完了した状態では下記の画面キャプチャのようになります。

        設定完了後の状態の例

証明書 (SAML Certificates)とメタ データ (Set up Duo SSO)の設定

  • Enterprise Applicationの Manage セクションの Single sign-on を開き直します。SAML CertificatesCertificate (Base64) から Download を押下して証明書を保存します。
    備考: 必要に応じて SAML CertificatesEdit ボタンから証明書の有効期限を調整しておきます。

    証明書ファイルのダウンロード

    証明書ファイルは後の手順でDuo Security側にアップロードします。

  • Azure AD側の Set up Duo SSO (Duo SSOの部分はEnterprise Application名)に表示されているメタ データの情報をDuo Security側に貼り付けます。

    • Azure AD側に表示されている Login URL を、Duo Security側の Single Sign-On URL に貼り付けます。

    • Azure AD側に表示されている Azure AD Identifier を、Duo Security側の Entity ID に貼り付けます。

    • 補足: Duo Security側の Single Logout URLLogout Redirect UR空のままにしておきます。

    • 表に表すと対応関係は下記のようになります。

      Azure AD側の表示項目 Duo Security側の設定項目
      Login URL Single Sign-On URL
      Azure AD Identifier Entity ID

      Azure AD側のメタ データの情報

      Duo Security側の貼り付け先

  • Azure AD側からダウンロードしておいた証明書 (Certificate (Base64))を、Duo Security側の Certificate にアップロードします。

    Duo Security側への証明書のアップロード

  • Display Name を任意の名称に変更します。本記事では Azure AD に変更しています。

    Display Name の名称変更

  • 環境に応じて Username normalization の設定の変更が必要になります。
    Directory情報をUsername形式 (例: alice) で取り込んでいる場合は Simple (デフォルト値)のままにしておきます。しかし、メール アドレス形式 (例: alice@mycorp.test)で取り込んでいる場合は None を指定します。

    Username normalization の設定

  • 設定が完了したら Save ボタンを押下して設定の保存を忘れないようにしてください。

    Save ボタンによる設定の保存

Duo Centralの有効化とログイン確認

  • メニュー: Single Sign-On > Duo Central を開いて Get Started ボタンを押下します。

    Duo Cetnralの開始

  • Activate the Universal Prompt for Duo Central のポップアップは Activate Now ボタンを押下します。

    Activate the Universal Prompt for Duo Central の設定

  • Stats: Offline の横にあるスライド バーを押下して Online に変更します。

    Duo CentralのStatusの変更: Offline から Online へ

  • Are you sure you want to put Duo Central online? のポップアップは Yes. put it online ボタンを押下します。
    備考: このタイミングでInternet上からDuo Centralへアクセスが可能になります。検証環境などで脆弱なパスワードが放置されているような環境では、気軽に有効化しないように注意してください。

    Are you sure you want to put Duo Central online?

  • メニュー: Single Sign-On > Duo Central より Configuration & Policy タブを開くと、Duo CentralのURL が表示されます。Duo Centralへログインが可能であるかを確認してください。

    Duo CentralのURL

    Duo Centralへのログイン時

運用面の考慮

設定したら終わりではない点があるため、筆者が気になった運用面の考慮を書き留めておきます。

  • Enterprise Applicationで証明書 (SAML Certificates)を発行しているため、証明書の期限と更新の管理を怠らないように注意してください。

  • Enterprise Applicationには、Duo CentralからのSingle Sign-Onを許可するUserやGroupを設定しておく必要があるため、人事異動などでUserやGroupに変更が起きる場合の考慮を忘れないようにしてください。

関連ドキュメント

duo.com

主に SAML のセクションを参照してください。