Azure Container Registry: 専用データ エンドポイントを使用してデータの不正取得を軽減する

2020年4月30日 に投稿済み

Program Manager, Azure Container Registry

Azure Container Registry の専用データ エンドポイントが発表されました。これにより、厳密な範囲が設定されたクライアント ファイアウォール規則を特定のレジストリに適用することができ、データの不正取得を最小限に抑えることができます。

レジストリからコンテンツをプルすると、次の 2 つのエンドポイントが含まれます。

  • レジストリ エンドポイントは多くの場合、ログイン URL と呼ばれ、認証とコンテンツの検索に使用されます。
    docker pull contoso.azurecr.io/hello-world のようなコマンドは REST 要求を発行します。これは、要求されたアーティファクトを表すレイヤーを認証し、ネゴシエートします。
  • データ エンドポイントは、コンテンツ レイヤーを表す BLOB を提供します。

2 つのエンドポイントを持つレジストリ

レジストリ マネージド ストレージ アカウント

Azure Container Registry は、データ エンドポイントのストレージ アカウントがレジストリ サービスによって管理される、マルチテナント サービスです。負荷分散、競合するコンテンツの分割、同時コンテンツ配信を向上させるための複数コピー、geo レプリケーションを備えた複数リージョン サポートなど、マネージド ストレージには多くのメリットがあります。

Azure Private Link の仮想ネットワークのサポート

Azure Container Registry の Private Link サポートが最近発表されました。これにより、Azure Virtual Networks からのプライベート エンドポイントをマネージド レジストリ サービスに配置できます。このようにすると、レジストリとデータ エンドポイントの両方に、仮想ネットワーク内のプライベート IP を使用してアクセスすることができます。

これによりパブリック エンドポイントを削除することができ、仮想ネットワーク内からマネージド レジストリとストレージ アカウントに安全にアクセスすることができます。
Private Link を使用した ACR 

残念ながら、仮想ネットワーク接続は常に選択肢になるとは限りません。

クライアントのファイアウォール規則とデータの不正流出のリスク

オンプレミスのホスト、IoT デバイス、カスタム作成エージェントからレジストリに接続する場合、または Private Link を使用できない場合、クライアント ファイアウォール規則を適用できる場合があり、特定のリソースへのアクセスを制限することができます。

クライアント ファイアウォール規則、データの不正流出リスク 
お客様が、使用しているクライアントのファイアウォール構成をロックダウンするときに、すべてのストレージ アカウントに対してワイルドカードを使用して規則を作成する必要がありました。これにより、データの不正流出の問題が発生します。不正なアクターは、ストレージ アカウントに書き込むことができるコードをデプロイできます。

データの不正流出の問題を軽減するため、Azure Container Registry で専用のデータ エンドポイントが提供されています。

クライアント ファイアウォール規則、データの不正流出の侵害

専用データ エンドポイント

専用データ エンドポイントが有効になっている場合、レイヤーは、レジストリ ドメインを表す完全修飾ドメイン名を使用して Azure Container Registry サービスから取得されます。いずれかのレジストリが geo レプリケートされる場合、次のようなリージョン パターンが使用されます。

[registry].[region].data.azurecr.io.

Contoso の例では、近くにレプリカを持つローカル リージョンをサポートする複数のリージョン データ エンドポイントが追加されます。

専用データ エンドポイントを使用すると、不正なアクターは他のストレージ アカウントへの書き込みをブロックされます。

専用データ エンドポイント、データ不正流出リスクの軽減

専用データ エンドポイントを有効にする

メモ:専用データ エンドポイントに切り替えると、既存の *.blob.core.windows.net endpoints エンドポイントへのファイアウォール アクセスが構成されているクライアントに影響が生じ、プル エラーが発生します。クライアントが常時確実にアクセスできるようにするため、新しいデータ エンドポイントをクライアントのファイアウォール規則に追加します。完了したら、既存のレジストリで az cli から専用データ エンドポイントを有効にできます。

az cli バージョン 2.4.0 以上を使用して、az acr update コマンドを実行します。

az acr update --name contoso --data-endpoint-enabled

geo レプリケートされたレジストリのリージョン別エンドポイントを含むデータ エンドポイントを表示するには、az acr show endpoint cli を使用します。

az acr show-endpoints --name contoso

出力:

{
  "loginServer": "contoso.azurecr.io",
  "dataEndpoints": [
    {
      "region": "eastus",
      "endpoint": "contoso.eastus.data.azurecr.io",
    },
    {
      "region": "westus",
      "endpoint": "contoso.westus.data.azurecr.io",
    }
  ]
}

Azure Private Link を使用したセキュリティ

Azure Private Link は、プライベート IP を使用してネットワーク トラフィックが Azure Virtual Network に限定されるため、クライアントとレジストリの間のネットワーク アクセスを制御する最も安全な方法です。Private Link が使用できない場合は、専用データ エンドポイントを使用することで、各クライアントからアクセスできるリソースについて、セキュリティで保護されたナレッジを提供できます。

価格情報

専用データ エンドポイントは、Premium レジストリの機能の 1 つです。

専用データ エンドポイントの詳細については、こちらから価格についての情報をご覧ください。