※本記事は、個人の意見および個人的活動を記したものであり、会社を代表するものではありません
1. Bastionへのアクセス制限の1つとして、接続元を制限する
Bastionへのアクセスを制限する方法はいくつかあるが、わかりやすいのはアクセス元のIPを制限する方法。今回はそれを設定する。
やり方は、AzureBastionSubnetに対してNSGを追加登録し、NSGでサブネットへのインバウンドアクセスが可能なIPを特定IPに制限する。
1-1. Bicepでの対応方針
BicepではNSGリソースの追加登録とAzureBastionSubnetへの紐付けだけを実施する。具体的なIPの制限は、構築時に実施するのではなく、システムがリリースされ、実際にアクセスする必要のあるIPが具体的になってから運用フローの中で登録すれば良いと思う。
今回はリソース作成後にインバウンドアクセスが可能なIPレンジを登録するスクリプトを作成することで対応してみる。
2. NSGの定義
AzureBastionSubnetへ紐づけるNSGは以下のパラメータで作成する。
- リソース名: RagSystem-AzureBastionSubnetNSG-dev
作成されたリソースは、予想通りNSGだけ。
3. AzureBastionSubnetとの紐付け
ここまでの手順では、NSGには既定のルールしか定義されていない状態。この状態でAzureBastionSubnetにNSGを追加しようとすると、以下のエラーが発生する。
このエラーの回避方法は以下のブログで紹介されている。
上記のブログに記載のルールについて、過剰に設定されているように思えたので1つ1つ設定したり外したりしながら確認したが、説明されているルール全て必須で、1つでも不足するとAzureBastionSubnetに紐づけることができなかった。
設定内容は以下の通り、ブログの内容とほぼ同じ。(優先度の数字やClientのIPアドレスが異なるぐらい)
3-1. NSGのインバウンドルール一覧(設定後)
3-2. NSGのアウトバウンドルール一覧(設定後)
3-3. NSGルール設定後にAzureBastionSubnetに紐付け
これでようやく紐付けができる。
4. 動作確認:Bastion経由でVMにアクセス
ここまでの構築結果により、許可したIPからのみ、Bastion経由でVMにログインできるようになっている。また、VMログイン時のローカルアカウントのパスワードはKeyVaultから取得できるようになっている。
4-1. 「Authentication Type」で「Password from Azure Key Vault」を選択
以下のようにAuthentication Typeで「Password from Azure key Vault」を選択すると、Key Vaultに保存したシークレットが選択できるようになる。
4-2. アクセス元のIPを許可しない場合の挙動
では、許可されていないIPからアクセスした場合はどのような挙動になるのか。
試してみると、Bastionにログインするところまではできる(Bastion自体にはアクセスできる)が、実際にログインを実行すると、真っ白な画面から先に進まないので、おそらくブロックされていると思われる。
真っ白な画面のイメージは参考にならないので掲載なし
次回は、NSGの作成、ルールの設定、そしてNSGとAzureBastionSubnetの紐付けをBicepで実施してみる。