この記事では、Azure App Service(以下App Service)でAzure Container Registry(以下Container Registry)からイメージをPullするときに、Container Registry側でアクセス元IPアドレスに基づいて、アクセスを制御する設定とその確認方法について記載します。
- 検証のパターンと実施方法
- App Serviceの送信IPアドレスの確認
- Container Registryのアクセス制御
- Container Registryの診断設定
- Container RegistryからApp Serviceへのイメージpull動作検証
- まとめ
- 参考
検証のパターンと実施方法
検証として以下パターンでの挙動を記載します。
- アクセス許可設定したIPアドレスをもつApp Serviceでのイメージのpull
- アクセス許可設定していないIPアドレスをもつApp Serviceでのイメージのpull
検証環境は以下で実施しました。
- App Serviceリソースのデプロイのときに「公開」をDockerを指定してデプロイしていること
- App Serviceのイメージソースをプライベートレジストリとし、ユーザー名やパスワードを使用してアクセスする
- Container RegistryのSKUがPremiumであること
App Serviceの送信IPアドレスの確認
App Serviceの送信IPアドレスは以下の図にあるように対象となるリソースの「概要」->「プロパティ」->「ネットワーク」->「送信IPアドレス」に記載されています。
この複数記載されているIPアドレスを用いて、次のアクセス制御を設定します。
Container Registryのアクセス制御
Container Registryの「ネットワーク」にて以下を設定し、保存します。
- パブリックネットワークアクセス:選択されたネットワーク
- アドレス範囲:先程確認したApp Serviceの送信IPアドレス
Container Registryの診断設定
Container Registryに対し、App Serviceがイメージをpullしてくる際に利用するIPアドレスを確認するため、診断設定にてログを出力する設定をします。
Container Registryの診断設定にて「診断設定を追加する」をクリックし、次の画面でauditにチェックを入れます。
チェックを入れるとRepositoryEvent logsとLogin Eventsにも自動的にチェックが入ります。
あとは任意の「診断設定の名前」を記入し、「宛先の詳細」を今回はLog Analyticsに設定し、保存をクリックします。
Container RegistryからApp Serviceへのイメージpull動作検証
App Serviceでイメージをpullする動作は、基本的にApp Serviceの起動時に行われます。
そのため、一回App Serviceを停止したのち、App Serviceを起動してアクセス制御が正しく行われているか動作検証を行いました。
まず、アクセス制御で許可設定したIPアドレスを持つApp Serviceでは問題なく、イメージをpullすることができました。
また、Container RegistryのログでContainerRegistryRepositoryEvents を確認してみると、起動した時間付近にCallerIpAddressでApp ServiceのIPアドレスが記載されており、OperationNameではPullが記載されています。
一方で、アクセス許可されていないIPアドレスを持つApp ServiceからのアクセスログはContainerRegistryLoginEventsに記載されており、status codeが403と表記されています。
また、アクセス許可されていない方のApp Serviceの起動時のログにはアクセスが拒否されていることが確認できます。
IPアドレスは上記のContainerRegistryLoginEventsに記載されているIPアドレスと同じものが記載されていました。
まとめ
Container Registryでアクセス元IPに基づくアクセス制御とアクセスログによる挙動の確認をすることができました。
もし、IPアドレスに基づくアクセス制御とContainer Registryへのアクセスの鑑査を実施したい場合はご参考になればと思います。
参考
- パブリック レジストリ アクセスの構成 - Azure Container Registry | Microsoft Learn
- 受信/送信 IP アドレス - Azure App Service | Microsoft Learn