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

コンテナ・レジストリのリポジトリへのアクセスを制御するポリシーの設定方法と、一般的なポリシーの例を確認してください。

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_READおよびREPOSITORY_UPDATE権限が必要です。指定されたリポジトリがまだ存在しない場合、ユーザーは、イメージをプッシュするときにテナンシのルート・コンパートメントに新しいリポジトリを作成するためにREPOSITORY_CREATE権限も必要です。この異常なシナリオの詳細は、リポジトリの作成を参照してください。

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

  • テナンシ内。例:

    Allow group acme-pushers to manage repos in tenancy

    前述の例では許容度が高すぎる場合(イメージをプッシュする必要がないREPOSITORY_MANAGEおよびREPOSITORY_DELETE権限が含まれているため)、権限を付与する権限を明示的に指定するように制限できます。例:

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

    Allow group acme-pushers to manage 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

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