Azure Container Registry Private Linkの設定
このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、Azure CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Azure Container RegistryにPrivate Linkを適用してセキュアな接続を実装する手順について、リスクと対策を解説します。
ポリシーの説明
Azure Container Registry(ACR)へのアクセスをプライベートネットワーク経由に限定することで、コンテナイメージの保護を強化します。Azure Private Linkを使用することで、インターネット経由のアクセスを完全に遮断し、Azure仮想ネットワーク(VNet)内からのみアクセス可能な環境を構築できます。
Private Linkを利用することで、トラフィックがMicrosoftのバックボーンネットワークを通過し、パブリックインターネットを経由しないため、ゼロトラストネットワークアーキテクチャの実現が可能になります。これにより、コンテナイメージの漏洩リスクを大幅に削減し、サプライチェーン攻撃から組織を守ることができます。
修復方法
コンソールでの修復手順
Azure コンソールを使用して、Container RegistryにPrivate Linkを適用します。
- 前提条件の確認
- Container RegistryのSKUが「Premium」であることを確認(Private Link機能はPremium SKUでのみ利用可能)
- Basic/StandardのSKUの場合は、まずPremium SKUへのアップグレードが必要です
- 注意: SKUアップグレードはダウンタイムなしで実施可能ですが、料金が変更されます
- 仮想ネットワークとサブネットが事前に作成されていることを確認
- 適切なAzure RBAC権限(共同作成者または所有者ロール)を持っていることを確認
- Container Registryへのナビゲーション
- Azure Portal(https://portal.azure.com)にサインインします
- 検索バーで「Container registries」を検索し、選択します
- 対象のContainer Registryを選択します
- ネットワーク設定の変更

- 左側のメニューから「設定」セクションの「ネットワーク」を選択します
- 「パブリック アクセス」タブを選択します
- 「パブリック ネットワーク アクセスを許可する」を「無効」に設定します
- 重要: 必ずプライベートエンドポイントを設定してからパブリックアクセスを無効化してください
- 移行期間中は「選択したネットワーク」を選択し、特定のIPアドレスまたは仮想ネットワークからのアクセスのみを許可することも可能です
- プライベートエンドポイントの作成

- 「プライベート アクセス」タブを選択します
- 「+ プライベート エンドポイント」ボタンをクリックします
- 基本設定:

- サブスクリプションを選択
- リソースグループを選択または作成
- プライベートエンドポイント名を入力(例:pe-acr-production)
- ネットワークインターフェース名を入力(自動生成も可)
- リージョンを選択(Container Registryと同じリージョンを推奨)
- リソースとネットワークの構成

- リソース設定:
- 接続方法:「マイ ディレクトリ内の Azure リソースに接続します」を選択
- サブスクリプションとリソースの種類を確認
- リソース:対象のContainer Registryが自動選択されていることを確認
- 対象サブリソース:「registry」を選択(Premium SKUではデータエンドポイントも利用可能)
- ネットワーク設定:
- 仮想ネットワークを選択
- サブネットを選択(プライベートエンドポイント専用サブネットを推奨)
- 注意: サブネットのネットワークポリシーでPrivate Endpointが無効化されていないことを確認
- プライベートIPアドレスの割り当て:「動的に割り当てる」を選択
- DNS統合の構成
- 「プライベート DNS 統合」セクションで「はい」を選択
- サブスクリプションを選択
- リソースグループを選択
- プライベートDNSゾーン:「privatelink.azurecr.io」が自動的に作成されます
- 注意: データエンドポイント用に「<リージョン>.data.privatelink.azurecr.io」も作成されます
- 既存のプライベートDNSゾーンがある場合は、それを選択することも可能
- カスタムDNSサーバーを使用している場合は、追加設定が必要です
- 検証とテスト
- 「確認および作成」をクリックし、設定を確認します
- 「作成」をクリックしてプライベートエンドポイントを作成します(作成には数分かかります)
- 作成完了後、仮想ネットワーク内のVMまたはAzure Bastionを使用して接続をテストします
nslookup <registry-name>.azurecr.ioを実行し、プライベートIPアドレス(10.x.x.xなど)が返されることを確認- Azure CLIで
az acr login --name <registry-name>を実行してログインをテスト docker pull <registry-name>.azurecr.io/sample-image:latestでイメージのプルをテスト- パブリックインターネットからのアクセスがブロックされることを確認
まとめ
この記事では、Azure Container RegistryにPrivate Linkを適用してセキュアな接続を実装する手順について解説しました。Private Linkの設定により、パブリックインターネットからのアクセスを遮断し、プライベートネットワーク経由でのみアクセス可能な環境を構築できます。
重要なポイント
- Premium SKUが必須: Private Link機能はPremium SKUでのみ利用可能
- DNS設定が重要: プライベートDNSゾーンの正しい設定が接続成功の鍵
- ゼロトラストの実現: パブリックアクセスを無効化し、VNet内からのみアクセスを許可
- RBACの活用: 管理者アカウントを無効化し、Azure ADベースの認証を使用
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。