こんにちは。CI部の鎌田です。
AWS Client VPN、皆様もうお使いでしょうか。 Client VPNの解説は杉村のブログを 参照いただくとして、今回はClient VPNの承認ルールに関してのお話です。
承認ルールとは
AWS Client VPNにおいての承認ルールとは、Client VPNから接続可能な接続先をFirewallルールのように記載しておくものです。 Active Directory 認証を選択しているケースでは、特定のActive Directoryグループに対してのみアクセスを許可する、といったルールも記載が可能です。 承認ルール - AWS クライアント VPN
例えば、下記のような構成があったとしたした場合、192.168.1.10のインスタンスにはvpn-users1のグループにだけアクセスを許可する、といったようなルールが設定できます。
承認ルールのCIDRが重複した場合の挙動
さて、上記の構成図の際に、下記のような形で承認ルールを設計して設定したとしましょう。
接続先IP | 許可するグループ |
---|---|
192.168.0.0/16 | vpn-admins1 |
192.168.1.10/32 | vpn-users1 |
192.168.2.10/32 | vpn-users2 |
vpn-admins1のグループに所属するユーザーが、192.168.1.10のサーバーにClient VPN経由で接続するとどうなるでしょうか? 結果としては、アクセスできません。
AWSのネットワーク優先順位
AWSのネットワークに関するドキュメントを参照すると、VPCのドキュメントに the route table uses longest prefix match to prioritize the routes という記述があり、Longest Prefix Matchであることが分かります。
Configurations with specific routes - Amazon Virtual Private Cloud
このことから、上記のようにIPアドレスが承認ルールとして該当する可能性がある2つのルールがある場合、Longest Prefix Matchが適用されて、192.168.1.10/32で設定しているルールが優先的に使われます。 この承認ルールではvpn-users1のグループにしかアクセスを許可していないため、vpn-admins1のグループに所属しているユーザーがアクセスしようとしても、許可されていないグループなのでアクセス許可にならない、という結果となります。
ではどうするのか
では、管理者のようなユーザーが複数のサーバーへのアクセス許可を持っておきたいケースはどうするのか。解決策は、Active Directoryのユーザーに、複数の許可をするグループに所属させる、という方法を採ることです。
先の承認ルールを設定した際のユーザーと、所属グループが下記の通りだったとします。
ユーザー | 所属グループ |
---|---|
kamata | vpn-users1 |
mizumoto | vpn-users2 |
sysadmin | vpn-admins1 |
sysadminユーザーが管理者の想定で、vpn-admins1グループに所属している形になっています。これを、管理者用のユーザーであるsysadminだけ次の通りに変えます。
ユーザー | 所属グループ |
---|---|
sysadmin | vpn-admins1, vpn-users1, vpn-users2 |
管理者のユーザーは承認ルールに設定する予定の複数グループに所属させることで、Longest Prefix Matchが適用が適用されたケースでも、アクセス許可があるグループに所属しているという判定になり、これでアクセスが可能になります。
まとめ
- Client VPNの承認ルールはLongest Prefix Matchが適用されて判定される
- 管理者ユーザーには、Longest Prefix Matchを意識して、複数のActive Directoryのグループに所属させるグループ設計を実施する
この2点に注意して設計していただくことで、「アクセスさせたい先へのアクセスができない」というケースを回避できます。
Client VPNの承認ルールを使いこなして、快適なClient VPNライフを!