クラスタ関連リソースへのタグの適用によるアクセスの管理

タグおよびIAMポリシーを使用して、Kubernetes Engine (OKE)を使用して作成するクラスタに関連するリソースへのアクセスを管理する方法をご紹介します。

クラスタ関連リソースにタグを適用すると、IAMポリシーにタグを含めることで、他のリソースへのアクセスを制御できます。

IAMポリシーにタグを含めることは、ワーカー・ノードが他のリソースにアクセスすることを認可する場合に特に役立ちます。ノード・プールを最初に定義するときにノード・タグを指定すると、その後ノード・プールがスケール・アウトされます。ノード・タグは、作成された新しいワーカー・ノードに自動的に適用されます。他のリソースへのアクセス権を付与するノード・タグをIAMポリシーに含めた場合、新しいワーカー・ノードは、ノード・プール内の既存のワーカー・ノードと同じリソースにアクセスする権限を自動的に付与されます。

IAMポリシーでフリーフォーム・タグを使用してリソースへのアクセスを制御できないことに注意してください。

例: 管理対象ノード・プールによるオブジェクト・ストレージ・オブジェクトの読取りの認可

特定の管理対象ノード・プール内のワーカー・ノードのみに、特定のコンパートメント内のオブジェクト・ストレージ・オブジェクトの読取りを許可するには:

  1. 新しい管理対象ノード・プールを定義し、次を指定します。
    • コンパートメント内で一意のノード・プールの名前。たとえば、acme-pool-one
    • ノード・タグは、ノード・プールの名前に設定されます。たとえば、acme-projectという名前のタグ・ネームスペース内のacme-nodepool-nameという名前の定義済タグは、値acme-pool-oneに設定されます。

    ノード・プールを作成すると、ノード・タグacme-project.acme-nodepool-name='acme-pool-one'が、ノード・プール内のワーカー・ノードをホストしているすべてのコンピュート・インスタンスに適用されます。

  2. ノード・プールを表す動的グループを定義します。
    1. IAMドキュメントの動的グループを作成するにはの手順に従って、新しい動的グループに名前を付けます(たとえば、acme-oke-pool-one-dyn-grp)。
    2. ノード・タグが適用されたコンパートメント内のすべてのワーカー・ノードを含むルールを次の形式で入力します:

      All {instance.compartment.id = '<compartment_ocid>', tag.<tagnamespace>.<tagkey>.value = '<tagvalue>'}

      例:

      All {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa', tag.acme-project.acme-nodepool-name.value = 'acme-pool-one'}
    3. 「作成」を選択します。
  3. 動的グループがコンパートメント内のオブジェクト・ストレージ・オブジェクトを読み取ることを認可するIAMポリシーを定義します:
    1. IAMドキュメントのポリシーを作成するにはの手順に従って、新しいポリシーに名前を付けます(たとえば、acme-oke-read-object-dyn-grp-policy)。
    2. 動的グループがオブジェクト・ストレージ・オブジェクトを次の形式で読み取れるようにするポリシー・ステートメントを入力します:

      Allow dynamic-group <dynamic-group-name> to read objects in compartment <compartment-name>

      ここでは:

      • <dynamic-group-name>は、以前に作成した動的グループの名前です。動的グループがデフォルトのアイデンティティ・ドメインにない場合は、dynamic-group '<identity-domain-name>'/'<dynamic-group-name>'の形式で、動的グループ名の前にアイデンティティ・ドメイン名を追加します。dynamic-group id <dynamic-group-ocid>の形式で、そのOCIDを使用して動的グループを指定することもできます。
      • <compartment-name>は、オブジェクト・ストレージ・オブジェクトを含むコンパートメントの名前です。

      例:

      Allow dynamic-group acme-oke-pool-one-dyn-grp to read objects in compartment acme-oke-obj-storage-comp
    3. 「作成」を選択して、新しいポリシーを作成します。

    ノード・プール内のすべてのワーカー・ノードは、指定したコンパートメント内のオブジェクト・ストレージ・オブジェクトを読み取ることができます。