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

Hinweis

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.

Benutzer können eine Liste aller Repositorys anzeigen, die zum Mandanten oder zu einem Compartment gehören

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
Benutzer können Images aus einem beliebigen Repository, das zum Mandanten oder zu einem Compartment gehört, per Pull abrufen

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
Benutzern ermöglichen, Images per Pull aus bestimmten Repositorys im Mandanten oder in einem Compartment abzurufen

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*/ }
Benutzern ermöglichen, Images in Repositorys per Push zu übergeben (und gegebenenfalls neue Repositorys im Mandanten oder in einem Compartment zu erstellen)

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 und REPOSITORY_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.

Manager können beliebige Vorgänge für jedes Repository ausführen, das zum Mandanten oder zu einem Compartment gehört

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.