Azure Container Registry の専用データ エンドポイントによるデータ流出の軽減

Azure Container Registry では、専用のデータ エンドポイントが導入されます。 この機能を使うと、クライアント ファイアウォール規則を特定のレジストリに厳密にスコープ設定できるため、データ流出の問題を最小限に抑えることができます。

専用データ エンドポイント機能は、Premium サービス レベルで利用できます。 詳しくは、「Container Registry の価格」をご覧ください。

レジストリからコンテンツをプルするには、2 つのエンドポイントが必要です。

"レジストリ エンドポイント" (多くの場合、ログイン URL と呼ばれます) は、認証とコンテンツの検出に使われます。 docker pulls contoso.azurecr.io/hello-world のようなコマンドは REST 要求を行い、要求された成果物を表すレイヤーを認証してネゴシエートします。 "データ エンドポイント" は、コンテンツ レイヤーを表す BLOB を提供します。

エンドポイントを示す図。

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

Azure Container Registry はマルチテナント サービスです。 レジストリ サービスは、データ エンドポイントのストレージ アカウントを管理します。 マネージド ストレージ アカウントの利点には、負荷分散、競合コンテンツの分割、より高い同時コンテンツ配信のための複数のコピー、geo レプリケーションによる複数リージョンのサポートなどがあります。

Azure Private Link 仮想ネットワークのサポートにより、Azure Virtual Network からのマネージド レジストリ サービスのプライベート エンドポイントが有効になります。 この場合、レジストリ エンドポイントとデータ エンドポイントの両方に、プライベート IP を使って仮想ネットワーク内からアクセスできます。

マネージド レジストリ サービスとストレージ アカウントの両方が仮想ネットワーク内からのアクセスに対してセキュリティ保護されると、パブリック エンドポイントは削除されます。

仮想ネットワークのサポートを示す図。

残念ながら、仮想ネットワーク接続を常に使用できるとは限りません。

重要

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

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

クライアント ファイアウォール規則は、特定のリソースへのアクセスを制限します。 ファイアウォール規則は、オンプレミスのホスト、IoT デバイス、カスタム ビルド エージェントからレジストリに接続するときに適用されます。 Private Link サポートを選べない場合でも、規則が適用されます。

クライアント ファイアウォール規則を示す図。

顧客がクライアント ファイアウォールの構成をロックダウンしたとき、ワイルドカードを使ってすべてのストレージ アカウントに対する規則を作成する必要があることがわかり、データ流出の懸念が発生しました。 悪いアクターは、ストレージ アカウントに書き込むことができるコードをデプロイできました。

クライアント データ流出のリスクを示す図。

そこで、データ流出の問題に対処するため、Azure Container Registry では専用のデータ エンドポイントを利用できるようになっています。

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

専用データ エンドポイントは、レジストリ ドメインを表す完全修飾ドメイン名を使って、Azure Container Registry サービスからレイヤーを取得するのに役立ちます。

任意のレジストリが geo レプリケートされる可能性があるため、次のリージョン パターンが使われます: [registry].[region].data.azurecr.io

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

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

専用データ エンドポイントを使用する Contoso の例を示す図。

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

Note

専用データ エンドポイントに切り替えると、既存の *.blob.core.windows.net エンドポイントへのファイアウォール アクセスが構成されているクライアントに影響があり、プル エラーが発生します。 クライアントが一貫してアクセスできるようにするには、新しいデータ エンドポイントをクライアントのファイアウォール規則に追加します。 それが済むと、既存のレジストリで az cli を使って専用データ エンドポイントを有効にできます。

この記事の Azure CLI の手順を使うには、Azure CLI バージョン 2.4.0 以降が必要です。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関する記事を参照するか、Azure Cloud Shell で実行してください。

  • 専用データ エンドポイントを有効にするには、az acr update コマンドを実行します。
az acr update --name contoso --data-endpoint-enabled
  • geo レプリケートされるレジストリ用のリージョン エンドポイントなどのデータ エンドポイントを表示するには、az acr show コマンドを実行します。
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",
    }
  ]
}
     

次のステップ