

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

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

# Amazon EKS 作成の RBAC ロールおよびユーザーの説明
<a name="default-roles-users"></a>

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

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

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

## AWS マネジメントコンソール
<a name="default-role-users-console"></a>

### 前提条件
<a name="_prerequisite"></a>

使用する [IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)には「[必要なアクセス許可](view-kubernetes-resources.md#view-kubernetes-resources-permissions)」に記載されている許可が必要です。

### AWS マネジメントコンソール を使用して Amazon EKS で作成された ID を表示するには
<a name="to_view_amazon_eks_created_identities_using_the_shared_consolelong"></a>

1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)を開きます。

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

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

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

1. **[クラスター役割]**、**[クラスター役割ビンディング]**、**[役割]** 、または **[バインディング役割]** を選択してください。**[eks]** というプレフィックスが付いたリソースはすべて、Amazon EKS によって作成されます。Amazon EKS で作成される追加の ID リソースは次のとおりです：
   + **[aws-node]** という名前の **[クラスター役割]** と **[クラスター役割バインディング]**。**[aws-node]** リソースは Amazon EKS がすべてのクラスターにインストールする [Amazon VPC CNI plugin for Kubernetes ](managing-vpc-cni.md)をサポートします。
   + **[vpc-resource-controller-role]** という名前の **[クラスター役割]** および **[vpc-resource-controller-rolebinding]** という名前の **[クラスター役割バインディング]**。これらのリソースはAmazon EKS がすべてのクラスターにインストールする「[Amazon VPC resource controller](https://github.com/aws/amazon-vpc-resource-controller-k8s)」(Amazon VPC リソースコントローラー) サポートします。

   コンソールに表示されるリソースに加えて、次の特別なユーザー ID がクラスターに存在しますが、クラスターの設定には表示されません：
   +  ** `eks:cluster-bootstrap` ** - クラスターブートストラップ中の `kubectl` 操作に使用されます。
   +  ** `eks:support-engineer` ** - クラスター管理操作に使用されます。

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

## Kubectl
<a name="default-role-users-kubectl"></a>

### 前提条件
<a name="_prerequisite_2"></a>

クラスター上の Kubernetes リソースを一覧表示するために使用するエンティティ (AWS Identity and Access Management (IAM) または OpenID Connect (OIDC)) は IAM または OIDC ID プロバイダーによって認証される必要があります。エンティティにはそのエンティティに使用させたいクラスター上の、`Role`、`ClusterRole`、`RoleBinding`、および `ClusterRoleBinding` リソースに対してKubernetes `get` および `list` 動詞を使用するアクセス許可が付与されている必要があります。IAM エンティティにクラスターへのアクセスを付与する方法の詳細については「[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](grant-k8s-access.md)」を参照してください。独自の OIDC プロバイダーによって認証されたエンティティにクラスターへのアクセスを付与する方法の詳細については「[外部 OIDC プロバイダーを使用して Kubernetes へのアクセスをユーザーに許可する](authenticate-oidc-identity-provider.md)」を参照してください。

### `kubectl` を使用して Amazon EKS で作成された ID を表示するには
<a name="_to_view_amazon_eks_created_identities_using_kubectl"></a>

表示するリソースのタイプのコマンドを実行します。**[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](managing-vpc-cni.md), をサポートします。
+  ** `vpc-resource-controller-role` ** - この `ClusterRole` はAmazon EKS がすべてのクラスターにインストールする「[Amazon VPC resource controller](https://github.com/aws/amazon-vpc-resource-controller-k8s)」(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]
```

 **クラスター役割Bindings** - `ClusterRoleBindings` はクラスターを対象としています。

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

```
kubectl get clusterrolebindings | grep eks
```

出力で返される `ClusterRoleBindings` 以外に、次の `ClusterRoleBindings` が存在します。
+  ** `aws-node` ** – この `ClusterRoleBinding` はAmazon EKS がすべてのクラスターにインストールする [Amazon VPC CNI plugin for Kubernetes](managing-vpc-cni.md), をサポートします。
+  ** `vpc-resource-controller-rolebinding` ** - この `ClusterRoleBinding` はAmazon EKS がすべてのクラスターにインストールする「[Amazon VPC resource controller](https://github.com/aws/amazon-vpc-resource-controller-k8s)」(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** - `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
```