Oracle Cloud Infrastructureドキュメント

クラスタの作成とデプロイメントのためのポリシー構成

Container Engine for Kubernetesを使用してテナンシ内のリージョンにクラスタを作成およびデプロイするには、Container Engine for Kubernetesがテナンシ内で操作を実行できるように、ルート・コンパートメントにポリシーを設定する必要があります。 「Container Engine for Kubernetesに必須のポリシーを作成」も参照してください。

テナンシが作成されると、そのテナンシに対して管理者グループが自動的に作成されます。 Administratorsグループのメンバーであるユーザーは、テナンシ内のリソースに対して任意の操作を実行できます。 Container Engine for Kubernetesを操作するすべてのユーザーがすでに管理者グループのメンバーである場合、追加のポリシーを作成する必要はありません(テナンシでContainer Engine for Kubernetesの操作の実行を許可するためにポリシーから別のポリシーを作成する必要があります)。 ただし、管理者グループのメンバーでないユーザーがContainer Engine for Kubernetesを使用できるようにするには、テナンシまたは個々のコンパートメントのリソースに対して操作を実行するためにユーザーが属するグループを有効化するポリシーを作成する必要があります。 一部のポリシーは必須ですが、オプションのポリシーもあります。 「グループに必要なポリシーの作成」および「グループに対する1つ以上の追加ポリシーの作成」を参照してください。

IAMで管理される前述のポリシーに加えて、Kubernetes RBAC認可者は、Kubernetes RBACロールおよびクラスタ・ロールを介して特定のクラスタのユーザーに対してさらに詳細なアクセス制御を強制することもできます。 「アクセス制御とContainer Engine for Kubernetesについて」を参照してください。

Container Engine for Kubernetesの必須ポリシーの作成

テナンシ内のクラスタを作成および管理するには、Container Engine for Kubernetesがテナンシ内のすべてのリソースにアクセスできる必要があります。 Container Engine for Kubernetesに必要なアクセス権を与えるには、次のようにサービスのポリシーを作成します:

  1. コンソールで、「ナビゲーション・メニュー」を開きます。 ガバナンスと管理の下で、アイデンティティに行き、「ポリシー」をクリックします。 表示しているコンパートメント内のポリシーのリストが表示されます。
  2. 左のリストからテナンシのルート・コンパートメントを選択します。
  3. 「ポリシーの作成」をクリックします。
  4. 次のように入力します。

    • 名: ポリシーの一意の名前(たとえば、oke-service)。 名前は、テナンシ内のすべてのポリシーで一意でなければなりません。 これは後で変更することはできません。 機密情報を入力しないでください。
    • 説明: フレンドリな説明。 これを後で変更することもできます。 機密情報を入力しないでください。
    • ポリシーのバージョン管理: 将来のポリシー変更の動詞とリソースの変更がポリシーに反映されるようにするには、現在のポリシーを維持を選択します。 または、特定の日付の現在の定義に従ってアクセスを制限する場合は、「バージョン日付を使用」を選択し、その日付をYYYY-MM-DD形式で入力します。 詳細は、「ポリシー言語バージョン」を参照してください。
    • ステートメント: 次のポリシー・ステートメント:

      Allow service OKE to manage all-resources in tenancy
    • タグ: オプションで、タグを適用できます。 リソースを作成する権限を持っている場合は、フリーフォーム・タグをそのリソースに適用する権限も持っています。 定義済みタグを適用するには、タグ・ネームスペースを使用する権限が必要です。 タギングの詳細については、「リソース・タグ」を参照してください。 タグを適用する必要があるかどうかわからない場合は、このオプションをスキップしてください(後でタグを適用することもできます)。
  5. 「作成」をクリックします。

グループに必要なポリシーの作成

クラスタおよびノード・プールを作成、更新および削除するには、管理者グループのメンバーでないユーザーが、クラスタ関連リソースを操作するための権限を持っている必要があります。 ユーザーに必要なアクセス権を付与するには、ユーザーが属するグループに必要な数のポリシー文を含むポリシーを作成する必要があります:

  1. コンソールで、「ナビゲーション・メニュー」を開きます。 ガバナンスと管理の下で、アイデンティティに行き、「ポリシー」をクリックします。 表示しているコンパートメント内のポリシーのリストが表示されます。
  2. 左側のリストから、テナンシのルート・コンパートメントまたはクラスタ関連のリソースを含む個々のコンパートメントを選択します。
  3. 「ポリシーの作成」をクリックします。
  4. 次のように入力します。

    • 名: コンパートメント内で一意のポリシー(acme-dev-team-oke-required-policyなど)の名前。 テナンシのルート・コンパートメントにポリシーを作成する場合、テナンシ内のすべてのポリシー間で名前が一意である必要があります。 これは後で変更することはできません。 機密情報を入力しないでください。
    • 説明: フレンドリな説明。 これを後で変更することもできます。 機密情報を入力しないでください。
    • ポリシーのバージョン管理: 将来のポリシー変更の動詞とリソースの変更がポリシーに反映されるようにするには、現在のポリシーを維持を選択します。 または、特定の日付の現在の定義に従ってアクセスを制限する場合は、「バージョン日付を使用」を選択し、その日付をYYYY-MM-DD形式で入力します。 詳細は、「ポリシー言語バージョン」を参照してください。
    • ステートメント: 次に示す必要なポリシー文は、ユーザーがContainer Engine for Kubernetesを使用してクラスタとノード・プールを作成、更新および削除することを可能にします:

      • Allow group <group-name> to manage instance-family in <location>

      • Allow group <group-name> to use subnets in <location>

      • Allow group <group-name> to read virtual-network-family in <location>

      • Allow group <group-name> to use vnics in <location>
      • Allow group <group-name> to inspect compartments in <location>

      クラスタ関連リソースに対する任意の操作をユーザーが実行できるようにするために必要な次のポリシー文(この'catch-all'ポリシーは事実上、すべてのユーザー管理者がクラスタ関連リソースに関する条件を満たしているため、事実上その内容はすべてのユーザーにはわかりません。):

      • Allow group <group-name> to manage cluster-family in <location>

      前述のポリシー文で、<location>tenancy (テナンシのルート・コンパートメントにポリシーを作成する場合)またはcompartment <compartment-name> (個々のコンパートメントにポリシーを作成する場合)に置き換えます。

    • タグ: オプションで、タグを適用できます。 リソースを作成する権限を持っている場合は、フリーフォーム・タグをそのリソースに適用する権限も持っています。 定義済みタグを適用するには、タグ・ネームスペースを使用する権限が必要です。 タギングの詳細については、「リソース・タグ」を参照してください。 タグを適用する必要があるかどうかわからない場合は、このオプションをスキップしてください(後でタグを適用することもできます)。
  5. 「作成」をクリックします

グループに対する1つ以上の追加ポリシーの作成

AdministratorsグループのメンバーでないユーザーがContainer Engine for Kubernetesを使用できるようにするには、追加のポリシーを作成して、そのユーザーが属するグループがクラスタ関連のリソースに対する操作を次のように実行できるようにします:

  1. コンソールで、「ナビゲーション・メニュー」を開きます。 ガバナンスと管理の下で、アイデンティティに行き、「ポリシー」をクリックします。 表示しているコンパートメント内のポリシーのリストが表示されます。
  2. 左側のリストから、テナンシのルート・コンパートメントまたはクラスタ関連のリソースを含む個々のコンパートメントを選択します。
  3. 「ポリシーの作成」をクリックします。
  4. 次のように入力します。

    • 名: コンパートメント内で一意のポリシー(acme-dev-team-oke-additional-policyなど)の名前。 テナンシのルート・コンパートメントにポリシーを作成する場合、テナンシ内のすべてのポリシー間で名前が一意である必要があります。 これは後で変更することはできません。 機密情報を入力しないでください。
    • 説明: フレンドリな説明。 これを後で変更することもできます。 機密情報を入力しないでください。
    • ポリシーのバージョン管理: 将来のポリシー変更の動詞とリソースの変更がポリシーに反映されるようにするには、現在のポリシーを維持を選択します。 または、特定の日付の現在の定義に従ってアクセスを制限する場合は、「バージョン日付を使用」を選択し、その日付をYYYY-MM-DD形式で入力します。 詳細は、「ポリシー言語バージョン」を参照してください。
    • ステートメント: 既存のグループがクラスタ関連リソース上で操作を実行できるようにするための適切なポリシー文。 次のポリシー文の例では、<location>tenancy (テナンシのルート・コンパートメントにポリシーを作成する場合)またはcompartment <compartment-name> (個々のコンパートメントにポリシーを作成する場合)に置き換えます:

      • acme-dev-teamグループのユーザーが、新しいクイック・クラスタの作成時に、関連する新しいネットワーク・リソースを自動的に作成および構成できるようにするには、ポリシーでそのグループを付与する必要もあります:

        • VCN_READおよびVCN_CREATEのアクセス権。 Allow group acme-dev-team to manage vcns in <location>のようなポリシー文を入力してください
        • SUBNET_READおよびSUBNET_CREATEのアクセス権。 Allow group acme-dev-team to manage subnets in <location>のようなポリシー文を入力してください
        • INTERNET_GATEWAY_CREATEアクセス権。 Allow group acme-dev-team to manage internet-gateways in <location>のようなポリシー文を入力してください
        • NAT_GATEWAY_CREATEアクセス権。 Allow group acme-dev-team to manage nat-gateways in <location>のようなポリシー文を入力してください
        • ROUTE_TABLE_UPDATEアクセス権。 Allow group acme-dev-team to manage route-tables in <location>のようなポリシー文を入力してください
        • SECURITY_LIST_CREATEアクセス権。 Allow group acme-dev-team to manage security-lists in <location>のようなポリシー文を入力してください
      • acme-dev-team-cluster-viewersグループのユーザーがクラスタを単純に一覧表示できるようにするには、Allow group acme-dev-team-cluster-viewers to inspect clusters in <location>のようなポリシー文を入力します。
      • acme-dev-team-pool-adminsグループ内のユーザーがノード・プールをリスト作成、更新、および削除できるようにするには、Allow group acme-dev-team-pool-admins to use cluster-node-pools in <location>のようなポリシー文を入力します。
      • acme-dev-team-auditorsグループのユーザーがクラスタで実行された操作の詳細を表示できるようにするには、Allow group acme-dev-team-auditors to read cluster-work-requests in <location>のようなポリシー・ステートメントを入力します。
      • acme-dev-team-sgwグループのユーザーがサービス・ゲートウェイを作成できるようにして、ワーカー・ノードが同じリージョンの他のリソースに、パブリック・インターネットにデータを公開せずにアクセスできるようにするには、Allow group acme-dev-team-sgw to manage service-gateways in <location>のようなポリシー文を入力します。
    • タグ: オプションで、タグを適用できます。 リソースを作成する権限を持っている場合は、フリーフォーム・タグをそのリソースに適用する権限も持っています。 定義済みタグを適用するには、タグ・ネームスペースを使用する権限が必要です。 タギングの詳細については、「リソース・タグ」を参照してください。 タグを適用する必要があるかどうかわからない場合は、このオプションをスキップしてください(後でタグを適用することもできます)。
  5. 「作成」をクリックします