Dedizierte Datenendpunkte in Azure Container Registry

Dedizierte Datenendpunkte in Azure Container Registry stellen bereichsgebundene, registrierungsspezifische URLs für Downloads von Containerimage-Layern bereit und ersetzen die standardmäßigen Azure Storage-Konto-Wildcard-Endpunkte (*.blob.core.windows.net). Dies ermöglicht strenge Clientfirewallregeln und verringert Datenexfiltrationsrisiken.

Hinweis

Dedizierte Datenendpunkte werden nur während Layer-Blob-Downloads (Pulls) verwendet. Beim Hochladen von Blobs bei Pushvorgängen werden diese über den Anmeldeserver (globaler oder regionaler Endpunkt) hochgeladen, nicht über den dedizierten Datenendpunkt.

Das Feature für dedizierte Datenendpunkte ist für Registrierungen auf der Premium-Dienstebene verfügbar.

Dedizierte Datenendpunkte sind auch voraussetzung für IPv6 Dual-Stack-Endpunkte. Eine Registrierung muss dedizierte Datenendpunkte aktiviert haben, bevor ihr Endpunktprotokoll auf IPv4AndIPv6 festgelegt werden kann.

So funktionieren Downloads von Containerimages: Loginserver und 307-Umleitung zu Datenendpunkten

Das Abrufen von Inhalten aus einer Registrierung umfasst zwei Arten von Endpunkten:

  1. Anmeldeserverendpunkt – wird für Authentifizierung und Inhaltsermittlung verwendet. Der Anmeldeserver kann eine der folgenden sein:

    • Der globale Endpunkt (contoso.azurecr.io) – ACR leitet Anforderungen automatisch an das Georeplikat mit dem besten Netzwerkleistungsprofil für den Client weiter. Weitere Informationen finden Sie unter Georeplikation.
    • Ein regionaler Endpunkt (contoso.eastus.geo.azurecr.io) – leitet Anforderungen direkt an ein bestimmtes Georeplikat weiter, wobei Azure verwaltetes Routing umgangen wird. Weitere Informationen finden Sie unter Georeplikation.

    Wenn Sie einen Befehl wie docker pull contoso.azurecr.io/hello-world (globaler Endpunkt) oder docker pull contoso.eastus.geo.azurecr.io/hello-world (regionaler Endpunkt) ausführen, authentifiziert sich der Client beim Anmeldeserver und handelt aus, welche Ebenen das angeforderte Artefakt bilden.

  2. Datenendpunkt – wird zum Herunterladen der tatsächlichen Bildschicht-BLOBs verwendet. Nachdem der Anmeldeserver die erforderlichen Ebenen identifiziert hat, leitet er den Client um, um sie von einem Datenendpunkt herunterzuladen.

Diagramm zur Veranschaulichung von Endpunkten.

ACR verwaltet die zugrunde liegenden Speicherkonten für Datenendpunkte. Zu den Vorteilen gehören Lastenausgleich, Inhaltsaufteilung über Speicherkonten für eine höhere gleichzeitige Bereitstellung und Unterstützung für mehrere Regionen mit Georeplikation.

Ohne dedizierte Datenendpunkte

Ohne dedizierte Daten-Endpunkte gibt der Anmeldeserver eine 307-Weiterleitung für das Herunterladen von Layer-Blobs in Azure-Speicherkonten unter Verwendung von Platzhalter-URLs (*.blob.core.windows.net) aus.

Verwenden des globalen Endpunkts (von Azure verwaltetes Routing):

Diagramm, das den Anforderungsfluss ohne dedizierte Datenendpunkte über den globalen Endpunkt zeigt: Ein Client stellt eine Verbindung zu contoso.azurecr.io her, das von Azure verwaltete Routing wählt das beste Geo-Replikat aus, und das Geo-Replikat gibt eine 307-Umleitung zu *.blob.core.windows.net für Downloads von Layer-Blobs aus.

Verwenden eines regionalen Endpunkts (clientspezifisches Routing):

Diagramm, das den Anforderungsfluss ohne dedizierte Datenendpunkte mithilfe eines regionalen Endpunkts zeigt: Ein Client stellt eine Verbindung mit contoso.eastus.geo.azurecr.io her, die Anforderung wird direkt an das Georeplikat ost-US gesendet, und das Georeplikat gibt eine 307-Umleitung zu *.blob.core.windows.net für Layer-BLOB-Downloads aus.

In beiden Fällen müssen Sie, um diese Downloads über eine Firewall zuzulassen, *.blob.core.windows.net zulassen – eine breite Wildcard, die alle Azure Speicherkonten abdeckt, nicht nur den Speicher Ihrer Registrierung.

Mit dedizierten Datenendpunkten

Wenn dedizierte Datenendpunkte aktiviert sind, gibt der Loginserver für den Download von Layer-Blobs eine 307-Umleitung zu registrierungsspezifischen, regionsgebundenen URLs aus.

Verwenden des globalen Endpunkts (von Azure verwaltetes Routing):

Diagramm mit dem Anforderungsfluss mit dedizierten Datenendpunkten mithilfe des globalen Endpunkts: Ein Client stellt eine Verbindung mit contoso.azurecr.io her, Azure verwaltetes Routing wählt das beste Georeplikat aus, und das Georeplikat gibt eine 307-Umleitung zu contoso.eastus.data.azurecr.io für Layer-Blob-Downloads aus.

Verwenden eines regionalen Endpunkts (clientspezifisches Routing):

Diagramm, das den Anforderungsfluss mit dedizierten Datenendpunkten unter Verwendung eines regionalen Endpunkts zeigt: Ein Client stellt eine Verbindung mit contoso.eastus.geo.azurecr.io her, die Anforderung wird direkt an das Georeplikat für East US gesendet, und das Georeplikat sendet eine 307-Umleitung zu contoso.eastus.data.azurecr.io zum Herunterladen von Layerblobs.

Jedes Georeplikat erhält einen eigenen dedizierten Datenendpunkt mithilfe des Musters [registry].[region].data.azurecr.io. Ihre Firewallregeln können auf diese spezifischen Endpunkte statt auf einen breiten Wildcardbereich festgelegt werden.

Warum dedizierte Datenendpunkte wichtig sind

Datenexfiltrationsrisiko ohne dedizierte Datenendpunkte

Ohne dedizierte Datenendpunkte müssen Firewallregeln Layerdownloads zulassen.*.blob.core.windows.net Dieser umfassende Platzhalter ermöglicht den Zugriff auf alle Azure-Speicherkonten – nicht nur auf den Speicher Ihrer Registrierung. Ein ungültiger Akteur kann Code bereitstellen, der Daten in ein beliebiges Azure Speicherkonto schreibt, das über das Netzwerk erreichbar ist.

Diagramm zur Veranschaulichung der Risiken bei der Client-Datenexfiltration.

Bereichsbezogene Firewallregeln mit dedizierten Datenendpunkten

Mithilfe dedizierter Datenendpunkte können Sie den allgemeinen Platzhalter *.blob.core.windows.net durch bereichsbezogene Firewallregeln für die Datenendpunkte Ihrer jeweiligen Registrierung ersetzen. Sie können beispielsweise nur contoso.eastus.data.azurecr.io und contoso.westeurope.data.azurecr.io in Ihrer Firewallkonfiguration zulassen , indem Sie den Zugriff auf den Speicher Ihrer Registrierung einschränken und Exfiltration auf andere Speicherkonten blockieren.

Diagramm zur Veranschaulichung eines Contoso-Beispiels mit dedizierten Datenendpunkten.

Dies gilt für Clients, die eine Verbindung von lokalen Hosts, IoT-Geräten, benutzerdefinierten Build-Agents oder einer Umgebung herstellen, in der private Endpunkte keine Option sind.

Dedizierte Datenendpunkte mit Georeplikation

Bei georeplizierten Registrierungen erhält jedes Georeplikat einen eigenen dedizierten Datenendpunkt. Das URL-Muster lautet [registry].[region].data.azurecr.io.

Wenn Sie ein Bild vom globalen Endpunkt abrufen, leitet ACR die Anforderung an das Georeplikat mit dem besten Netzwerkleistungsprofil für den Client weiter. Das bereitstellende Georeplikat gibt dann für Downloads von Layer-Blobs eine 307-Umleitung an den eigenen dedizierten Datenendpunkt des bereitstellenden Georeplikats aus. Die Umleitung bleibt immer innerhalb derselben Region wie die bereitstellende Geo-Replik – ein an die Geo-Replik in „USA, Osten“ geleiteter Pull wird immer zu contoso.eastus.data.azurecr.io umgeleitet, niemals zu einem dedizierten Datenendpunkt in einer anderen Region.

Dies gilt auch für die Verwendung regionaler Endpunkte. Ein Abruf von einem regionalen Endpunkt (contoso.eastus.geo.azurecr.io) leitet Downloads von Layern an contoso.eastus.data.azurecr.io um – nie regionsübergreifend. Dies bedeutet, dass Ihre Firewallregeln auf einzelne Regionen begrenzt werden können.

Aktivieren dedizierter Datenendpunkte

Hinweis

Wenn Sie zuvor den Clientfirewallzugriff auf die vorhandenen *.blob.core.windows.net Endpunkte konfiguriert haben, wirkt sich der Wechsel zu dedizierten Datenendpunkten auf die Clientkonnektivität aus, was zu Pullfehlern führt. Um sicherzustellen, dass Clients über konsistenten Zugriff verfügen, fügen Sie die neuen Datenendpunktregeln zu den Clientfirewallregeln hinzu. Aktivieren Sie nach Abschluss des Vorgangs dedizierte Datenendpunkte für Ihre Registrierungen mithilfe der Azure CLI oder anderer Tools.

Während des Abrufens von Images, wenn dedizierte Datenendpunkte aktiviert sind, gibt ACR dem Client bei jedem Abrufen einer Imageebene einen temporären Downloadlink. Dieser Link verweist auf den dedizierten Datenendpunkt und ist mindestens 20 und höchstens 30 Minuten lang gültig. Er stellt eine sichere, kurzzeitig gültige URL zum Herunterladen der Ebene bereit. Nachdem der Link abgelaufen ist, fordert der Client beim Abrufen von Bildern einfach eine neue Ebene an, wenn er eine andere Ebene herunterladen muss.

Sie können dedizierte Datenendpunkte über das Azure-Portal oder die Azure CLI aktivieren. Die Datenendpunkte folgen einem regionalen Muster, <registry-name>.<region>.data.azurecr.io. In einer georeplizierten Registrierung werden durch das Aktivieren von Datenendpunkten Endpunkte in allen Replikatregionen aktiviert.

Aktivieren von dedizierten Datenendpunkten mithilfe des Azure-Portals

  1. Wechseln Sie zu Ihrer Containerregistrierung.
  2. Wählen Sie im Dienstmenü unter Einstellungen die Option Netzwerk aus.
  3. Aktivieren Sie im öffentlichen Zugriff das Kontrollkästchen " Dedizierten Datenendpunkt verwenden ".
  4. Wählen Sie "Speichern" aus.

Nun werden die Datenendpunkte im Azure-Portal angezeigt.

Aktivieren von dedizierten Datenendpunkten mithilfe der Azure CLI

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

Um die Datenendpunkte anzuzeigen, verwenden Sie den Befehl az acr show-endpoints:

az acr show-endpoints --name myregistry

Diese Beispielausgabe zeigt das vollständige Endpunktschema, einschließlich dedizierter Datenendpunkte und regionaler Endpunkte (sofern aktiviert):

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

Nachdem Sie dedizierte Datenendpunkte für Ihre Registrierung eingerichtet haben, können Sie Clientfirewall-Zugriffsregeln für die Datenendpunkte aktivieren. Aktivieren Sie die Zugriffsregeln für den Datenendpunkt für alle erforderlichen Registrierungsregionen. Weitere Informationen finden Sie unter Configure-Regeln für den Zugriff auf eine Azure Containerregistrierung hinter einer Firewall.

Einschränken des Netzwerkzugriffs auf Datenendpunkte

Nachdem Sie dedizierte Datenendpunkte aktiviert haben, können Sie einschränken, wie Clients diese Endpunkte erreichen. Es gibt zwei Ansätze:

Azure private Endpunkte (virtuelles Netzwerk)

Private Azure-Endpunkte sind die sicherste Möglichkeit, den Netzwerkzugriff von Clients in einem virtuellen Netzwerk auf die Registrierung zu steuern. Wenn private Endpunkte konfiguriert sind, können sowohl der Anmeldeserver (globale Endpunkte als auch regionale Endpunkte) und Datenendpunkte über private IPs, die einer privaten Endpunktressource im virtuellen Netzwerk zugewiesen sind, im virtuellen Netzwerk zugänglich sein. Kunden können auch den öffentlichen Netzwerkzugriff in der Registrierung deaktivieren, um sicherzustellen, dass dedizierte Datenendpunkte nur über den privaten Endpunkt erreichbar sind.

Wenn eine Registrierung mindestens einen privaten Endpunkt konfiguriert hat, werden dedizierte Datenendpunkte automatisch aktiviert. Weitere Informationen finden Sie unter "Privates Verbinden mit einer Registrierung über ein virtuelles Netzwerk mithilfe privater Endpunkte".

Überlegungen zur IP-Adresse des privaten Endpunkts

Jede private Endpunktressource verwendet private IP-Adressen aus dem Subnetz des virtuellen Netzwerks. Planen Sie ihre Subnetzgröße entsprechend:

  • 1 IP für den globalen Endpunkt (myregistry.azurecr.io)
  • 1 IP pro Geo-Replikat für dedizierte Datenendpunkte (myregistry.<region>.data.azurecr.io) – automatisch aktiviert, wenn ein privater Endpunkt konfiguriert ist
  • 1 IP pro Georeplikat für regionale Endpunkte (myregistry.<region>.geo.azurecr.io) – nur, wenn regionale Endpunkte in der Registrierung aktiviert sind

Beispielsweise erfordert eine Registrierung mit 3 Georeplikaten und aktivierten regionalen Endpunkten 1 (global) + 3 (Daten) + 3 (regional) = 7 private IP-Adressen pro private Endpunktressource. Weitere Informationen finden Sie unter "Privates Verbinden mit einer Registrierung über ein virtuelles Netzwerk mithilfe privater Endpunkte".

Clientfirewallregeln

Wenn private Endpunkte keine Option sind, konfigurieren Sie Ihre Clientfirewallregeln, um den Zugriff auf die dedizierten Datenendpunkte für jede erforderliche Registrierungsregion zu ermöglichen. Weitere Informationen finden Sie unter Configure-Regeln für den Zugriff auf eine Azure Containerregistrierung hinter einer Firewall.

Nächste Schritte