デフォルトの Amazon EKS は Kubernetes ロールとユーザーを作成しました。 - Amazon EKS

デフォルトの Amazon EKS は Kubernetes ロールとユーザーを作成しました。

Kubernetes クラスターを作成すると、Kubernetes が正常に機能するようにそのクラスターに複数のデフォルト Kubernetes ID が作成されます。Amazon EKS は、デフォルトコンポーネントごとに Kubernetes ID を作成します。ID は、クラスターコンポーネントの Kubernetes ロールベースの承認制御 (RBAC) を提供します。詳細については、「Kubernetes ドキュメント」の「RBAC 認証の使用」を参照してください。

オプションのアドオンをクラスターにインストールすると、クラスターに追加の Kubernetes ID が追加されることがあります。このトピックで扱われていない ID の詳細については、「アドオンのドキュメント」を参照してください。

AWS Management Console または kubectl コマンドラインツールを使用して、クラスターで Amazon EKS が作成した Kubernetes ID のリストを表示できます。すべてのユーザー ID はお客様に対して、Amazon CloudWatch を通じて利用可能な kube 監査ログに表示されます。

AWS Management Console
前提条件

使用する IAM プリンシパルには、必要なアクセス許可 に記載されている許可が必要です。

AWS Management Console を使用して Amazon EKS で作成された ID を表示するには
  1. https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソール を開きます。

  2. [Clusters] (クラスター) のリストで、表示したい ID を含んでいるクラスターを選択します。

  3. Resources タブを選択します。

  4. [Resource types] (リソースタイプ) で [Authorization] (承認) を選択します。

  5. [ClusterRoles][ClusterRoleBindings][Roles] (ロール)、または [RoleBindings] を選択します。[eks] というプレフィックスが付いたリソースはすべて、Amazon EKS によって作成されます。Amazon EKS で作成される追加の ID リソースは次のとおりです。

    • [aws-node] という名前の [ClusterRole][ClusterRoleBinding][aws-node] リソースは、Amazon EKS がすべてのクラスターにインストールする Amazon VPC CNI plugin for Kubernetes をサポートします。

    • [vpc-resource-controller-role] という名前の [ClusterRole] および [vpc-resource-controller-rolebinding] という名前の [ClusterRoleBinding]。これらのリソースは、Amazon EKS がすべてのクラスターにインストールする「Amazon VPC resource controller」(Amazon VPC リソースコントローラー) をサポートします。

    コンソールに表示されるリソースに加えて、次の特別なユーザー ID がクラスターに存在しますが、クラスターの設定には表示されません。

    • eks:cluster-bootstrap - クラスターブートストラップ中の kubectl 操作に使用されます。

    • eks:support-engineer - クラスター管理操作に使用されます。

  6. 特定のリソースを選択すると、そのリソースの詳細が表示されます。デフォルトでは、情報は [Structured view] (構造化ビュー) で表示されます。詳細ページの右上隅で、[Raw View] (生のビュー) を選択すると、リソースの情報をすべて表示できます。

Kubectl
前提条件

クラスター上の Kubernetes リソースを一覧表示するために使用するエンティティ (AWS Identity and Access Management (IAM) または OpenID Connect (OIDC)) は、IAM または OIDC ID プロバイダーによって認証される必要があります。エンティティには、そのエンティティに使用させたいクラスター上の、RoleClusterRoleRoleBinding、および ClusterRoleBinding リソースに対して Kubernetes get および list 動詞を使用するアクセス許可が付与されている必要があります。IAM エンティティにクラスターへのアクセスを付与する方法の詳細については、「クラスターに対する IAM プリンシパルのアクセスの有効化」を参照してください。独自の OIDC プロバイダーによって認証されたエンティティにクラスターへのアクセスを付与する方法の詳細については、「OpenID Connect アイデンティティプロバイダーからクラスターのユーザーを認証する」を参照してください。

kubectl を使用して Amazon EKS で作成された ID を表示するには

表示するリソースのタイプのコマンドを実行します。[eks] というプレフィックスが付いたすべての返されるリソースは、Amazon EKS によって作成されます。コマンドからの出力で返されるリソースに加えて、次の特別なユーザー ID がクラスターに存在しますが、クラスターの設定には表示されません。

  • eks:cluster-bootstrap - クラスターブートストラップ中の kubectl 操作に使用されます。

  • eks:support-engineer - クラスター管理操作に使用されます。

ClusterRoles - ClusterRoles はクラスターにスコープが設定されているため、ロールに付与されたすべてのアクセス許可は、クラスター上の任意の Kubernetes 名前空間内のリソースに適用されます。

次のコマンドは、クラスターで作成されたすべての Amazon EKS Kubernetes ClusterRoles を返します。

kubectl get clusterroles | grep eks

出力で返されるのはプレフィックスが付けられた ClusterRoles の他に、次の ClusterRoles が存在します。

  • aws-node - この ClusterRole は Amazon EKS がすべてのクラスターにインストールする Amazon VPC CNI plugin for Kubernetes をサポートします。

  • vpc-resource-controller-role - この ClusterRole は、Amazon EKS がすべてのクラスターにインストールする「Amazon VPC resource controller」(Amazon VPC リソースコントローラー) をサポートします。

ClusterRole の仕様を確認するには、次のコマンドの eks:k8s-metrics を前のコマンドの出力で返された ClusterRole に置き換えます。次の例では、eks:k8s-metrics ClusterRole の仕様を返します。

kubectl describe clusterrole eks:k8s-metrics

出力例は次のとおりです。

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names  Verbs
  ---------         -----------------  --------------  -----
                    [/metrics]         []              [get]
  endpoints         []                 []              [list]
  nodes             []                 []              [list]
  pods              []                 []              [list]
  deployments.apps  []                 []              [list]

ClusterRoleBindings - ClusterRoleBindings はクラスターを対象としています。

次のコマンドは、クラスターで作成されたすべての Amazon EKS Kubernetes ClusterRoleBindings を返します。

kubectl get clusterrolebindings | grep eks

出力で返される ClusterRoleBindings 以外に、次の ClusterRoleBindings が存在します。

  • aws-node - この ClusterRoleBinding は Amazon EKS がすべてのクラスターにインストールする Amazon VPC CNI plugin for Kubernetes をサポートします。

  • vpc-resource-controller-rolebinding - この ClusterRoleBinding は、Amazon EKS がすべてのクラスターにインストールする「Amazon VPC resource controller」(Amazon VPC リソースコントローラー) をサポートします。

ClusterRoleBinding の仕様を確認するには、次のコマンドの eks:k8s-metrics を前のコマンドの出力で返された ClusterRoleBinding に置き換えます。次の例では、eks:k8s-metrics ClusterRoleBinding の仕様を返します。

kubectl describe clusterrolebinding eks:k8s-metrics

出力例は次のとおりです。

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics

ロール - Roles は Kubernetes 名前空間にスコープされます。Roles で作成されたすべての Amazon EKS は、kube-system 名前空間にスコープされます。

次のコマンドは、クラスターで作成されたすべての Amazon EKS Kubernetes Roles を返します。

kubectl get roles -n kube-system | grep eks

Role の仕様を確認するには、次のコマンドの eks:k8s-metrics を、前のコマンドの出力で返された Role の名前に置き換えます。次の例では、eks:k8s-metrics Role の仕様を返します。

kubectl describe role eks:k8s-metrics -n kube-system

出力例は次のとおりです。

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names             Verbs
  ---------         -----------------  --------------             -----
  daemonsets.apps   []                 [aws-node]                 [get]
  deployments.apps  []                 [vpc-resource-controller]  [get]

RoleBindings - RoleBindings は Kubernetes 名前空間にスコープされます。RoleBindings で作成されたすべての Amazon EKS は、kube-system 名前空間にスコープされます。

次のコマンドは、クラスターで作成されたすべての Amazon EKS Kubernetes RoleBindings を返します。

kubectl get rolebindings -n kube-system | grep eks

RoleBinding の仕様を確認するには、次のコマンドの eks:k8s-metrics を前のコマンドの出力で返された RoleBinding に置き換えます。次の例では、eks:k8s-metrics RoleBinding の仕様を返します。

kubectl describe rolebinding eks:k8s-metrics -n kube-system

出力例は次のとおりです。

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics