OKE、OCIRを使うときに権限制御するための設定まとめ

このエントリーはOracle Cloud アドベントカレンダーその2の22日目です。

今回はOracleが提供するコンテナ関連のクラウドサービスである、OKE、OCIRを使う上での、準備に当たる作業の話を書きたいと思います。

これらを使うには、Policyと呼ばれるアクセス権限の設定を予めしておく必要があります。 このエントリーでは、それら必要な権限周りの設定を整理したいと思います(他のエントリーではそのエントリーで必要なものだけ書いているので)。

管理者権限を打ち込めばすぐに使えるようにはなりますが、ちゃんと権限を分けたいときにはこの情報を算用してください。

OKEを使うために必要なポリシー

注: in tenancyin compartment [コンパートメント名]のようにすると、権限の及ぶ範囲をコンパート名に絞る事ができます。

  • OKEのPaaSに与える権限OKEを使つときは必須

    • Statement:
      • Allow service OKE to manage all-resources in tenancy
    • 説明:
      • OKEのPaaSに権限を与えるための特殊なポリシー。OKEを使うときはこれを必ず作る。これがないと始まらない
  • OKEクラスターとNode Poolを操作する権限

    • Statement:
      • Allow group [グループ名] to manage cluster-family in tenancy
      • Allow group [グループ名] to inspect vcns in tenancy
      • Allow group [グループ名] to inspect subnets in tenancy
    • 説明:
      • OKEのクラスターとNode Poodを操作する権限(3つセット)。3つのうち下のの2つは、クラスターが依存する下回りのネットワークを参照するためのもの。
      • このセットには下回りのネットワークをいじる権限は含まれない(依存するネットワークは作成済みの前提)
  • OKEクラスターとNode Poolを操作する権限 + ネットワークの操作権限

    • Statement:
      • Allow group [グループ名] to manage cluster-family in tenancy
      • Allow group [グループ名] to manage virtual-network-family in tenancy
    • 説明:
      • OKEをネットワークも含めて作ったり操作したいときに必要な権限。2つ目の方は下回りのネットワークを操作するためのもの
      • OKE作成のダイアログでquick clusterを使うときにはこの権限が必要
  • OKEクラスターを参照する権限

    • Statement:
      • Allow group [グループ名] to inspect clusters in tenancy
    • 説明:
  • OKEクラスターのNode Poolを操作する権限

    • Statement:
      • Allow group [グループ名] to use cluster-node-pools in tenancy
    • 説明:
      • 作成済みのOKEクラスターのNode Poolを追加、削除、アップデート(構成変更など)する権限
  • OKEクラスターへの操作の監査情報を参照する権限

    • Statement:
      • Allow group [グループ名] to read cluster-work-requests in tenancy
    • 説明:
      • OKEクラスターへの操作の監査情報を参照する権限

OCIRを使うために必要なポリシー

以下は全てを網羅したものではありませんが、ほとんどのケースはこれらがあれば大丈夫かと思います。

  • リポジトリの閲覧権限

    • Statement:
      • Allow group [グループ名] to inspect repos in tenancy
    • 説明:
  • イメージの取得権限(全てのリポジトリ

    • Statement:
      • Allow group [グループ名] to read repos in tenancy
    • 説明:
  • イメージの取得権限(リポジトリを限定)

    • Statement:
      • Allow group [グループ名] to read repos in tenancy where all { target.repo.name=/[リポジトリ名]/ }
    • 説明:
      • OCIRの指定されたリポジトリのイメージをpullする権限。/example-app*/のように正規表現を使うこともできる模様
  • イメージの登録権限(全てのリポジトリ

    • Statement:
      • Allow group [グループ名] to use repos in tenancy
    • 説明:
  • イメージの登録権限(リポジトリが存在しない場合に新たに作る権限も追加)

    • Statement:
      • Allow group [グループ名] to manage repos in tenancy where ANY {request.permission = 'REPOSITORY_CREATE', request.permission = 'REPOSITORY_UPDATE'}
    • 説明:
  • OCIRへのフルアクセス

    • Statement:
      • Allow group [グループ名] to manage repos in tenancy
    • 説明: