リポジトリ・アクセスを制御するポリシー

Oracle Cloud Infrastructure Registry (Container Registryとも呼ばれる)でリポジトリに対してユーザーが実行できる操作を詳細に制御できます。

リポジトリにアクセスする権限は、ユーザーが属しているグループから取得されます。グループの権限は、アイデンティティ・ポリシーによって定義されます。ポリシーは、グループのメンバーが実行できるアクションを定義します。ユーザーは、自分がメンバーに含まれているグループに設定されたポリシーに基づいてリポジトリにアクセスし、操作を実行します。リポジトリ・アクセスを制御するアイデンティティ・ポリシーは、テナンシ・レベルおよびコンパートメント・レベルで設定できます。コンテナ・レジストリの詳細を参照してください

リポジトリへのアクセスを制御する前に、すでにユーザーを作成して、適切なグループに配置しておく必要があります(ユーザーの管理およびグループの管理を参照)。その後、ポリシーおよびポリシー・ステートメントを作成して、リポジトリ・アクセスを制御できます(ポリシーの管理を参照)。

テナンシの管理者グループのユーザーは、テナンシに属するコンテナ・レジストリ内の任意のリポジトリに対してすべての操作を実行できます。

共通ポリシー

ノート

この項のポリシーでは、次のようにグループ名の例を使用します:

  • acme - viewers:リポジトリのリストの表示のみを制限するグループ。
  • acme-pullers: イメージのプルを制限するグループ。
  • acme-pushers: イメージのプッシュとプルを許可するグループ。
  • acme-managers: イメージのプッシュとプル、リポジトリの削除およびリポジトリ・メタデータの編集(たとえば、プライベート・リポジトリを公開するため)を許可するグループ。

必ずサンプル・グループ名を独自のグループ名に置き換えてください。

ユーザーがテナンシまたはコンパートメントに属するすべてのリポジトリのリストを表示できるようにする

アクセスのタイプ:テナンシ(または特定のコンパートメント)に属するコンテナ・レジストリ内のすべてのリポジトリのリストを参照する機能。ユーザーは、次のことができなくなります:

  • リポジトリ内のイメージまたはレイヤーの表示
  • リポジトリに対するイメージのプッシュまたはプル

ポリシーを作成する場所:

  • テナンシ内。例:

    Allow group acme-viewers to inspect repos in tenancy
  • テナンシまたはコンパートメント内。例:

    Allow group acme-viewers to inspect repos in compartment acme-compartment
ユーザーがテナンシまたはコンパートメントに属するリポジトリからイメージをプルできるようにする

アクセスのタイプ:テナンシ(または特定のコンパートメント)に属するコンテナ・レジストリ内の任意のリポジトリからイメージ(レイヤーおよびマニフェスト)をプルする機能。

ポリシーを作成する場所:

  • テナンシ内。例:

    Allow group acme-pullers to read repos in tenancy
  • テナンシまたはコンパートメント内。例:

    Allow group acme-pullers to read repos in compartment acme-compartment
ユーザーがテナンシまたはコンパートメント内の特定のリポジトリからイメージをプルできるようにする

アクセスのタイプ:「acme - web - app」で始まり、テナンシ(または特定のコンパートメントに属する)に属する名前を持つコンテナ・レジストリ内の任意のリポジトリからイメージ(レイヤーおよびマニフェスト)をプルする機能。

ポリシーを作成する場所:

  • テナンシ内。例:

    Allow group acme-pullers to read repos in tenancy where all { target.repo.name=/acme-web-app*/ }
  • テナンシまたはコンパートメント内。例:

    Allow group acme-pullers to read repos in compartment acme-compartment where all { target.repo.name=/acme-web-app*/ }
ユーザーがテナンシまたはコンパートメント内の任意のリポジトリにイメージをプッシュ(および必要に応じて新しいリポジトリを作成)できるようにする

アクセスのタイプ:テナンシまたは特定のコンパートメントに属するコンテナ・レジストリ内の任意のリポジトリにイメージ(レイヤーおよびマニフェスト)をプッシュする機能。

指定されたリポジトリがまだ存在しない場合、REPOSITORY_CREATE権限により、ユーザーはイメージをプッシュするときにテナンシのルート・コンパートメントに新しいリポジトリを作成できます。この異常なシナリオの詳細は、「リポジトリの作成に関するノート」を参照してください。

ポリシーを作成する場所:

  • テナンシ内。例:

    Allow group acme-pushers to use repos in tenancy
    Allow group acme-pushers to manage repos in tenancy where ANY {request.permission = 'REPOSITORY_CREATE', request.permission = 'REPOSITORY_UPDATE'}
  • テナンシまたはコンパートメント内。たとえば、コンパートメントの場合:

    Allow group acme-pushers to use repos in compartment acme-compartment

    前述のようにルート・コンパートメント以外のコンパートメントにポリシーを作成した場合、ユーザーはまだ存在しないリポジトリにイメージをプッシュできないことに注意してください。これは、前述のポリシーによって、テナンシのルート・コンパートメントに新しいリポジトリを作成する権限がユーザーに付与されないためです。この異常なシナリオの詳細は、「リポジトリの作成に関するノート」を参照してください。

マネージャがテナンシまたはコンパートメントに属するリポジトリに対して操作を実行できるようにする

アクセスのタイプ:テナンシ(または特定のコンパートメント)に属するコンテナ・レジストリ内のリポジトリに対して、次の操作などを実行する機能。

  • 任意のリポジトリからのイメージのプル
  • イメージを任意のリポジトリにプッシュ
  • 新規リポジトリの作成つまり、任意のコンパートメントに空のリポジトリを作成するか、リポジトリがまだ存在しないイメージのプッシュ時にテナンシのルート・コンパートメントにリポジトリを作成します。ルート・コンパートメント以外のコンパートメントにポリシーを作成した場合、ユーザーはまだ存在しないリポジトリにイメージをプッシュできないことに注意してください。これは、ポリシーによって、ルート・コンパートメントに新しいリポジトリを作成する権限がユーザーに付与されないためです。この異常なシナリオの詳細は、「リポジトリの作成に関するノート」を参照してください。
  • リポジトリの削除
  • パブリック・リポジトリをプライベート・リポジトリに、プライベート・リポジトリをパブリック・リポジトリに変更

ポリシーを作成する場所:

  • テナンシ内。例:

    Allow group acme-managers to manage repos in tenancy
  • テナンシまたはコンパートメント内。例:

    Allow group acme-managers to manage repos in compartment acme-compartment

    ルート・コンパートメント以外のコンパートメントで前述のポリシーを作成した場合、ユーザーはまだ存在しないリポジトリにイメージをプッシュできないことに注意してください。これは、ポリシーによって、ルート・コンパートメントに新しいリポジトリを作成する権限がユーザーに付与されないためです。この異常なシナリオの詳細は、「リポジトリの作成に関するノート」を参照してください。