

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 理解 Amazon EKS 所建立的 RBAC 角色及使用者
<a name="default-roles-users"></a>

當您建立 Kubernetes 叢集時，會在該叢集上建立數個預設 Kubernetes 身分，以便 Kubernetes 能正常運作。Amazon EKS 會為其每個預設元件建立 Kubernetes 身分。身分為叢集元件提供以 Kubernetes 角色為基礎的授權控制 (RBAC)。如需詳細資訊，請參閱 Kubernetes 文件中的[使用 RBAC 授權](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)。

當您將選用的[附加元件](eks-add-ons.md)安裝到叢集時，可能會將其他 Kubernetes 身分新增至叢集。如需有關本主題未討論之身分的詳細資訊，請參閱附加元件的文件。

您可以使用 AWS 管理主控台 或 `kubectl`命令列工具，在叢集上檢視 Amazon EKS 建立的 Kubernetes 身分清單。所有的使用者身分都會出現在 `kube` 稽核日誌中，可供您透過 Amazon CloudWatch 加以利用。

## 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)中所述的許可。

### 使用 檢視 Amazon EKS 建立的身分 AWS 管理主控台
<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** (叢集) 清單中，選擇包含您要檢視之身分的叢集。

1. 選擇 **Resources** (資源) 標籤。

1. 在 **Resource types** (資源類型) 下選擇 **Authorization** (授權)。

1. 選擇 **ClusterRoles**、**ClusterRoleBindings**、**Roles** (角色) 或 **RoleBindings**。所有前面帶有 **eks** 的資源皆是由 Amazon EKS 所建立。其他由 Amazon EKS 建立的身分資源包含：
   + 名為 **aws-node** 的 **ClusterRole** 和 **ClusterRoleBinding**。**aws-node** 資源支援 [Kubernetes 專用 Amazon VPC CNI 外掛程式](managing-vpc-cni.md)，Amazon EKS 會在所有叢集上安裝。
   + 名為 **vpc-resource-controller-role** 的 **ClusterRole**，以及名為 **vpc-resource-controller-rolebinding** 的 **ClusterRoleBinding**。這些資源支援 [Amazon VPC 資源控制器](https://github.com/aws/amazon-vpc-resource-controller-k8s)，Amazon EKS 會在所有叢集上安裝該控制器。

   除了您在主控台中看到的資源之外，您的叢集上還存在下列特殊使用者身分，但在叢集的組態中不會顯示出來：
   +  **`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 身分提供者驗證。必須授予實體在叢集上針對 `Role`、`ClusterRole`、`RoleBinding` 和 `ClusterRoleBinding` 資源使用 Kubernetes `get` 和 `list` 動詞的許可，以便與實體互相搭配使用。如需有關授予 IAM 實體叢集存取權的詳細資訊，請參閱[授予 IAM 使用者和角色對 Kubernetes APIs存取權](grant-k8s-access.md)。如需有關授予經由您的 OIDC 提供商驗證之實體叢集存取權的詳細資訊，請參閱 [透過外部 OIDC 提供商授予使用者存取 Kubernetes 的權限](authenticate-oidc-identity-provider.md)。

### 使用 `kubectl` 檢視 Amazon EKS 所建立的身分
<a name="_to_view_amazon_eks_created_identities_using_kubectl"></a>

執行您要查看的資源類型的命令。所有前面帶有 **eks** 的傳回資源皆是由 Amazon EKS 所建立。除了命令輸出中傳回的資源之外，您的叢集上還存在下列特殊使用者身分，但在叢集的組態中不會顯示出來：
+  **`eks:cluster-bootstrap`**：用於叢集引導期間的 `kubectl` 操作。
+  **`eks:support-engineer`**：用於叢集管理操作。

 **ClusterRoles**：`ClusterRoles` 設定範圍為您的叢集內，因此授予角色的任何許可皆會套用至叢集上任何 Kubernetes 命名空間中的資源。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes `ClusterRoles`。

```
kubectl get clusterroles | grep eks
```

除了前面帶有 的輸出中傳回的 `ClusterRoles` 之外，還存在以下 `ClusterRoles`。
+  ** `aws-node` ** – 此 `ClusterRole` 支援 [Kubernetes 專用 Amazon VPC CNI 外掛程式](managing-vpc-cni.md)，Amazon EKS 會在所有叢集上安裝。
+  **`vpc-resource-controller-role`**：此 `ClusterRole` 支援 [Amazon VPC 資源控制器](https://github.com/aws/amazon-vpc-resource-controller-k8s)，Amazon EKS 會在所有叢集上安裝該控制器。

若要查看 `ClusterRole` 的規格，請將以下命令中的 *ek: 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` 支援 [Kubernetes 專用 Amazon VPC CNI 外掛程式](managing-vpc-cni.md)，Amazon EKS 會在所有叢集上安裝。
+  **`vpc-resource-controller-rolebinding`**：此 `ClusterRoleBinding` 支援 [Amazon VPC 資源控制器](https://github.com/aws/amazon-vpc-resource-controller-k8s)，Amazon EKS 會在所有叢集上安裝該控制器。

若要查看 `ClusterRoleBinding` 的規格，請將以下命令中的 *ek: 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 命名空間內。所有 Amazon EKS 所建立的 `Roles` 設定範圍皆為 `kube-system` 命名空間內。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes `Roles`。

```
kubectl get roles -n kube-system | grep eks
```

若要查看 `Role` 的規格，請將以下命令中的 *ek: 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 命名空間內。所有 Amazon EKS 所建立的 `RoleBindings` 設定範圍皆為 `kube-system` 命名空間內。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes `RoleBindings`。

```
kubectl get rolebindings -n kube-system | grep eks
```

若要查看 `RoleBinding` 的規格，請將以下命令中的 *ek: 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
```