Azure Container Registry: Rollen und Berechtigungen

Der Azure Container Registry-Dienst unterstützt mehrere integrierte Azure-Rollen, die unterschiedliche Berechtigungsstufen für eine Azure-Containerregistrierung bereitstellen. Verwenden Sie die rollenbasierte Zugriffssteuerung von Azure (Azure Role-Based Access Control, Azure RBAC), um Benutzern, Dienstprinzipalen oder anderen Identitäten, die mit einer Registrierung interagieren müssen, bestimmte Berechtigungen zuzuweisen, z. B. um Containerimages zu pullen oder zu pushen. Sie können für verschiedene Vorgänge auch benutzerdefinierte Rollen mit differenzierten Berechtigungen für eine Registrierung definieren.

Rolle/Berechtigung Zugreifen auf Resource Manager Erstellen/löschen einer Registrierung Übertragen eines Image mithilfe von Push Übertragen eines Images mithilfe von Pull Löschen von Imagedaten Ändern von Richtlinien Signieren von Images
Besitzer X X X X X X
Mitwirkender X X X X X X
Leser X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

Zuweisen von Rollen

Allgemeine Schritte zum Hinzufügen einer Rollenzuweisung zu einem vorhandenen Benutzer, einer Gruppe, einem Dienstprinzipal oder einer verwalteten Identität finden Sie unt4er Schritte zum Hinzufügen einer Rollenzuweisung. Hierfür können Sie das Azure-Portal, Azure CLI, Azure PowerShell oder andere Azure-Tools verwenden.

Beim Erstellen eines Dienstprinzipals konfigurieren Sie auch seinen Zugriff auf sowie seine Berechtigungen für Azure-Ressourcen, z. B. eine Containerregistrierung. Ein Beispielskript, das die Azure CLI verwendet, finden Sie unter Azure Container Registry-Authentifizierung mit Dienstprinzipalen.

Unterscheiden von Benutzern und Diensten

Immer wenn Berechtigungen angewendet werden, hat es sich bewährt, einen möglichst begrenzte Anzahl von Berechtigungen an eine Person oder einen Dienst bereitzustellen, um eine Aufgabe zu erfüllen. Die folgenden Berechtigungen stehen für mehrere Funktionen, die von Menschen und entkoppelten Diensten verwendet werden können.

CI/CD-Lösungen

Bei der Automatisierung von docker build-Befehlen aus CI/CD-Lösungen benötigen Sie docker push-Funktionen. Es wird empfohlen, für diese Szenarios entkoppelter Dienste die Rolle AcrPush zuzuweisen. Im Gegensatz zur umfassenderen Rolle Mitwirkender verhindert sie, dass das Konto andere Registrierungsvorgänge durchführt oder auf den Azure Resource Manager zugreift.

Containerhostknoten

Knoten, auf denen Ihre Container ausgeführt werden, benötigen ebenfalls die Rolle AcrPull, sollten aber keine Leserfunktionen erfordern.

Docker-Erweiterung für Visual Studio Code

Für Tools wie die Docker-Erweiterung für Visual Studio Code ist zusätzlicher Ressourcenanbieterzugriff erforderlich, um die verfügbaren Azure-Containerregistrierungen aufzulisten. Erteilen Sie Ihren Benutzern in diesem Fall Zugriff auf die Rollen Leser und Mitwirkender. Diese Rollen ermöglichen docker pull, docker push, az acr list, az acr build und andere Funktionen.

Zugreifen auf Resource Manager

Der Zugriff auf den Azure Resource Manager ist für das Azure-Portal und die Registrierungsverwaltung mit der Azure CLI erforderlich. Diese Berechtigungen benötigen Sie zum Beispiel, um mit dem az acr list-Befehl eine Liste mit Registrierungen zu erhalten.

Erstellen und Löschen der Registrierung

Die Fähigkeit zum Erstellen und Löschen von Azure-Containerregistrierungen.

Übertragen eines Image mithilfe von Push

Die Fähigkeit, ein Image mithilfe von docker push oder ein anderes unterstütztes Artefakt, z.B. ein Helm-Chart, mithilfe von Push an eine Registrierung zu übertragen. Dafür ist eine Authentifizierung bei der Registrierung mit der autorisierten Identität erforderlich.

Übertragen eines Images mithilfe von Pull

Die Fähigkeit, ein nicht unter Quarantäne stehendes Image mithilfe von docker pull oder ein anderes unterstütztes Artefakt, z.B. ein Helm-Chart, mithilfe von Pull aus einer Registrierung zu übertragen. Dafür ist eine Authentifizierung bei der Registrierung mit der autorisierten Identität erforderlich.

Löschen von Imagedaten

Die Möglichkeit zum Löschen von Containerimages oder zum Löschen anderer unterstützter Artefakte wie Helm-Diagramme aus einer Registrierung.

Ändern von Richtlinien

Die Fähigkeit, Richtlinien für eine Registrierung zu konfigurieren. Die Richtlinien umfassen das Löschen von Images, das Aktivieren der Quarantäne und das Signieren von Images.

Signieren von Images

Die Fähigkeit, Images zu signieren, die in der Regel einem automatisierten Prozess zugewiesen wird, der einen Dienstprinzipal verwenden würde. Diese Berechtigung wird meist mit push image kombiniert, damit ein vertrauenswürdiges Image mithilfe von Push an eine Registrierung übertragen werden kann. Weitere Informationen finden Sie unter Inhaltsvertrauen in Azure Container Registry.

Benutzerdefinierte Rollen

Wie bei anderen Azure-Ressourcen können Sie benutzerdefinierte Rollen mit differenzierten Berechtigungen für Azure Container Registry erstellen. Weisen Sie die benutzerdefinierten Rollen dann Benutzern, Dienstprinzipalen oder anderen Identitäten zu, die mit einer Registrierung interagieren müssen.

Um festzustellen, welche Berechtigungen für eine benutzerdefinierte Rolle gelten sollen, lesen Sie die Liste der Microsoft.ContainerRegistry-Aktionen, überprüfen Sie die zulässigen Aktionen der integrierten ACR-Rollen, oder führen Sie den folgenden Befehl aus:

az provider operation show --namespace Microsoft.ContainerRegistry

Um eine benutzerdefinierte Rolle zu definieren, lesen Sie Schritte zum Erstellen einer benutzerdefinierten Rolle.

Hinweis

In Mandanten, die mit einer privaten Azure Resource Manager-Verbindung konfiguriert sind, unterstützt Azure Container Registry Platzhalteraktionen wie Microsoft.ContainerRegistry/*/read oder Microsoft.ContainerRegistry/registries/*/write in benutzerdefinierten Rollen und gewährt Zugriff auf alle entsprechenden Aktionen. Geben Sie in einem Mandanten ohne private ARM-Verbindung alle erforderlichen Registrierungsaktionen einzeln in einer benutzerdefinierten Rolle an.

Beispiel: Benutzerdefinierte Rolle zum Importieren von Images

Der folgende JSON-Code definiert beispielsweise die minimalen Aktionen für eine benutzerdefinierte Rolle, die das Importieren von Images in eine Registrierung erlaubt.

{
   "assignableScopes": [
     "/subscriptions/<optional, but you can limit the visibility to one or more subscriptions>"
   ],
   "description": "Can import images to registry",
   "Name": "AcrImport",
   "permissions": [
     {
       "actions": [
         "Microsoft.ContainerRegistry/registries/push/write",
         "Microsoft.ContainerRegistry/registries/pull/read",
         "Microsoft.ContainerRegistry/registries/read",
         "Microsoft.ContainerRegistry/registries/importImage/action"
       ],
       "dataActions": [],
       "notActions": [],
       "notDataActions": []
     }
   ],
   "roleType": "CustomRole"
 }

Um eine benutzerdefinierte Rolle unter Verwendung der JSON-Beschreibung zu erstellen oder zu aktualisieren, verwenden Sie die Azure CLI, die Azure Resource Manager-Vorlage, Azure PowerShell oder andere Azure-Tools. Sie können Rollenzuweisungen für eine benutzerdefinierte Rolle auf dieselbe Weise hinzufügen oder entfernen, wie Sie Rollenzuweisungen für integrierte Azure-Rollen verwalten.

Nächste Schritte