VPCの中にあるサーバやデータベースへ、人が入る必要は必ず出てくる。 このとき「SSHを開けるか、踏み台を建てるか」の二択で考えると、選べたはずの構成を見落とす。 本稿では、VPC内リソースへの接続方法を3つの軸で整理し、選ぶ順序を示す。
なお、AWSのサービスがどこに住んでいるか(VPCの中か外か)は、 「プライベートネットワークだから安全」を考え直すで扱っている。 本稿が対象にするのは、VPCの中に住むリソースへ、人がどう到達するかである。
1. 課題: 入口の選択肢は二択ではない
入口の設計は、次のように進みがちである。
どれも間違いではない。問題は、選択肢を並べずに決めていることである。 選択肢は「何に接続するか」「入口の性質」「認証と絞り込み」の3つの軸に分かれる。
2. 軸1: 何に接続するか
接続先の種類によって、使える手段が変わる。ここを最初に決める。
「シェルに入りたい」と「Webアプリを見たい」を同じ入口で解こうとすると、過剰な構成になる。 Webアプリを見るためだけにVPNを引く、といった選択がその例である。
3. 軸2: 入口の性質
手段は、性質で4つに分かれる。同じ「VPCに入る」でも、何を公開し、誰が経路を持つかが違う。
3.1 AWSが経路を仲介する(入口を公開しない)
インターネットに待ち受けポートを作らず、AWSのAPIを経由して到達する。
この区分で見落とされやすいのが下の2つである。 EC2 Instance Connect Endpointは踏み台そのものを不要にし、 Session Managerのポート転送は「踏み台の先のデータベースへ届かせる」という用途を、踏み台を経由したまま満たす。
3.2 公開してアプリ層で守る
入口をインターネットに出し、認証と絞り込みで守る。HTTPのアプリケーション向けである。
3.3 ネットワークごと繋ぐ
到達性そのものを与える。IPレベルで届く必要があるときに選ぶ。
3.4 画面を転送する
作業環境そのものをクラウド側に置き、画面だけを転送する。AppStream 2.0やWorkSpacesがこれにあたる。 端末にデータを残したくない場合の選択肢になる。
4. 軸3: 認証と絞り込み
入口の性質が決まったら、何で認証し、何で絞るかを別々に決める。ここを混同すると、片方だけで守った気になる。
BASIC認証は、CloudFrontのエッジ関数で差し込める手軽な方法である。 ただし利用者の識別にはならないため、操作を個人に紐づける必要がある画面には向かない。
5. 選ぶ順序
3つの軸は、次の順で決めると迷いにくい。
- 接続先は何か(シェル / HTTPアプリ / HTTP以外のTCP)
- 入口を公開するか。公開しないなら、AWSが経路を仲介する手段を先に検討する
- 誰が使うか。個人を特定して記録に残す必要があるなら、IAMかIDプロバイダ連携を選ぶ
- どれだけの時間使うか。常時使わない入口は、時間課金の対象を確かめる
6. マネージドな入口を、使うときだけ用意する
前章の4は見落とされやすい。マネージドな入口(AWS Verified Access、AWS Client VPN)は運用が軽くなる代わりに、 入口が存在している時間に対して課金される。使う時間が限られているなら、入口そのものを使うときだけ作るという選択肢がある。
6.1 Verified Access ─ リクエストごとに評価して通す
VPNのトンネルを張らずに、社内のアプリケーションへ入るための入口である。 利用者は普段のブラウザで開くだけで、VPNのクライアントを入れない。
通す・通さないを、接続を張るときに一度決めるのではなく、リクエストごとに評価するのが他の経路との一番の違いである。 評価に使うのは、利用者の識別情報と端末の状態である。 アプリケーションはプライベートサブネットに置いたままで、インターネット側にポートを開けない。
6.2 Client VPN ─ トンネルを張ってIPレベルで届かせる
端末からトンネルを張る方式で、リクエストごとに評価するVerified Accessとは考え方が違う。 データベースやリモートデスクトップのように、IPレベルで届かせたいときに選ぶ。
考え方は違っても、時間限定で使うやり方は同じように当てはめられる。 Client VPNで時間課金の対象になるのは、エンドポイント本体ではなくサブネットへの関連付けと接続だからである。 証明書や認可の規則は常設のまま残し、関連付けだけを使うときに作って外せば、課金は止まる。作り直す範囲も小さい。
6.3 消す対象がサービスごとに違う
「止める」と「消す」は別である。 課金が止まる操作がどれかを、サービスごとに確かめる。
常設する基盤は構成のコードで管理し、使うときだけ作る部分は構成の管理外に置いて、自動化の手順が作成し、 利用時間の待機後に削除する。入口を構成の管理から外すのは、作成・削除のたびに構成の適用が必要になるのを避けるためである。 作成の手順に待機と削除まで含めておくと、利用の終わりに必ず削除まで進む。後始末を利用者に委ねない。
6.4 画面で操作する
入口を作って消す操作と、使い方による費用の違いは、操作できる画面に置いた。 利用時間を決めて入口を作ると、作成から削除までの段階が順に進む。段階の並びは経路ごとに異なる。
安全な通信経路(運用画面例。AWSに接続しないモック)
7. まとめ
入口の設計で最初にすべきことは、構成を選ぶことではない。 接続先と利用者を確かめ、公開しなくても届く手段が残っていないかを見ることである。
