今回はNSX-TのIdentity FWについてまとめました。
概要
Identity FWについて
VDIの普及に伴い、特定の仮想マシンに異なるユーザがログインする場合があります。仮想マシンに営業チームの社員がログインしている場合は、その仮想マシンに対しては営業チームのサーバへのアクセスは許可するが、他チームへのアクセスは禁止させたと思います。
また、もし、仮想マシンに経理チームの社員がログインしている場合は、その仮想マシンに対しては経理チームのサーバへのアクセスは許可するが、他チームへのアクセスは禁止させたいと思います。
仮想マシンにログインしているユーザを確認し、DFWのルールを手動で変更すれば、仮想マシンにログインしているユーザの種類によって、仮想マシンがアクセス可能な対象を制御することは可能ですが、現実的ではありません。
NSX-TではIdentity FWと呼ばれる機能を使用することで、仮想マシンにログインしているユーザが所属するActive DirectoryのSecurity Groupを基に、トラフィックを許可/ブロック可能です。NSX Managerは仮想マシンにインストールされたVMware Tools経由で仮想マシンにログインしたユーザが所属するActive DirectoryのSecurity Groupを認識し、自動でDFWのルールを更新します。
注意点として、NSX Managerが仮想マシンにログインしたユーザが所属するActive DirectoryのSecurity Groupの情報をVMware Tools経由で取得するには、仮想マシンにVMware Toolsをインストールする際にNSXファイル自己検証ドライバとNSXネットワーク自己検証ドライバも一緒にインストールする必要があります。
検証結果
検証内容、構成
Active Directoryでalice(Group 1に所属)とbob(Group 2に所属)のユーザアカウントを作成します。
Segment 1に所属する仮想マシンをActive Directoryに参加させます。
NSX-TでIdentity FWを有効にし、Group 1に所属しているユーザがログイン中の仮想マシンは20.1.1.101、Group 2に所属しているユーザがログイン中の仮想マシンは20.1.1.102に対してのみ通信できるようにします。
ネットワーク機器のCLIの設定
interface GigabitEthernet2
ip address 20.1.1.101 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.254
interface GigabitEthernet2
ip address 20.1.1.102 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.254
Active Directorの設定
Active Directoryにユーザaliceとbobを作成します。
NSX ManagerとActive Directorの連携
NSX ManagerにActive Directoryのアドレスやクレデンシャルを設定し、NSX managerとActive Directoryを連携させます。
Groupの設定
DFWのルールで参照するGroupを作成します。Groupの所属条件にはActive DirectoryのSecurity Groupを使用します。
DFWの設定
最初にDFWでIdentity FWを有効化します。
次に、先程作成したGroupを使用して、DFWのルールを作成します。
DFWの状態確認
DFWのルールのextended srcの後の文字列が、Security GroupのIDを格納した変数になります。
[root@esxi1:~] vsipioctl getrules -f nic-10523958-eth0-vmware-sfw.2
ruleset mainrs {
# generation number: 0
# realization time : 2020-12-12T05:03:10
# FILTER (APP Category) rules
rule 1005 at 1 inout protocol tcp strict from any to any port 389 accept;
rule 1008 at 2 inout protocol any from any to ip 20.1.1.101 with extended src 8d918738-23b9-471e-86a4-010bce02d98f accept;
rule 1009 at 3 inout protocol any from any to ip 20.1.1.102 with extended src 0cf066ca-dcd2-4a3e-a651-327f7ede7899 accept;
rule 1010 at 4 inout protocol any from any to any reject;
rule 3 at 5 inout inet6 protocol ipv6-icmp icmptype 135 from any to any accept;
rule 3 at 6 inout inet6 protocol ipv6-icmp icmptype 136 from any to any accept;
rule 4 at 7 inout protocol udp from any to any port {67, 68} accept;
rule 2 at 8 inout protocol any from any to any accept;
}
ruleset mainrs_L2 {
# generation number: 0
# realization time : 2020-12-12T05:03:10
# FILTER rules
rule 1 at 1 inout ethertype any stateless from any to any accept;
}
Active DirectoryのSecurity GroupのIDを格納した変数の中身はsipioctl getcontainer -f <名前>コマンドで確認可能です。
[root@esxi1:~] vsipioctl getcontainers -f nic-10523958-eth0-vmware-sfw.2
containers are shared for this filter
global containers
container 0cf066ca-dcd2-4a3e-a651-327f7ede7899 {
# generation number: 96
# realization time : 2020-12-12T05:03:10
WIN_SID : S-1-5-21-2062540623-932880078-2124187180-1104,
}
container 8d918738-23b9-471e-86a4-010bce02d98f {
# generation number: 96
# realization time : 2020-12-12T05:03:10
WIN_SID : S-1-5-21-2062540623-932880078-2124187180-1103,
}
sipioctl getcontainer -f <名前>コマンドの出力に含まれるWIN_SIDがSecurity GroupのIDになります。
疎通確認(ユーザaliceでログイン)
Segment 1の仮想マシンにユーザaliceでログインします。
Segment 1の仮想マシンから20.1.1.101にPingを実施します。
Segment 1の仮想マシンから20.1.1.101へのPingが成功することが確認できます。
Segment 1の仮想マシンから20.1.1.102にPingを実施します。
Segment 1の仮想マシンから20.1.1.102へのPingが失敗することが確認できます。
疎通確認(ユーザbobでログイン)
Segment 1の仮想マシンにユーザbobでログインします。
Segment 1の仮想マシンから20.1.1.101にPingを実施します。
Segment 1の仮想マシンから20.1.1.101へのPingが失敗することが確認できます。
Segment 1の仮想マシンから20.1.1.102にPingを実施します。
Segment 1の仮想マシンから20.1.1.102へのPingが成功することが確認できます。
コメント