Amazon VPC Network Access Analyzer
こんにちは、カスタマーサクセス課の鈴木悠哉です。
ネットワーク周りの技術に苦手意識があり、何か役に立つサービスは無いかと AWS の新サービスを確認していたところ、 現在のネットワーク経路を分析し、画面イメージでの出力をする事ができる【Amazon VPC Network Access Analyzer】がリリースされているのを見つけました。
今回はこの【Amazon VPC Network Access Analyzer】について解説、実際に使用して感じたことをご紹介します。
結論
まずは結論として、、、
利点
- 分析した経路が分かりやすい図で確認できるので、簡単に経路が把握できる
- ネットワーク経路の分析が機械的に出来るため、目的の経路、意図しない経路が確認できる
欠点
- まだ分析結果として対応していない経路がある
- 分析条件の編集の自由度がまだ低い
主な機能
AWS 公式として下記の通り機能が紹介されています。
https://aws.amazon.com/about-aws/whats-new/2021/12/amazon-vpc-network-access-analyzer/
内容を要約すると、
- 現在のネットワークアクセスの状態を経路ごとに図で確認が出来る機能
- 設定した経路が通っている事、意図しない経路が無いか確認する事が出来る
- 本番環境、開発環境のVPC間の分離の確認
- IGWからのアクセスできるリソースの確認
- リソースが限定的な条件を満たしているか
要は、疎通が成立している経路は全て分析結果として表示されるという事になります。
(そのため、意図していない経路も確認できる)
逆に、疎通が成立していない経路については分析結果として表示されないため、使いどころが重要になります。
使用方法
まずは実際に使用してみて、 【どのような操作】 で、 【どのような結果】 が出るのかを確認します。
1. 基本操作(デフォルトのスコープを使用して分析)
手順.1-1 VPCのサービスから【Network Access Analyzer】を選択
手順.1-2 デフォルトのスコープを確認
AWSが用意したデフォルトのスコープが既に準備されており、一覧で表示されます。
※スコープとは経路分析の条件になります
手順.1-3 スコープを選択
今回は【AWS-VPC-Egress(Amazonが作成)】を選択して、【分析】を選択
分析内容は下記の通りになります。
* 【すべてのVPCからインターネットゲートウェイ、ピアリング接続、VPCエンドポイント、VPN、トランジットゲートウェイへの出力パスを特定します。】
手順.1-4 分析開始
手順.1-5 分析完了
下記の通り経路の分析が出ました。
今回の分析結果では、 [ENI] - [SecurityGloup] - [ACL] - [RouteTable] - [VPCEndpoint] までの経路が分析され、一覧で表示される
手順.1-6 分析結果をソート
分析結果からリソースタイプ、リソースIDなどでソートをする事ができます。
手順.1-7 分析結果から管理画面へ移動
分析結果から各リソースの管理画面へ移動する事ができます。
基本的な使い方は以上になります。
2. 自分で作成したスコープを作成して分析
分析はデフォルトのスコープ以外に、自分で条件を選択したスコープを使用して分析する事ができます。
今回は【EC2インスタンス】と【IGW】の間で疎通が取れている経路を分析する条件を設定してみます。
手順.2-1 【Network Access Scope を作成】を選択
手順.2-2 【インターネットゲートウェイへのアクセスを識別】を選択
手順.2-3 名前、条件を入力、選択して【次へ】を選択
【EC2インスタンス】から【IGW】への経路を分析する条件を入力します。
送信元に【EC2インスタンス】、送信先に【IGW】を選択
手順.2-4 条件の確認
登録した条件の内容がJSONで表記される
条件を確認後、【Network Access Scope を作成】を選択
手順.2-5 スコープを確認
作成したスコープが一覧に表示される
手順.2-6 作成したスコープで分析
作成したスコープで [EC2インスタンス] - [IGW] 間の分析ができました。
3. 分析出来ない経路を分析
ここまでの手順で分析を行ってきた結果、一通りの経路を分析出来たと思います。
ですが、分析結果をよく見ると 経路に表示される内容はAWSサービス になります。
それでは、 経路としては正しいが、分析されない経路 、それを分析した結果をご紹介します。
手順.3-1 NATインスタンスを使用する環境の構築
下記の構成図の通り、NATインスタンスを使用して外部接続するPrivateサブネットの環境を作成します。
インスタンス | IPアドレス | 用途 |
---|---|---|
test-nat | 10.10.0.247 | NATインスタンス |
test-bastion | 10.10.0.121 | 踏み台サーバ |
test-private | 10.10.1.240 | プライベート環境インスタンス |
手順.3-2 外部アクセスを確認
そしてプライベート環境のインスタンスから外部アクセスが可能であることを確認します。
- プライベート環境のインスタンスから外部通信
[ec2-user@ip-10-10-1-240 ~]$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=102 time=4.09 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=102 time=3.96 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=102 time=4.00 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 3.964/4.020/4.093/0.074 ms
手順.3-3 経路の分析
先ほど作成した、[EC2インスタンス] - [IGW] 間を分析するスコープを利用して、分析を行います。
問題が無ければ、NATインスタンス、踏み台サーバ、プライベート環境インスタンスそれぞれが分析結果として表示されるはずです。
手順.3-3 分析結果の確認
すると、プライベート環境のインスタンス【test-private】はNATインスタンスを経由して外部アクセス出来ていたはずですが、分析結果にはNATインスタンスと踏み台サーバしか表示されません。
これは Amazon VPC Network Access Analyzer が分析できる経路は、AWSサービスを使用した経路のみという事が分かります。
(NATインスタンスはインスタンス内の機能を使用して通信を行っているため、AWSサービスではない)
結果、経路は成立しているが、分析結果として表示されないケースがあります。
まとめ
実際に Amazon VPC Network Access Analyzer を操作し、気付いた点は以下の通りになります。
- 経路の確認を機械的に行う事ができ、分かりやすい表で表示されるのは環境の整理を行う際に便利である
- ただし、構成によっては分析出来ない経路があるので、それを理解した上で使用する事が必要
- 対象ENIを持つインスタンスが稼働していないと分析対象にならないので、分析結果にも表示されない
- スコープを作成する際に表示される分析条件のJSONは編集する事が出来ない
- 今後できるようになるか...?
- 少額であるが料金が発生する
- 分析した ENI ごとに 【0.002 USD】発生
- お客様の環境では請求が発生してしまうため注意が必要
今回の Amazon VPC Network Access Analyzer についての解説は以上となります。