ネットワークエンジニアのITブログ

長らくネットワークで生活してきましたが、ここ数年クラウドとサーバー系に触れる機会が増えて、日々成長しています。最近のお気に入りはNSXALBとGoogle Cloud。

LDAP連携によりADアカウントでNSXALBへログインをしてみる

NSXALBでVSを作成する際に、複数のシステム管理者から依頼が来ますが、作成後の管理は各システム管理者に任せたいですよね。
ただし、admin権限を渡してしまうと、他のシステムやNSXALB自体の設定変更ができてしまうので、自分が担当しているシステムの設定に留めたいと思います。

そこで、NSXALBでは、「テナント」という機能を利用して、各システムを論理的に分割することが可能です。ここでは、「Red」と「Blue」の2つのテナントを作成してみましょう。
さらに、あらかじめADで、それぞれのグループ用にユーザーを作成しておき、LDAP連携によるログインをしてみたいと思います。

ADでユーザーとグループを作成

ユーザー作成

NSXALBにログインするためのユーザーを2つ作成します。
すでにADは構築済みの前提で進めていきます。
[Active Directoryユーザーとコンピュータ]から、ドメイン名の[homevm.local]内にある、Usersを右クリックし、「新規作成」ー「ユーザー」を選択します。

user01を作成します。

同様に、user02も作成します。

グループ作成

続いてグループを2つ作成します。
[Active Directoryユーザーとコンピュータ]から、ドメイン名の[homevm.local]内にある、Usersを右クリックし、「新規作成」ー「グループ」を選択します。

グループ名に「Red」と入力して、OKを選択します。

同様に、Blueも作成します。

グループにユーザーを登録

作成したユーザーとグループを紐づけます。
以下のグループにそれぞれユーザーを登録します。
Red:user01@homevm.local
Blue:user02@homevm.local


テナントの作成

まず最初にテナントを作成します。
[Administration]-[Accounts]-[Tenats]から「Create」を選択します。

テナント名を「Red」としてSAVEを選択します。


同様に「Blue」のテナントも作成します。


Auth Profileの作成

ここでは、LDAP接続するサーバの指定とUser、GroupのSearch DNの指定を行います。
[Templates]-[Security]-[Auth Profile]から「Create」を選択します。

以下の情報を入力し、SAVEを選択します。
Name:AD Profile
Type:LDAP
LDAP Servers:192.168.1.34(ADサーバ)
Port:389
Base DN:DC=homevm,DC=local(ADのドメインがhomevm.local)
Administrator Bind:有効
Admin Bind DN:administrator@homevm.local
User Search DN:CN=Users,DC=homevm,DC=local
User Search Scope:Scope One Level
User ID Attribute:UserPrincipalName
Group Search DN:DC=homevm,DC=local
Group Search Scope:Scope One Level
Group Filter:objectClass=*
Group member Attribute:member



SAVEが完了し、AD Profileが作成されたことを確認します。

Auth Mapping Profileの作成

続いて、ログインするユーザとテナントの紐づけを行います。
今回は、ADで作成しているグループ名とテナント名を同じにしているので、ここでマッピングしていきます。
[Templates]-[Security]-[Auth Mapping Profile]から「Create」を選択します。

Nameを「AD Mapping Profile」、Typeを「LDAP」とし、Mapping RulesのADDを選択します。

Redルールの作成

Match項目内にあるLDAP Match Groupで「member」を選択し、Groupに「Red」を指定します。
ここで指定するのは、ADで作成したグループ名になります。
Action項目内のCustom Mappingを選択し、ADDから、「User Tenant」を押下します。

User Tenat内にあるTypeは「selected」、Tenatsは「Red」を選択し、Default Tenatは「Red」と入力します。

続いて、再度ADDから、「User Role」を押下します。

User Role内にあるTypeは「selected」、Rolesは「Application-Admin」を選択し、SAVEを押下します。

SAVEが完了し、ルール1が作成されたことを確認します。
このルール1という名前は、分かりづらいですが変更ができません。

Blueルールの作成

同様にBlueのルールを作成していくので、Mapping RulesのADDを選択します。

Match項目内にあるLDAP Match Groupで「member」を選択し、Groupに「Blue」を指定します。
Action項目内のCustom Mappingを選択し、ADDから、「User Tenant」を押下します。

User Tenat内にあるTypeは「selected」、Tenatsは「Blue」を選択し、Default Tenatは「Blue」と入力します。

続いて、再度ADDから、「User Role」を押下します。

User Role内にあるTypeは「selected」、Rolesは「Application-Operator」を選択し、SAVEを押下します。
ここでは、あえて参照権限のRoleを付け、Redテナントに割り当てたRoleと異なる動作をするよう設定します。

SAVEが完了し、ルール2が作成されたことを確認し、SAVEを選択します。

SAVEが完了し、AD Mapping Profileが作成されたことを確認します。

動作確認

ユーザー情報のVerify

設定が完了したので、NSXALBで動作確認してみましょう。
実際にログインしなくても、NSXALBでVerifyすることができます。
[Templates]-[Security]-[Auth Profile]内に作成したAD Profileがありますが、右端に✅マークがあるので、これを押下します。

Test User Entryを選択し、Usernameに「user01@homevm.local」を入力して、Verifyを押下します。
ADに接続して、ユーザーが存在していると、以下のように情報を取得できます。

同様に、「user02@homevm.local」も情報取得できることを確認します。

ログイン確認

NSXALBのログイン画面で、「user01@homevm.local」でログインしてみます。

ログインすると、ユーザーが「user01」、テナントが「Red」、Roleが「Application-Admin」であるため、Administrationの設定項目が制限されていることがわかります。

さらに、「Application-Admin」では、テナント内でApplicationの編集権限があるため、「CREATE Pool」のボタンが表示されていることがわかります。

同様に、「user02@homevm.local」でログインしてみます。

ログインすると、ユーザーが「user02」、テナントが「Blue」、Roleが「Application-Operator」であるため、Administrationの設定項目が制限されていることがわかります。

さらに、「Application-Operator」では、テナント内でApplicationの参照権限しかないため、「CREATE Pool」のボタンが表示されていないことがわかります。

テナントとロールを適切に紐づけることにより、ADで作成した個人ユーザーは編集権限を持たせ、参照用アカウントは共有して利用するようにすることで、いつ誰がどのような操作をしたのか、ユーザー単位で識別できるようになり、かつNSXALBでアカウント管理をしなくて済むので運用としてはスマートになるかと思います。

以上で、LDAP連携によるログイン検証は終了です。