らくがきちょう

なんとなく

Cisco ACI へのログイン時に Active Directory 認証出来るようにする

以前に Cisco ACI へのログイン時に RADIUS 認証出来るようにするというメモを書きました。 今回は Active Directory で認証する場合の基本的な設定方法をメモしておきます。 ACI のバージョンは 4.1(2g) を利用しています。

設定方針

今回はログインするユーザを Group Mapping 機能を使って Active Directory 上に存在するグループと照会することで「Active Directory 上の指定グループに参加しているメンバーのみ、ACI へログイン可能」になるよう、設定します。

設定の流れ

設定の流れは概ね、以下の通りです。

  1. Active Directory の構築
  2. LDAP Provider の設定
  3. LDAP Group Map Rule の設定
  4. LDAP Group Map の設定
  5. Login Domain の設定

LDAP Provider しか設定しない場合は、Active Directory 上にユーザが存在すれば (所属グループとは関係無く) ログイン認証出来てしまいます。 今回は「Active Directory 上にユーザが存在し、且つ、指定グループに参加しているユーザのみ、ACI へのログインを許可する」要件を実現するには LDAP Group Map Rule と LDAP Group Map の設定が必要です。

Active Directory の設計

今回、検証に利用した Active Directory は以下の設計です。

  • ドメイン名は「example.com
  • ログインを許可するユーザは People OU 配下に作成する方針 (Base DN = OU=People, DC=example, DC=com)
  • ACI → Active Directory への認証要求時には Users 配下の Administrator ユーザを使用 (Bind DN = CN=Administrator, CN=Users, DC=example, DC=com)
  • ACI へのログインを許可するユーザは Groups OU 配下の ACI-Admins グループへ所属している必要がある (Group DN = CN=ACI-Admins, OU=Groups, DC=example, DC=com)

Windows Server 上で「Active Directory ユーザとコンピューター」アプレットを使い、Active Directory の構造を確認すると以下のように表示されます。

f:id:sig9:20190622160639p:plain

Step.1

通常、ACI のログイン画面は以下のように「ユーザ名」と「パスワード」しか入力出来ません。 認証先をふたつ以上設定した場合(例えば「ローカル認証と Radius 認証」や「ローカル認証と Active Directory 認証」)、ログイン画面に認証先を選択する「Domain」という項目が増えます。 ここではまだ初期状態である「ローカル認証のみ」なので、Domain 入力欄は表示されていません。

f:id:sig9:20190622144422p:plain

Step.2

AdminAAAAuthenticationLDAPProvidersCreate LDAP Provider の順にクリックします。

f:id:sig9:20190622144548p:plain

Step.3

以下のように設定します。

項目 意味
Host Name (or IP Address) Active Directory ドメインコントローラのホスト名、または IP アドレスを入力します
Port 通常は初期値の 389 にしておきます。 ACI ~ Active Directory 間の通信を LDAPS で保護したい場合は 636 等、適切な値を指定します
Bind DN Active Directory への問い合わせ時に利用するユーザを指定します
Base DN ACI へのログイン認証要求時に検索する Active Directory の基点を指定します
Password Bind DN で指定したユーザ用のパスワードを入力します
Confirm Password 確認用に同じパスワードを再入力します
Attribute Active Directory 上の特定グループに所属していることを条件にしますので、所属グループを意味する memberOf 属性を指定します
Filter Type Filter TypeMicrosoft AD にするとユーザ検索用のフィルタが sAMAccountName=$userid に自動的に設定されます。 一度設定を終了し、設定画面を開き直せばフィルタの内容を編集することも可能です。 任意のフィルタを指定したい場合は Custom を選択し、追加される Custom Filter 欄へ指定したいフィルタを追加します。 「Microsoft AD を選択」しても「Custom Filter に `sAMAccountName=$userid' を指定」しても同じフィルタになるので、同じ挙動になります
Custom Filter Filter TypeCustom を指定した場合は、任意のユーザ検索用フィルタを指定します。 今回は sAMAccountName=$userid を指定します
Management EPG 他の管理系設定と同様、通信に使う EPG を指定します。 今回は Out-of-Band EPG を指定しました

f:id:sig9:20190622144557p:plain

Step.4

次は LDAP Group Map Rule を設定します。 LDAP Group Map RulesCreate LDAP Group Map Rule をクリックします。

f:id:sig9:20190622144607p:plain

Step.5

Group DN で指定したグループに所属しているユーザのみ、ACI へのログインが許可されることになりますので、Active Directory 上に作成した「ACI へのログインを許可したいグループ」の DN を指定します。 また、「このグループに参加しているユーザに許可するアクセス範囲Security Domain` の中から選択します。

f:id:sig9:20190622144617p:plain

Step.6

前の手順で選択した Security Domain に対して割り当てる役割と権限 (RolePrivilege) を選択します。

f:id:sig9:20190622144627p:plain

Step.7

次は LDAP Group Map を設定します。 LDAP Group MapsCreate LDAP Group Map をクリックします。

f:id:sig9:20190622144637p:plain

Step.8

ここでは、あまり設定項目がありません。 ここまでの手順で作成した LDAP Group Map Rule を関連付けるだけです。

f:id:sig9:20190622144651p:plain

Step.9

いよいよ設定も大詰めです。 ここでは ACI ログイン時に Active Directory 認証を選択出来るようにする為、Login Domain の設定を行います。 AAAPolicy+ をクリックします。

f:id:sig9:20190622144703p:plain

Step.10

Realm から LDAP を選択すると LDAP 関連の設定項目が増えます。 今回は Group Mapping を使いますので、Auth Choice には LdapGroupMap を選択し、追加で表示される LDAP Group Map 欄に、ここまでの手順で作成した LDAP Group Map を指定します。 同様に Providers にも、ここまでの手順で作成した LDAP Provider を指定します。 冗長化する為に複数の LDAP Provider を指定するときは Priority 設定で優先度を指定することが出来ますが、今回の Active Directory ドメインコントローラはシングル構成なので Priority 設定は意味を持ちませんので「1」としました。

f:id:sig9:20190622144715p:plain

Step.11

ログアウトし、再度ログイン画面を表示すると Domain 欄が追加されていることが分かります。 初期状態で Domain はローカル認証 (Local) になっているはずですが、初期値を変更したい場合は AdminAuthenticationAAAPolicyDefault AuthenticationRealm から変更することが出来ます。 Domain から作成した Active Directory 認証用の Domain を選択した上でユーザ名とパスワードを入力して ACI へログインします。 ここで指定するユーザは Active Directory 上に存在し、且つ、指定したグループへ所属している必要があります。 今回は Active Directory 上に user-1 というユーザを作成しました。

f:id:sig9:20190622144726p:plain

Step.12

無事、user-1 でログイン出来ました!

f:id:sig9:20190622144739p:plain

Step.13

ローカル認証以外の、リモート認証されたユーザは AdminAAAUsersRemote Users から確認することが出来ます。 ここでは user-1 というユーザが作成されていることが分かります。 更に詳細を確認したい場合はユーザ名をダブルクリックします。

f:id:sig9:20190622144750p:plain

Step.14

リモート認証されたユーザの詳細が表示されます。

f:id:sig9:20190622144802p:plain