Amazon EKS 作成の RBAC ロールおよびユーザーの説明 - アマゾン EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

Amazon EKS 作成の RBAC ロールおよびユーザーの説明

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. アマゾン EKS コンソールを開きます。

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

  3. [リソース] タブを選択してください。

  4. [Resource types] (リソースタイプ) で [Authorization] (承認)を 選択してください。

  5. [クラスター役割][クラスター役割ビンディング][役割] 、または [バインディング役割] を選択してください。[eks] というプレフィックスが付いたリソースはすべて、Amazon EKS によって作成されます。Amazon EKS で作成される追加の ID リソースは次のとおりです:

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

    • [vpc-resource-controller-role] という名前の [クラスター役割] および [vpc-resource-controller-rolebinding] という名前の [クラスター役割バインディング]。これらのリソースは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 ユーザーおよびロールに Kubernetes API へのアクセスを付与する」を参照してください。独自の OIDC プロバイダーによって認証されたエンティティにクラスターへのアクセスを付与する方法の詳細については「外部 OIDC プロバイダーを使用して Kubernetes へのアクセスをユーザーに許可する」を参照してください。

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 はアマゾン EKS がすべてのクラスターにインストールする Amazon VPC CNI plugin for Kubernetes, をサポートします。

  • vpc-resource-controller-role - この ClusterRole はアマゾン EKS がすべてのクラスターにインストールする「アマゾン VPC resource controller」(アマゾン 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]

クラスター役割Bindings - 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 はアマゾン EKS がすべてのクラスターにインストールする「アマゾン VPC resource controller」(アマゾン 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 - Roles は Kubernetes 名前空間にスコープされます。Roles で作成されたすべての アマゾン 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 で作成されたすべての アマゾン 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