

 **協助改進此頁面** 

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

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

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

# 準備混合節點的憑證
<a name="hybrid-nodes-creds"></a>

Amazon EKS 混合節點使用由 AWS SSM 混合啟用或 IAM Roles Anywhere AWS 佈建的臨時 IAM 登入資料來驗證 Amazon EKS 叢集。您必須將 AWS SSM 混合啟用或 AWS IAM Roles Anywhere 與 Amazon EKS 混合節點 CLI () 搭配使用`nodeadm`。您不應該同時使用 AWS SSM 混合啟用和 AWS IAM Roles Anywhere。如果您現有的公有金鑰基礎設施 (PKI) 沒有憑證授權機構 (CA) 和內部部署環境的憑證，建議您使用 AWS SSM 混合啟用。如果您有現有的 PKI 和現場部署憑證，請使用 AWS IAM Roles Anywhere。

## 混合節點 IAM 角色
<a name="hybrid-nodes-role"></a>

在將混合節點連接到 Amazon EKS 叢集之前，您必須建立 IAM 角色，以搭配混合節點憑證的 AWS SSM 混合啟用或 AWS IAM Roles Anywhere 使用。建立叢集後，您將搭配 Amazon EKS 存取項目或 `aws-auth` ConfigMap 項目使用此角色，以將 IAM 角色映射至 Kubernetes 角色型存取控制 (RBAC)。如需建立混合節點 IAM 角色與 Kubernetes RBAC 的關聯的詳細資訊，請參閱 [準備混合節點的叢集存取](hybrid-nodes-cluster-prep.md)。

混合節點 IAM 角色必須具有下列許可。
+ `nodeadm` 使用 `eks:DescribeCluster`動作來收集您要連接混合節點之叢集相關資訊的許可。如果您未啟用 `eks:DescribeCluster`動作，則必須在傳遞給`nodeadm init`命令的節點組態中傳遞 Kubernetes API 端點、叢集 CA 套件和服務 IPv4 CIDR。
+ `nodeadm` 使用 `eks:ListAccessEntries`動作列出您要連接混合節點之叢集上存取項目的許可。如果您未啟用 `eks:ListAccessEntries`動作，則必須在執行 `nodeadm init`命令時傳遞 `--skip cluster-access-validation`旗標。
+ kubelet 使用 Amazon Elastic Container Registry (Amazon ECR) 中容器映像的許可，如 [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html) 政策所定義。
+ 如果使用 AWS SSM，`nodeadm init`則允許 使用[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)政策中定義的 AWS SSM 混合啟用。
+ 如果使用 AWS SSM，則使用 `ssm:DeregisterManagedInstance`動作和 `ssm:DescribeInstanceInformation`動作`nodeadm uninstall`取消註冊執行個體的許可。
+ (選用) Amazon EKS Pod 身分識別代理程式使用 `eks-auth:AssumeRoleForPodIdentity` 動作擷取 Pod 憑證的許可。

## 設定 AWS SSM 混合啟用
<a name="hybrid-nodes-ssm"></a>

在設定 AWS SSM 混合啟用之前，您必須建立並設定混合節點 IAM 角色。如需詳細資訊，請參閱[建立混合節點 IAM 角色](#hybrid-nodes-create-role)。遵循 Systems [Manager 使用者指南中的建立混合啟用中的指示，向 Systems Manager 註冊節點](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html)，為您的混合節點建立 AWS SSM 混合啟用。 AWS 當您將主機作為混合節點註冊到 Amazon EKS 叢集時，請搭配 `nodeadm` 使用您收到的啟用碼和 ID。在您為混合節點建立及準備好 Amazon EKS 叢集後，您可以稍後再返回此步驟。

**重要**  
Systems Manager 會立即將啟用代碼和 ID 傳回主控台或命令視窗，視您如何建立啟用而定。複製此資訊，並將其存放在安全的地方。如果您離開主控台或關閉命令視窗，您可能會遺失此資訊。如果您遺失此資訊，您必須建立新的啟用。

根據預設， AWS SSM 混合啟用會處於作用中狀態 24 小時。或者，您亦可在以時間戳格式建立混合啟用時指定 `--expiration-date`，例如 `2024-08-01T00:00:00`。當您使用 AWS SSM 做為登入資料提供者時，混合節點的節點名稱無法設定，且由 AWS SSM 自動產生。您可以在 Fleet Manager 下的 AWS Systems Manager 主控台中檢視和管理 AWS SSM 受管執行個體。每個 AWS 區域每個帳戶最多可註冊 1，000 個標準[混合啟用節點](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html)，無需額外費用。不過，登錄超過 1,000 個混合節點需要啟用進階執行個體層。使用 advanced-instances 方案會產生費用，而且 [Amazon EKS 混合節點定價](https://aws.amazon.com/eks/pricing/)中未包含該方案。如需詳細資訊，請參閱 [AWS Systems Manager 定價](https://aws.amazon.com/systems-manager/pricing/)。

請參閱以下範例，了解如何使用混合節點 IAM 角色建立 AWS SSM 混合啟用。當您針對混合節點登入資料使用 AWS SSM 混合啟用時，混合節點的名稱將具有 格式，`mi-012345678abcdefgh`且 AWS SSM 佈建的臨時登入資料有效期為 1 小時。使用 AWS SSM 做為登入資料提供者時，您無法變更節點名稱或登入資料持續時間。SSM AWS 會自動輪換臨時登入資料，輪換不會影響節點或應用程式的狀態。

我們建議您每個 EKS 叢集使用一個 AWS SSM 混合啟用，將混合節點 IAM 角色的 AWS SSM `ssm:DeregisterManagedInstance`許可範圍限定為只能取消註冊與您的 AWS SSM 混合啟用相關聯的執行個體。在此頁面上的範例中，使用具有 EKS 叢集 ARN 的標籤，可用於將您的 AWS SSM 混合啟用映射至 EKS 叢集。或者，您也可以根據您的許可界限和要求，使用您偏好的標籤和方法來擴展 AWS SSM 許可。以下命令中的 `REGISTRATION_LIMIT`選項是整數，用於限制可使用 AWS SSM 混合啟用的機器數量 （例如 `10`)

```
aws ssm create-activation \
     --region AWS_REGION \
     --default-instance-name eks-hybrid-nodes \
     --description "Activation for EKS hybrid nodes" \
     --iam-role AmazonEKSHybridNodesRole \
     --tags Key=EKSClusterARN,Value=arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME \
     --registration-limit REGISTRATION_LIMIT
```

如需 AWS SSM [混合啟用可用組態設定的詳細資訊，請參閱建立混合啟用以向 Systems Manager 註冊節點](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html)的說明。

## 隨處設定 AWS IAM 角色
<a name="hybrid-nodes-iam-roles-anywhere"></a>

請遵循《IAM Roles Anywhere 使用者指南》中 [IAM Roles Anywhere 入門](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html)上的指示，設定您要用於混合節點 IAM 角色的臨時 IAM 憑證的信任錨和設定檔。建立設定檔時，您可以選擇建立時不新增任何角色。您可以建立此設定檔，返回可建立混合節點 IAM 角色的步驟，然後在建立角色後，將其新增至您的設定檔。或者，您可以在此頁面稍後使用 AWS CloudFormation 步驟來完成混合節點的 IAM Roles Anywhere 設定。

當您將混合節點 IAM 角色新增至設定檔時，請在 **IAM Roles Anywhere 主控台的編輯設定檔頁面底部的自訂角色工作階段名稱面板中選取接受**自訂角色工作階段名稱。 **** **** AWS 這會對應至 `CreateProfile` API 的 [acceptRoleSessionName](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName) 欄位。這可讓您在引導程序過程中，於傳遞給 `nodeadm` 的組態中，為混合節點提供自訂節點名稱。需要在 `nodeadm init` 過程中傳遞自訂節點名稱。建立設定檔後，您可以更新您的設定檔，以接受自訂角色工作階段名稱。

您可以透過 IAM Roles Anywhere AWS 設定檔的 [durationSeconds](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) 欄位，使用 IAM Roles Anywhere AWS 設定憑證有效性持續時間。預設持續時間為 1 小時，最長為 12 小時。混合節點 IAM 角色上的`MaxSessionDuration`設定必須大於 IAM Roles Anywhere AWS 設定檔上的`durationSeconds`設定。如需有關 `MaxSessionDuration` 的詳細資訊，請參閱 [UpdateRole API 文件](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html)。

從憑證認證機構 (CA) 產生的每個機器憑證和金鑰，必須放置在每個混合節點的 `/etc/iam/pki` 目錄中，其中包含的檔案名稱 `server.pem` 指代憑證，`server.key` 指代金鑰。

## 建立混合節點 IAM 角色
<a name="hybrid-nodes-create-role"></a>

若要執行本節中的步驟，使用 AWS 主控台或 CLI 的 IAM AWS 主體必須具有下列許可。
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ 如果使用 AWS IAM Roles Anywhere
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation
<a name="hybrid-nodes-creds-cloudformation"></a>

如果您尚未安裝和設定 AWS CLI。請參閱[安裝或更新至最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

 ** AWS SSM 混合啟用的步驟** 

CloudFormation 堆疊會使用上述許可來建立混合節點 IAM 角色。CloudFormation 範本不會建立 AWS SSM 混合啟用。

1. 下載混合節點的 AWS SSM CloudFormation 範本：

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ssm-cfn.yaml'
   ```

1. 使用下列選項建立 `cfn-ssm-parameters.json`：

   1. 使用混合節點 IAM 角色的名稱取代 `ROLE_NAME`。根據預設，如果您未指定名稱，CloudFormation 範本會使用 `AmazonEKSHybridNodesRole` 作為其建立的角色的名稱。

   1. `TAG_KEY` 將 取代為您在建立 AWS SSM 混合啟用時使用的 AWS SSM 資源標籤金鑰。標籤索引鍵和標籤值的組合用於 的條件`ssm:DeregisterManagedInstance`，只允許混合節點 IAM 角色取消註冊與您的 AWS SSM 混合啟用相關聯的 AWS SSM 受管執行個體。在 CloudFormation 範本中，`TAG_KEY` 預設為 `EKSClusterARN`。

   1. `TAG_VALUE` 將 取代為您建立 AWS SSM 混合啟用時使用的 AWS SSM 資源標籤值。標籤索引鍵和標籤值的組合用於 的條件`ssm:DeregisterManagedInstance`，只允許混合節點 IAM 角色取消註冊與您的 AWS SSM 混合啟用相關聯的 AWS SSM 受管執行個體。如果您使用 `EKSClusterARN` 的預設值 `TAG_KEY`，則請將您的 EKS 叢集 ARN 作為 `TAG_VALUE` 進行傳遞。EKS 叢集 ARN 的格式為 ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`。

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "SSMDeregisterConditionTagKey": "TAG_KEY",
          "SSMDeregisterConditionTagValue": "TAG_VALUE"
        }
      }
      ```

1. 部署 CloudFormation 堆疊。使用 CloudFormation 堆疊的名稱取代 `STACK_NAME`。

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ssm-cfn.yaml \
       --parameter-overrides file://cfn-ssm-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

 ** AWS IAM Roles Anywhere 的步驟** 

CloudFormation 堆疊會使用您設定的憑證授權機構 AWS (CA) 建立 IAM Roles Anywhere 信任錨點、建立 AWS IAM Roles Anywhere 設定檔，以及使用先前概述的許可建立混合節點 IAM 角色。

1. 設定憑證認證機構 (CA)

   1. 若要使用 AWS Private CA 資源，請開啟 [AWS Private Certificate Authority 主控台](https://console.aws.amazon.com/acm-pca/home)。請遵循《[AWS 私有 CA 使用者指南](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)》中的指示。

   1. 若要使用外部 CA，請遵循 CA 提供的指示。您將在後續步驟中提供憑證內文。

   1. 從公有 CA 核發的憑證不能用作信任錨。

1. 下載混合節點的 AWS IAM Roles Anywhere CloudFormation 範本

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ira-cfn.yaml'
   ```

1. 使用下列選項建立 `cfn-iamra-parameters.json`：

   1. 使用混合節點 IAM 角色的名稱取代 `ROLE_NAME`。根據預設，如果您未指定名稱，CloudFormation 範本會使用 `AmazonEKSHybridNodesRole` 作為其建立的角色的名稱。

   1. 使用可唯一識別您主機的每個機器憑證屬性取代 `CERT_ATTRIBUTE`。在您將混合節點連接至叢集時，您使用的憑證屬性必須與您用於 `nodeadm` 組態的 nodeName 相符。如需更多資訊，請參閱[混合節點 `nodeadm` 參考](hybrid-nodes-nodeadm.md)。根據預設，CloudFormation 範本會將 `${aws:PrincipalTag/x509Subject/CN}` 用作 `CERT_ATTRIBUTE`，而其會對應至每個機器憑證的 CN 欄位。或者，您可以將 `$(aws:PrincipalTag/x509SAN/Name/CN}` 作為 `CERT_ATTRIBUTE` 進行傳遞。

   1. 使用您 CA 的憑證內文取代 `CA_CERT_BODY`，且沒有分行符號。`CA_CERT_BODY` 必須是隱私權增強式郵件 (PEM) 格式。如果您的 CA 憑證採用 PEM 格式，則請先移除分行符號以及 BEGIN CERTIFICATE 和 END CERTIFICATE 行，然後再將 CA 憑證內文放入 `cfn-iamra-parameters.json` 檔案中。

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "CertAttributeTrustPolicy": "CERT_ATTRIBUTE",
          "CABundleCert": "CA_CERT_BODY"
        }
      }
      ```

1. 部署 CloudFormation 範本。使用 CloudFormation 堆疊的名稱取代 `STACK_NAME`。

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ira-cfn.yaml \
       --parameter-overrides file://cfn-iamra-parameters.json
       --capabilities CAPABILITY_NAMED_IAM
   ```

### AWS CLI
<a name="hybrid-nodes-creds-awscli"></a>

如果您尚未安裝和設定 AWS CLI。請參閱[安裝或更新至最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

 **建立 EKS 描述叢集政策** 

1. 使用下列內容建立名為 `eks-describe-cluster-policy.json` 的檔案：

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 使用下列命令建立政策：

   ```
   aws iam create-policy \
       --policy-name EKSDescribeClusterPolicy \
       --policy-document file://eks-describe-cluster-policy.json
   ```

 ** AWS SSM 混合啟用的步驟** 

1. 使用下列內容建立名為 `eks-hybrid-ssm-policy.json` 的檔案。此政策會將授與兩個動作 (`ssm:DescribeInstanceInformation` 和 `ssm:DeregisterManagedInstance`) 的許可。此政策會根據您在信任政策中指定的資源標籤，將`ssm:DeregisterManagedInstance`許可限制為與您的 SSM 混合啟用相關聯的 AWS SSM AWS 受管執行個體。

   1. `AWS_REGION` 將 取代為 AWS SSM 混合啟用 AWS 的區域。

   1. 將 取代`AWS_ACCOUNT_ID`為 AWS 您的帳戶 ID。

   1. `TAG_KEY` 將 取代為您在建立 AWS SSM 混合啟用時使用的 AWS SSM 資源標籤金鑰。標籤索引鍵和標籤值的組合用於 的條件`ssm:DeregisterManagedInstance`，只允許混合節點 IAM 角色取消註冊與您的 AWS SSM 混合啟用相關聯的 AWS SSM 受管執行個體。在 CloudFormation 範本中，`TAG_KEY` 預設為 `EKSClusterARN`。

   1. `TAG_VALUE` 將 取代為您建立 AWS SSM 混合啟用時使用的 AWS SSM 資源標籤值。標籤索引鍵和標籤值的組合用於 的條件`ssm:DeregisterManagedInstance`，只允許混合節點 IAM 角色取消註冊與您的 AWS SSM 混合啟用相關聯的 AWS SSM 受管執行個體。如果您使用 `EKSClusterARN` 的預設值 `TAG_KEY`，則請將您的 EKS 叢集 ARN 作為 `TAG_VALUE` 進行傳遞。EKS 叢集 ARN 的格式為 ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`。

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "ssm:DescribeInstanceInformation",
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "ssm:DeregisterManagedInstance",
                  "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
                  "Condition": {
                      "StringEquals": {
                          "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                      }
                  }
              }
          ]
      }
      ```

1. 使用下列命令建立政策

   ```
   aws iam create-policy \
       --policy-name EKSHybridSSMPolicy \
       --policy-document file://eks-hybrid-ssm-policy.json
   ```

1. 建立名為 `eks-hybrid-ssm-trust.json` 的檔案。`AWS_REGION` 將 取代為 AWS SSM 混合啟用 AWS 的區域，並將 `AWS_ACCOUNT_ID`取代為 AWS 您的帳戶 ID。

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
               }
            }
         }
      ]
   }
   ```

1. 使用下列命令建立角色。

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-ssm-trust.json
   ```

1. 連接 `EKSHybridSSMPolicy` 和您在先前步驟中建立的 `EKSDescribeClusterPolicy`。將 取代`AWS_ACCOUNT_ID`為 AWS 您的帳戶 ID。

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSHybridSSMPolicy
   ```

1. 連接 `AmazonEC2ContainerRegistryPullOnly`和 `AmazonSSMManagedInstanceCore` AWS 受管政策。

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

 **IAM Roles Anywhere AWS 的步驟** 

若要使用 AWS IAM Roles Anywhere，您必須在建立混合節點 AWS IAM 角色之前設定 IAM Roles Anywhere 信任錨點。如需說明，請參閱 [隨處設定 AWS IAM 角色](#hybrid-nodes-iam-roles-anywhere)。

1. 建立名為 `eks-hybrid-iamra-trust.json` 的檔案。使用您在 [隨處設定 AWS IAM 角色](#hybrid-nodes-iam-roles-anywhere) 步驟中建立的信任錨的 ARN 取代 `TRUST_ANCHOR ARN`。此信任政策中的 條件會限制 AWS IAM Roles Anywhere 擔任混合節點 IAM 角色的能力，只有在角色工作階段名稱符合安裝在混合節點上 x509 憑證中的 CN 時，才能交換臨時 IAM 憑證。或者，您也可以使用其他憑證屬性來唯一識別您的節點。您在信任政策中使用的憑證屬性必須對應至您在 `nodeadm` 組態中設定的 `nodeName`。如需更多資訊，請參閱[混合節點 `nodeadm` 參考](hybrid-nodes-nodeadm.md)。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": [
                   "sts:TagSession",
                   "sts:SetSourceIdentity"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           }
       ]
   }
   ```

1. 使用下列命令建立角色。

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-iamra-trust.json
   ```

1. 連接您在先前步驟中建立的 `EKSDescribeClusterPolicy`。將 取代`AWS_ACCOUNT_ID`為 AWS 您的帳戶 ID。

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

1. 連接 `AmazonEC2ContainerRegistryPullOnly` AWS 受管政策

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

### AWS 管理主控台
<a name="hybrid-nodes-creds-console"></a>

 **建立 EKS 描述叢集政策** 

1. 開啟 [Amazon IAM 主控台](https://console.aws.amazon.com/iam/home) 

1. 在左側導覽窗格中選擇 **Policies** (政策)。

1. 在**政策**頁面上，選擇**建立政策**。

1. 在指定許可頁面，在選取服務面板中，選擇 EKS。

   1. 篩選 **DescribeCluster** 的動作，然後選取 **DescribeCluster** Read 動作。

   1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上

   1. 輸入政策的**政策名稱**，例如 `EKSDescribeClusterPolicy`。

   1. 選擇**建立政策**。

 ** AWS SSM 混合啟用的步驟** 

1. 開啟 [Amazon IAM 主控台](https://console.aws.amazon.com/iam/home) 

1. 在左側導覽窗格中選擇 **Policies** (政策)。

1. 在**政策**頁面上，選擇**建立政策**。

1. 在**指定許可**頁面上，在**政策編輯器**右上角導覽中，選擇 **JSON**。貼上下列程式碼片段。`AWS_REGION` 將 取代為 AWS SSM 混合啟用 AWS 的區域，並將 取代`AWS_ACCOUNT_ID`為 AWS 您的帳戶 ID。`TAG_VALUE` 使用您在建立 AWS SSM 混合啟用時使用的 AWS SSM 資源標籤金鑰取代 `TAG_KEY`和 。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeInstanceInformation",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DeregisterManagedInstance",
               "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
               "Condition": {
                   "StringEquals": {
                       "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                   }
               }
           }
       ]
   }
   ```

   1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上。

   1. 輸入政策的**政策**名稱，例如 `EKSHybridSSMPolicy` 

   1. 選擇**建立政策**。

1. 在左側導覽窗格中，選擇 **Roles** (角色)。

1. 在 **Roles** (角色) 頁面上，選擇 **Create role** (建立角色)。

1. 在 **Select trusted entity** (選取信任的實體) 頁面上，執行以下作業：

   1. 在**可信實體類型區段**中，選擇**自訂信任政策**。將下列政策貼到自訂信任政策編輯器。`AWS_REGION` 將 取代為 AWS SSM 混合啟用 AWS 的區域，並將 `AWS_ACCOUNT_ID`取代為 AWS 您的帳戶 ID。

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"",
               "Effect":"Allow",
               "Principal":{
                  "Service":"ssm.amazonaws.com"
               },
               "Action":"sts:AssumeRole",
               "Condition":{
                  "StringEquals":{
                     "aws:SourceAccount":"123456789012"
                  },
                  "ArnEquals":{
                     "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
                  }
               }
            }
         ]
      }
      ```

   1. 選擇下一步。

1. 在**新增許可**頁面上，連接自訂政策或執行下列動作：

   1. 在**篩選政策**方塊中，輸入 `EKSDescribeClusterPolicy` 或您在上文建立的政策名稱。勾選搜尋結果中您的政策名稱左側的核取方塊。

   1. 在**篩選政策**方塊中，輸入 `EKSHybridSSMPolicy` 或您在上文建立的政策名稱。勾選搜尋結果中您的政策名稱左側的核取方塊。

   1. 在 **Filter policies** (篩選政策) 方塊中，輸入 `AmazonEC2ContainerRegistryPullOnly`。勾選搜尋結果中 `AmazonEC2ContainerRegistryPullOnly` 左側的核取方塊。

   1. 在 **Filter policies** (篩選政策) 方塊中，輸入 `AmazonSSMManagedInstanceCore`。勾選搜尋結果中 `AmazonSSMManagedInstanceCore` 左側的核取方塊。

   1. 選擇**下一步**。

1. 在 **Name, review, and create** (命名、檢閱和建立) 頁面上，執行以下作業：

   1. 針對 **Role name** (角色名稱)，為您的角色輸入唯一名稱 (例如 `AmazonEKSHybridNodesRole`)。

   1. 針對 **Description** (描述)，請以描述性文字 (例如 `Amazon EKS - Hybrid Nodes role`) 取代目前的文字。

   1. 選擇建**立角色**。

 **IAM Roles Anywhere AWS 的步驟** 

若要使用 AWS IAM Roles Anywhere，您必須在建立混合節點 AWS IAM 角色之前設定 IAM Roles Anywhere 信任錨點。如需說明，請參閱 [隨處設定 AWS IAM 角色](#hybrid-nodes-iam-roles-anywhere)。

1. 開啟 [Amazon IAM 主控台](https://console.aws.amazon.com/iam/home) 

1. 在左側導覽窗格中，選擇 **Roles** (角色)。

1. 在 **Roles** (角色) 頁面上，選擇 **Create role** (建立角色)。

1. 在 **Select trusted entity** (選取信任的實體) 頁面上，執行以下作業：

   1. 在**可信實體類型區段**中，選擇**自訂信任政策**。將下列政策貼到自訂信任政策編輯器。使用您在 [隨處設定 AWS IAM 角色](#hybrid-nodes-iam-roles-anywhere) 步驟中建立的信任錨的 ARN 取代 `TRUST_ANCHOR ARN`。此信任政策中的 條件會限制 AWS IAM Roles Anywhere 擔任混合節點 IAM 角色的能力，只有在角色工作階段名稱符合安裝在混合節點上 x509 憑證中的 CN 時，才能交換臨時 IAM 憑證。或者，您也可以使用其他憑證屬性來唯一識別您的節點。您在信任政策中使用的憑證屬性必須對應至您在 nodeadm 組態中設定的 nodeName。如需更多資訊，請參閱[混合節點 `nodeadm` 參考](hybrid-nodes-nodeadm.md)。

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": [
                      "sts:TagSession",
                      "sts:SetSourceIdentity"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              }
          ]
      }
      ```

   1. 選擇下一步。

1. 在**新增許可**頁面上，連接自訂政策或執行下列動作：

   1. 在**篩選政策**方塊中，輸入 `EKSDescribeClusterPolicy` 或您在上文建立的政策名稱。勾選搜尋結果中您的政策名稱左側的核取方塊。

   1. 在 **Filter policies** (篩選政策) 方塊中，輸入 `AmazonEC2ContainerRegistryPullOnly`。勾選搜尋結果中 `AmazonEC2ContainerRegistryPullOnly` 左側的核取方塊。

   1. 選擇**下一步**。

1. 在 **Name, review, and create** (命名、檢閱和建立) 頁面上，執行以下作業：

   1. 針對 **Role name** (角色名稱)，為您的角色輸入唯一名稱 (例如 `AmazonEKSHybridNodesRole`)。

   1. 針對 **Description** (描述)，請以描述性文字 (例如 `Amazon EKS - Hybrid Nodes role`) 取代目前的文字。

   1. 選擇建**立角色**。