以前に Cisco ACI へのログイン時に RADIUS 認証出来るようにするというメモを書きました。 今回は Active Directory で認証する場合の基本的な設定方法をメモしておきます。 ACI のバージョンは 4.1(2g) を利用しています。
設定方針¶
今回はログインするユーザを Group Mapping 機能を使って Active Directory 上に存在するグループと照会することで「Active Directory 上の指定グループに参加しているメンバーのみ、ACI へログイン可能」になるよう、設定します。
設定の流れ¶
設定の流れは概ね、以下の通りです。
- Active Directory の構築
- LDAP Provider の設定
- LDAP Group Map Rule の設定
- LDAP Group Map の設定
- 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 の構造を確認すると以下のように表示されます。
Step.1¶
通常、ACI のログイン画面は以下のように「ユーザ名」と「パスワード」しか入力出来ません。 認証先をふたつ以上設定した場合(例えば「ローカル認証と Radius 認証」や「ローカル認証と Active Directory 認証」)、ログイン画面に認証先を選択する「Domain」という項目が増えます。 ここではまだ初期状態である「ローカル認証のみ」なので、Domain 入力欄は表示されていません。
Step.2¶
Admin
→ AAA
→ Authentication
→ LDAP
→ Providers
→ Create LDAP Provider
の順にクリックします。
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 Type を Microsoft AD にするとユーザ検索用のフィルタが sAMAccountName=$userid に自動的に設定されます。 一度設定を終了し、設定画面を開き直せばフィルタの内容を編集することも可能です。 任意のフィルタを指定したい場合は Custom を選択し、追加される Custom Filter 欄へ指定したいフィルタを追加します。 「Microsoft AD を選択」しても「Custom Filter に `sAMAccountName=$userid' を指定」しても同じフィルタになるので、同じ挙動になります |
Custom Filter | Filter Type に Custom を指定した場合は、任意のユーザ検索用フィルタを指定します。 今回は sAMAccountName=$userid を指定します |
Management EPG | 他の管理系設定と同様、通信に使う EPG を指定します。 今回は Out-of-Band EPG を指定しました |
Step.4¶
次は LDAP Group Map Rule を設定します。 LDAP Group Map Rules
→ Create LDAP Group Map Rule
をクリックします。
Step.5¶
Group DN
で指定したグループに所属しているユーザのみ、ACI へのログインが許可されることになりますので、Active Directory 上に作成した「ACI へのログインを許可したいグループ」の DN を指定します。 また、「このグループに参加しているユーザに許可するアクセス範囲を
Security Domain` の中から選択します。
Step.6¶
前の手順で選択した Security Domain に対して割り当てる役割と権限 (Role
と Privilege
) を選択します。
Step.7¶
次は LDAP Group Map を設定します。 LDAP Group Maps
→ Create LDAP Group Map
をクリックします。
Step.8¶
ここでは、あまり設定項目がありません。 ここまでの手順で作成した LDAP Group Map Rule を関連付けるだけです。
Step.9¶
いよいよ設定も大詰めです。 ここでは ACI ログイン時に Active Directory 認証を選択出来るようにする為、Login Domain の設定を行います。 AAA
→ Policy
→ +
をクリックします。
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」としました。
Step.11¶
ログアウトし、再度ログイン画面を表示すると Domain
欄が追加されていることが分かります。 初期状態で Domain はローカル認証 (Local
) になっているはずですが、初期値を変更したい場合は Admin
→ Authentication
→ AAA
→ Policy
→ Default Authentication
→ Realm
から変更することが出来ます。 Domain
から作成した Active Directory 認証用の Domain を選択した上でユーザ名とパスワードを入力して ACI へログインします。 ここで指定するユーザは Active Directory 上に存在し、且つ、指定したグループへ所属している必要があります。 今回は Active Directory 上に user-1
というユーザを作成しました。
Step.12¶
無事、user-1
でログイン出来ました!
Step.13¶
ローカル認証以外の、リモート認証されたユーザは Admin
→ AAA
→ Users
→ Remote Users
から確認することが出来ます。 ここでは user-1
というユーザが作成されていることが分かります。 更に詳細を確認したい場合はユーザ名をダブルクリックします。
Step.14¶
リモート認証されたユーザの詳細が表示されます。