MS_AKSPrivateACR - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

ACR(コンテナ・レジストリ)をプライベート化する。

概要

  • ACRAzure Private Link でプライベート化。

  • プレビュー段階の手順なので、CLI 側は変わる可能性がある。

  • 一方、ポータル側の操作は変更なさそう(随分、簡単)。

補足(現況): ACR の Private Link 対応は既に一般提供(GA)されており、
手順自体も安定している。
ただし、[Premium SKU が必須である点は変わらない
(Basic / Standard では Private Endpoint を作成できない)。

詳細

CLI

補足(手順の意味): 上記は 3 つの作業に整理できる。

段階 作業 目的
① 経路 Private Endpoint の作成 VNET 内に ACR 用の私設 IP を生やす
② 名前解決 プライベート DNS ゾーン(privatelink.azurecr.io)の構成と VNET への関連付け <名前>.azurecr.io を私設 IP に解決させる
③ 遮断 ACR の「パブリック ネットワーク アクセス」を無効化 公衆経路を塞ぐ

② を忘れると、経路はあるのに公衆 IP へ名前解決してしまい閉域にならない
これは Azure Private Endpoint 全般に共通する
最大の落とし穴である。

なお ACR では、<名前>.azurecr.io に加えて
データ エンドポイント <名前>.<リージョン>.data.azurecr.io
名前解決できる必要がある(Blob の実体を取得する経路)。
Private Endpoint を作成するとこの DNS レコードも併せて作られる。

また、「サブネットでネットワーク ポリシを無効化」は
かつて Private Endpoint 作成の前提だった
privateEndpointNetworkPolicies の無効化を指すが、
現在は既定で有効のままでも作成でき
NSG による Private Endpoint への制御も可能になっている。

ポータル

補足(AKS から Pull する際の注意): ACR を閉域化した場合、
AKS のノードが ACR に到達できる必要がある。

  • ノードのサブネットが、Private Endpoint のある VNET から到達可能であること
  • ノードが参照する DNS がプライベート DNS ゾーンを解決できること
    (カスタム DNS を使う場合は条件付きフォワーダーの設定が必要)
  • Pull の認証は AKS のマネージド ID に AcrPull ロールを付与する
    az aks update --attach-acr

Microsoft Container Registry
閉域化できない(Microsoft のパブリック レジストリ)ため、
MCR への到達は別途 Azure Firewall 等で許可する必要がある。

参考

Microsoft Learn


Tags: 移行, クラウド, コンテナ, Azure, AKS, セキュリティ, 通信技術

⚠️ **GitHub.com Fallback** ⚠️