MS_AKSPrivateACR - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
-
ACR を Azure Private Link でプライベート化。
-
プレビュー段階の手順なので、CLI 側は変わる可能性がある。
-
一方、ポータル側の操作は変更なさそう(随分、簡単)。
補足(現況): ACR の Private Link 対応は既に一般提供(GA)されており、
手順自体も安定している。
ただし、[Premium SKU が必須である点は変わらない
(Basic / Standard では Private Endpoint を作成できない)。
- VNET・サブネットの名前を取得
- サブネットでネットワーク ポリシを無効化
- プライベート DNS ゾーンを構成
- プライベート DNS ゾーンを VNET に関連付け
- ACR の Azure Private Endpoint を作成
- プライベート IP アドレスを取得
- プライベート ゾーンに DNS レコードを作成
- Azure Private Link 経由の ACR 操作
- Azure Private Endpoint 接続を管理
補足(手順の意味): 上記は 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 への制御も可能になっている。
- Azure Private Endpoint の作成
- Azure Private Link 接続を確認
補足(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 等で許可する必要がある。
- Azure コンテナー レジストリ用に Azure Private Link を構成する
https://learn.microsoft.com/ja-jp/azure/container-registry/container-registry-private-link
Tags: 移行, クラウド, コンテナ, Azure, AKS, セキュリティ, 通信技術