AKS の Load Balancer で IP 制限をする
Azure Updates 情報にて、下記の「Service Allowed IP Ranges in AKS」という Public Preview が公開されていました。
内容的には下記のリンク先にあるように、AKS で利用する LoadBalancer において、IP (やサービスタグ) でのアクセス制御ができるとのこと。
ちとやってみました!
お試し手順
AKS の準備
下記のクイックスタートを参考に、新しい AKS クラスターを作成しておきます。
なお、バージョンは前述のドキュメントに記載の通り v1.29.0 以降が必要ですが、記事公開時点で既にデフォルトでは v1.30.10 が利用されるので大丈夫だと思います。
まずは素の状態で動作確認
まずは制限をかけない状態でアクセスができることを確認しておきます。先ほどのクイックスタートの「アプリケーションを展開する」でデプロイしたアプリケーションにアクセスできることを確認しておきましょう。
IP 制限を行ってみる
まずは念のためデプロイを削除しておき...
kubectl delete -f aks-store-quickstart.yaml
先ほどデプロイした yaml ファイルにおける、最後あたりの Service リソースの箇所に一部追記します。「#★」の付いた行が追加したもので、IP Range の値はアクセス元となる IP が含まれるように指定しました。
...
---
apiVersion: v1
kind: Service
metadata:
name: store-front
annotations: #★
service.beta.kubernetes.io/azure-allowed-ip-ranges: "xxx.xxx.xxx.0/24" #★
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: store-front
type: LoadBalancer
そして、再度デプロイしてみましょう。
kubectl delete -f aks-store-quickstart.yaml
すると、上記の IP Range に含まれる IP からはアクセスできますが、範囲外の IP からは繋がらなくなることが分かります。わたしの場合は自端末のブラウザからはアクセスができ、IP Range の範囲外である Azure Cloud Shell の curl コマンドではレスポンスが返って来なくなることが確認できました🤗
$ curl 130.33.175.223
# レスポンスが返って来ないので何も表示されない
おわりに
ということで、AKS の LB 側での IP 制御を Service の yaml ファイルでできることが確認できました。
もちろん Network Policy 系でも同様の制御は実現できますので、これにこだわる必要はないと思います。制御系の設定がバラバラ存在するのも大変ですし。
とはいえ、結構ライトかつ直感的に扱えるので、AKS を使い始める段階の方にとっては、とても便利かもしれませんね~。
Discussion