AWSのclient VPNを利用してリモートワークでも固定IPを利用したい
はじめに
こんにちは、DELTAの馬場です。
今回の記事では Google workspace の SAML と AWS Client VPN を組み合わせた環境を作った際の詰まりポイントなどを記載していこうと思います。
背景
あるお客様から特定のIPに対してからのアクセスのみ許可する統制を取っているので、どうにかできないか?という相談を受けたのがことの発端です。
弊社は基本リモートワークな環境なので、オフィスのIPを解放してもらって作業する時は出社するというのは中々しんどいものがありました。
また、ACMで証明書を用意してそれを配ってAWSの中だけで完結することもできたのですが、業務委託の方の入退場があるたびに証明書のローテーションをするというのも中々に負荷が高い話になります。
そこで、全社で利用しているGoogle workspace のSAML認証と組み合わせることで、リモートワーク下でもIPを固定して作業ができる状態を実現できるのではないか!?と思いつきました。
Google workspace の部分を情シスの人にお願いする以外余裕っしょ!と思って進めたのですが少し詰まった部分もあったので自分の備忘も兼ねて記事を作成します。
先に結論
大体の作業はこちらを参考にさせていただきました。
client VPN の承認ルールとルートテーブルにNATを通る "0.0.0.0/0" の送信先CIDRを指定することでNATに貼ったEIPを使って外部にアクセスできる!
構成はこのような形になります
やったこと
google workspaceでの設定
G suite と少しUIが変わっているので一応Google workspaceの側の設定を紹介
アプリ > ウェブアプリとモバイルアプリ > アプリを追加 を選択
”カスタムSAMLアプリの追加” を選択
ここからは結論で紹介した記事を参考に作業します。
気を付けた方が良いポイントは2つで
- 無理やりhttpのACSのURLを登録することに癖があるところ
- ユーザーアクセスをオンにする必要があること
です
client VPNの作成
準備として、雑にNATが存在する private subnet のあるVPCを作成します。
そしてNATにEIPを付与します。
だいたいこんな状態になります。
以降は基本的にAWSのドキュメントに沿って進んでいきます
ACMに登録する証明書もこの記事を参考にcloudshellでササっと作成しています。
※有効期限は1年とかにしています。
client VPN が作成できたら、ターゲットネットワークを関連付けます。
次に承認ルールとルートテーブルにNATを通る "0.0.0.0/0" の送信先CIDRを指定します。
※DNSサーバーがどうこう言われた場合はRoute 53 Resolverの機能を活用します。
"DNS サーバーを有効化"を有効にし
DNS サーバー 1 IP アドレスに VPCのCIDRの第4オクテッドに+2した値を設定します。
Route 53 Resolverについての説明はこちらを参照。
設定値の反映等が終わったら、クライアント設定をダウンロードします。
これで設定としては完了です!
テスト
今回は以下からデスクトップ用 AWS Client VPNをダウンロードします。
ダウンロードができたら以下の手順で挙動を確認していきます。
③AWS client VPNを起動。
"ファイル" タブ > "プロファイルを管理" > 「プロファイルを追加」をクリック
表示されるバナーに以下を設定。
表示名:任意
VPN設定ファイル:前の手順でダウンロードしたクライアント設定ファイル
「プロファイルを追加」をクリック
「完了」をクリック
④表示名を選択
「接続」をクリック
⑤Googleのログインページが表示されたら自分のアカウントにログインする
⑥接続が完了したら以下のURLを開いてみる
https://www.ugtop.com/spill.shtml
⑦表示されるIPが NATに付与したEIP であればVPNへの接続完了!
まとめ
AWSの client VPN を利用することでNAT Gateway経由の通信とすることができるため
IP固定化の要件をリモートワーク環境でも実現できます。
また、課題になりやすいユーザー管理をSAMLを利用することで管理場所を増やす必要なく実現できるので業務負荷を上げることなく上記が実現できます。
We're hiring!
最後までお読みいただきありがとうございます。
現在DELTA では一緒に働いてくださる仲間を大募集中です!
ご興味をお持ちいただけましたら、お気軽にフォームからご連絡ください。
Discussion