Policys zur Kontrolle des Repository-Zugriffs
Erfahren Sie, wie Sie Policys einrichten, um den Zugriff auf Repositorys in Container Registry zu kontrollieren, sowie einige Beispiele für gemeinsame Policys.
Sie haben die fein granulare Kontrolle über die Vorgänge, die Benutzer für Repositorys in Oracle Cloud Infrastructure Registry (auch als Container Registry bezeichnet) ausführen können.
Die Berechtigungen von Benutzern für den Zugriff auf Repositorys stammen aus den Gruppen, zu denen sie gehören. Die Berechtigungen für eine Gruppe werden durch Identitäts-Policys definiert. Policys definieren, welche Aktionen die Mitglieder einer Gruppe ausführen können. Benutzer können auf Repositorys zugreifen und Vorgänge basierend auf den Policys ausführen, die für die Gruppen, in denen sie Mitglied sind, festgelegt wurden. Identitäts-Policys zur Kontrolle des Repository-Zugriffs können auf Mandanten- und Compartment-Ebene festgelegt werden. Siehe Details zu Container Registry.
Bevor Sie den Zugriff auf Repositorys kontrollieren können, müssen Sie bereits Benutzer erstellt und diese entsprechenden Gruppen zugewiesen haben (siehe Benutzer verwalten und Gruppen verwalten). Sie können dann Policys und Policy-Anweisungen erstellen, um den Repository-Zugriff zu kontrollieren (siehe Policys verwalten).
Benutzer in der Administratorengruppe des Mandanten können beliebige Vorgänge für jedes Repository in Container Registry, das zum Mandanten gehört, ausführen.
Allgemeine Policys
Die Policys in diesem Abschnitt verwenden folgende Beispielgruppennamen:
- acme-viewers: Eine Gruppe, die darauf beschränkt sein soll, nur eine Liste der Repositorys anzuzeigen.
- acme-pullers: Eine Gruppe, die darauf beschränkt sein soll, Images per Pull abzurufen.
- acme-pushers: Eine Gruppe, die berechtigt sein soll, Push- und Pull-Vorgänge für Images auszuführen.
- acme-managers: Eine Gruppe, die berechtigt sein soll, Push- und Pull-Vorgänge für Images auszuführen, Repositorys zu löschen und Repository-Metadaten zu bearbeiten (z.B. um ein privates Repository öffentlich zu machen).
Ersetzen Sie die Beispielgruppennamen durch Ihre eigenen Gruppennamen.
Zugriffstyp: Möglichkeit, eine Liste aller Repositorys in Container Registry, die zum Mandanten (oder zu einem bestimmten Compartment) gehören, anzuzeigen. Benutzer haben nicht die Möglichkeit:
- Images oder Layer in einem Repository anzuzeigen
- Images per Push in ein Repository zu übergeben oder per Pull aus einem Repository abzurufen
Erstellungsort der Policy:
-
Im Mandanten. Beispiel:
Allow group acme-viewers to inspect repos in tenancy
-
Im Mandanten oder in einem Compartment. Beispiel:
Allow group acme-viewers to inspect repos in compartment acme-compartment
Zugriffstyp: Möglichkeit, Images (Layer und Manifeste) aus einem beliebigen Repository in Container Registry, das zum Mandanten (oder zu einem bestimmten Compartment) gehört, per Pull abzurufen.
Erstellungsort der Policy:
-
Im Mandanten. Beispiel:
Allow group acme-pullers to read repos in tenancy
-
Im Mandanten oder in einem Compartment. Beispiel:
Allow group acme-pullers to read repos in compartment acme-compartment
Zugriffstyp: Möglichkeit, Images (Layer und Manifeste) aus einem Repository in Container Registry mit einem Namen, der mit "acme-web-app" beginnt und zum Mandanten (oder zu einem bestimmten Compartment gehört) per Pull abzurufen.
Erstellungsort der Policy:
-
Im Mandanten. Beispiel:
Allow group acme-pullers to read repos in tenancy where all { target.repo.name=/acme-web-app*/ }
-
Im Mandanten oder in einem Compartment. Beispiel:
Allow group acme-pullers to read repos in compartment acme-compartment where all { target.repo.name=/acme-web-app*/ }
Zugriffstyp: Möglichkeit, Images (Layer und Manifeste) in ein beliebiges Repository in Container Registry, das zum Mandanten oder zu einem bestimmten Compartment gehört, per Push zu übergeben.
Benutzer benötigen immer die Berechtigungen REPOSITORY_READ
und REPOSITORY_UPDATE
, um Images per Push zu übertragen. Wenn das angegebene Repository noch nicht vorhanden ist, benötigen Benutzer auch die Berechtigung REPOSITORY_CREATE
, um ein neues Repository im Root Compartment des Mandanten zu erstellen, wenn sie das Image per Push übertragen. Weitere Informationen zu diesem ungewöhnlichen Szenario finden Sie unter Repository erstellen.
Erstellungsort der Policy:
-
Im Mandanten. Beispiel:
Allow group acme-pushers to manage repos in tenancy
Wenn Sie das vorherige Beispiel als zu permissiv betrachten (da es die Berechtigungen
REPOSITORY_MANAGE
undREPOSITORY_DELETE
enthält, die zum Übertragen von Images nicht erforderlich sind), können Sie die Berechtigungen einschränken, um die Berechtigungen explizit anzugeben, die Sie erteilen möchten. Beispiel:Allow group acme-pushers to manage repos in tenancy where ANY {request.permission = 'REPOSITORY_READ', request.permission = 'REPOSITORY_UPDATE', request.permission = 'REPOSITORY_CREATE'}
-
Im Mandanten oder in einem Compartment. Beispiel: In einem Compartment:
Allow group acme-pushers to manage repos in compartment acme-compartment
Wenn Sie die Policy in einem anderen Compartment als dem Root Compartment erstellen, wie oben gezeigt, können Benutzer kein Image per Push an ein Repository übertragen, das noch nicht vorhanden ist. Das liegt daran, dass die oben genannte Policy Benutzern nicht die Berechtigung zum Erstellen eines neuen Repositorys im Root Compartment des Mandanten erteilt. Weitere Informationen zu diesem ungewöhnlichen Szenario finden Sie unter Repository erstellen.
Zugriffstyp: Möglichkeit, einen beliebigen Vorgang für ein beliebiges Repository in der Container-Registry auszuführen, das zum Mandanten (oder zu einem bestimmten Compartment) gehört, einschließlich:
- Images aus einem beliebigen Repository per Pull abzurufen.
- Images in ein beliebiges Repository per Push zu übergeben.
- Erstellen Sie ein neues Repository. Das heißt, entweder um ein leeres Repository in einem beliebigen Compartment zu erstellen oder um ein Repository im Root Compartment des Mandanten zu erstellen, wenn Sie ein Image übertragen, für das noch kein Repository vorhanden ist. Beachten Sie, dass Benutzer, wenn Sie die Policy in einem anderen Compartment als dem Root Compartment erstellen, kein Image in ein Repository übertragen können, das noch nicht vorhanden ist. Das liegt daran, dass die Policy Benutzern keine Berechtigung zum Erstellen eines neuen Repositorys im Root Compartment erteilt. Weitere Informationen zu diesem ungewöhnlichen Szenario finden Sie unter Repository erstellen.
- Repository löschen.
- Ändern Sie ein öffentliches Repository in ein privates Repository oder ein privates Repository in ein öffentliches Repository.
Erstellungsort der Policy:
-
Im Mandanten. Beispiel:
Allow group acme-managers to manage repos in tenancy
-
Im Mandanten oder in einem Compartment. Beispiel:
Allow group acme-managers to manage repos in compartment acme-compartment
Wenn Sie die oben genannte Policy in einem anderen Compartment als dem Root Compartment erstellen, können Benutzer ein Image nicht an ein Repository übertragen, das noch nicht vorhanden ist. Das liegt daran, dass die Policy Benutzern keine Berechtigung zum Erstellen eines neuen Repositorys im Root Compartment erteilt. Weitere Informationen zu diesem ungewöhnlichen Szenario finden Sie unter Repository erstellen.