

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

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

# ハイブリッドノードの認証情報を準備する
認証情報を準備する

Amazon EKS Hybrid Nodes は、AWS SSM ハイブリッドアクティベーションまたは AWS IAM Roles Anywhere によってプロビジョニングされた一時的な IAM 認証情報を使用して、Amazon EKS クラスターで認証します。Amazon EKS Hybrid Nodes CLI (`nodeadm`) を用いて、AWS SSM ハイブリッドアクティベーションまたは AWS IAM Roles Anywhere を使用する必要があります。AWS SSM ハイブリッドアクティベーションと AWS IAM Roles Anywhere の両方を使用しないでください。認証局 (CA) およびオンプレミス環境の証明書を持つ既存の公開鍵基盤 (PKI) がない場合、AWS SSM ハイブリッドアクティベーションを使用することをお勧めします。既存の PKI と証明書がオンプレミスにある場合は、AWS IAM Roles Anywhere を使用します。

## ハイブリッドノードの IAM ロール


ハイブリッドノードを Amazon EKS クラスターに接続する前に、SSM ハイブリッドアクティベーションで使用する AWS IAM ロールまたはハイブリッドノードの認証情報用の AWS IAM Roles Anywhere を作成する必要があります。クラスターの作成後、Amazon EKS アクセスエントリまたは `aws-auth` ConfigMap エントリでこのロールを使用して、IAM ロールを Kubernetes ロールベースのアクセスコントロール (RBAC) にマッピングします。ハイブリッドノードの IAM ロールと Kubernetes RBAC の関連付けの詳細については、「[ハイブリッドノードのクラスターアクセスを準備する](hybrid-nodes-cluster-prep.md)」を参照してください。

ハイブリッドノードの IAM ロールには、以下のアクセス許可が必要です。
+ ハイブリッドノードを接続するクラスターに関する情報を収集するための `eks:DescribeCluster` アクションを、`nodeadm` が使用するためのアクセス許可。`eks:DescribeCluster` アクションを有効にしない場合は、`nodeadm init` コマンドに渡すノード設定で、Kubernetes API エンドポイント、クラスター CA バンドル、およびサービス IPv4 CIDR を渡す必要があります。
+ ハイブリッドノードを接続するクラスターのアクセスエントリを一覧表示するための `eks:ListAccessEntries` アクションを、`nodeadm` が使用するためのアクセス許可。`eks:ListAccessEntries` アクションを有効にしない場合は、`nodeadm init` コマンドの実行時に `--skip cluster-access-validation` フラグを渡す必要があります。
+ kubelet が「[AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)」 ポリシーで定義されているように、 Amazon Elastic Container Registry (Amazon ECR) のコンテナイメージを使用するためのアクセス許可。
+ AWS SSM を使用している場合、[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 ハイブリッドアクティベーションを使用するための `nodeadm init` のアクセス許可。
+ AWS SSM を使用している場合、`nodeadm uninstall` がインスタンスを登録解除するために `ssm:DeregisterManagedInstance` アクションと `ssm:DescribeInstanceInformation` アクションを使用するためのアクセス許可。
+ (オプション) Amazon EKS Pod Identity エージェントが `eks-auth:AssumeRoleForPodIdentity` アクションを使用してポッドの認証情報を取得するためのアクセス許可。

## AWS SSM ハイブリッドアクティベーションのセットアップ


AWS SSM ハイブリッドアクティベーションを設定する前に、ハイブリッドノードの IAM ロールを作成して設定する必要があります。詳細については、「[ハイブリッドノードの IAM ロールを作成する](#hybrid-nodes-create-role)」を参照してください。「AWS Systems Manager ユーザーガイド」の「[Systems Manager にハイブリッドノードを登録するためのハイブリッドアクティベーションの作成](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html)」の指示に従って、ハイブリッドノード用の AWS SSM ハイブリッドアクティベーションを作成します。受け取ったアクティベーションコードと ID は、ホストを Amazon EKS クラスターのハイブリッドノードとして登録する際に、`nodeadm` で使用されます。ハイブリッドノード用の Amazon EKS クラスターを作成し準備した後は、このステップに戻ることができます。

**重要**  
アクティベーションの作成方法に応じて、Systems Manager はすぐにアクティベーションコードと ID をコンソールまたはコマンドウィンドウに返します。この情報をコピーして、安全な場所に保管します。コンソールから離れたり、コマンドウィンドウを閉じたりすると、この情報は失われる可能性があります。紛失した場合は、新しいアクティベーションを作成する必要があります。

デフォルトでは、AWS SSM ハイブリッドアクティベーションは 24 時間アクティブになります。または、ハイブリッドアクティベーションを作成する際に、`2024-08-01T00:00:00` のようなタイムスタンプ形式で `--expiration-date` を指定することもできます。認証情報プロバイダーとして AWS SSM を使用する場合、ハイブリッドノードのノード名は設定できず、AWS SSM によって自動生成されます。AWS SSM マネージドインスタンスは、Fleet Manager の AWS Systems Manager コンソールで表示および管理できます。追加コストなしで、アカウントにつき AWS リージョンごとに最大 1,000 のスタンダード[ハイブリッドアクティベーションノード](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html)を登録できます。ただし、1,000 を超えるハイブリッドノードを登録するには、アドバンストインスタンス層のアクティブ化が必要です。これには、[Amazon EKS Hybrid Nodes の料金](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 を認証情報プロバイダーとして使用する場合、ノード名または認証情報の期間を変更することはできません。一時的な認証情報は AWS SSM によって自動的にローテーションされ、ローテーションはノードやアプリケーションのステータスには影響しません。

ハイブリッドノードの IAM ロールの AWS SSM の `ssm:DeregisterManagedInstance` アクセス許可の範囲を、お使いの AWS SSM ハイブリッドアクティベーションに関連付けられたインスタンスしか登録解除できないよう制限するために、EKS クラスターごとに 1 つの 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 Roles Anywhere の設定


「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 ロールをプロファイルに追加するときは、AWS IAM Roles Anywhere コンソールの **[プロファイルの編集]** ページの下部にある **[カスタムロール]** セッション名パネルで **[カスタムロールセッション名を受け入れる]** を選択します。これは `CreateProfile` API の [acceptRoleSessionName](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName) フィールドに対応します。これにより、ブートストラッププロセス中に `nodeadm` に渡す設定内で、ハイブリッドノードのカスタムノード名を指定できます。`nodeadm init` プロセス中にカスタムノード名を渡す必要があります。プロファイルの作成後、カスタムロールセッション名を受け入れるようにプロファイルを更新できます。

AWS IAM Roles Anywhere では、AWS IAM Roles Anywhere プロファイルの [durationSeconds](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) フィールドを通して認証情報の有効期間を設定できます。デフォルトの期間は 1 時間で、最大は 12 時間です。ハイブリッドノードの IAM ロールでの `MaxSessionDuration` 設定は、AWS IAM Roles Anywhere プロファイルの `durationSeconds` 設定よりも大きくする必要があります。`MaxSessionDuration` の詳細については、「[UpdateRole API documentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html)」を参照してください。

認証機関 (CA) から生成するマシンごとの証明書とキーは、ファイル名を証明書は `server.pem`、キーは `server.key` として、各ハイブリッドノードの `/etc/iam/pki` ディレクトリに配置する必要があります。

## ハイブリッドノードの IAM ロールを作成する


このセクションのステップを実行するには、AWS コンソールまたは AWS CLI を使用する IAM プリンシパルに以下のアクセス許可が必要です。
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ AWS IAM Roles Anywhere を使用している場合
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation


まだである場合は、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. `ROLE_NAME` をハイブリッドノードの IAM ロールの名前に置き換えます。デフォルトでは、名前を指定しない場合、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 ハイブリッドアクティベーションの作成時に使用した SSM AWS リソースタグ値に置き換えます。タグキーとタグ値の組み合わせは、`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 スタックをデプロイします。`STACK_NAME` は、その CloudFormation スタックに付けた任意の名前に置き換えてください。

   ```
   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 スタックは、設定した認証機関 (CA) を使用して AWS 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 Private 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. `ROLE_NAME` をハイブリッドノードの IAM ロールの名前に置き換えます。デフォルトでは、名前を指定しない場合、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_CERT_BODY` を、CA の証明書本文から改行を取り除いたものに置き換えます。`CA_CERT_BODY` は、プライバシー強化メール (PEM) 形式である必要がありす。PEM 形式の CA 証明書がある場合は、CA 証明書本文を `cfn-iamra-parameters.json` ファイルに配置する前に、改行と BEGIN CERTIFICATE 行と END CERTIFICATE 行を削除します。

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

1. CloudFormation テンプレートをデプロイする。`STACK_NAME` は、その CloudFormation スタックに付けた任意の名前に置き換えてください。

   ```
   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


まだである場合は、AWS CLI をインストールして設定します。「[AWS CLI の最新バージョンのインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

 **EKS DescribeCluster ポリシーを作成する** 

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` の 2 つのアクションのアクセス許可を付与します。このポリシーは、`ssm:DeregisterManagedInstance` へのアクセス許可の範囲を、信頼ポリシーで指定したリソースタグに基づき、AWS SSM ハイブリッドアクティベーションに関連付けられた AWS SSM マネージドインスタンスに制限します。

   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 ハイブリッドアクティベーションの作成時に使用した SSM AWS リソースタグ値に置き換えます。タグキーとタグ値の組み合わせは、`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. 前のステップで作成した `EKSDescribeClusterPolicy` と `EKSHybridSSMPolicy` をアタッチします。`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
   ```

 **AWS IAM Roles Anywhere のステップ** 

AWS IAM Roles Anywhere を使用するには、ハイブリッドノードの IAM ロールを作成する前に、AWS IAM Roles Anywhere のトラストアンカーを設定する必要があります。手順については「[AWS IAM Roles Anywhere の設定](#hybrid-nodes-iam-roles-anywhere)」を参照してください。

1. `eks-hybrid-iamra-trust.json` という名前のファイルを作成します。`TRUST_ANCHOR ARN` を、[AWS IAM Roles Anywhere の設定](#hybrid-nodes-iam-roles-anywhere) のステップで作成したトラストアンカーの ARN に置き換えます。この信頼ポリシーの条件は、AWS IAM Roles Anywhere がハイブリッドノードの IAM ロールを引き受けて一時的な IAM 認証情報を交換する機能を、ロールセッション名がハイブリッドノードにインストールされている x509 証明書の CN と一致する場合のみに制限します。別の方法として、他の証明書属性を使用してノードを一意に識別することもできます。信頼ポリシーで使用する証明書属性は、`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 マネジメントコンソール


 **EKS DescribeCluster ポリシーを作成する** 

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

1. 左のナビゲーションペインの [**ポリシー**] を選択します。

1. **[ポリシー]** ページで、**[ポリシーの作成]** を選択します。

1. [アクセス許可を指定] ページの [サービスの選択] パネルで、[EKS] を選択します。

   1. **DescribeCluster** でアクションをフィルタリングし、**DescribeCluster** の Read アクションを選択します。

   1. [**次へ**] を選択します。

1. **[確認と作成]** ページで以下を行います。

   1. ポリシーの**ポリシー名**を、たとえば `EKSDescribeClusterPolicy` のように入力します。

   1. [**Create policy**] (ポリシーの作成) を選択します。

 **AWS SSM ハイブリッドアクティベーションのステップ** 

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

1. 左のナビゲーションペインの [**ポリシー**] を選択します。

1. **[ポリシー]** ページで、**[ポリシーの作成]** を選択します。

1. **[アクセス許可を指定]** ページの **[ポリシーエディタ]** の右上のナビゲーションで、**[JSON]** を選択します。以下のスニペットを貼り付けます。`AWS_REGION` を AWS SSM ハイブリッドアクティベーションの AWS リージョンに置き換え、`AWS_ACCOUNT_ID` をお使いの AWS アカウント ID に置き換えます。`TAG_KEY` と `TAG_VALUE` を、AWS SSM ハイブリッドアクティベーションの作成時に使用した AWS SSM リソースのタグキーに置き換えます。

   ```
   {
       "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. 左のナビゲーションペインで、**[ロール]** を選択してください。

1. **[ロール]** ページで、**[ロールの作成]** を選択してください。

1. **[信頼されたエンティティを選択]** ページで、以下の操作を実行してください：

   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. **[フィルタポリシー]** ボックスに `AmazonEC2ContainerRegistryPullOnly` と入力します。検索結果の `AmazonEC2ContainerRegistryPullOnly` の左にあるチェックボックスを選択します。

   1. **[フィルタポリシー]** ボックスに `AmazonSSMManagedInstanceCore` と入力します。検索結果の `AmazonSSMManagedInstanceCore` の左にあるチェックボックスを選択します。

   1. [**次へ**] を選択します。

1. **[名前を付けて、レビューし、作成する]** ページで、以下の操作を実行します。

   1. **[ロール名]** に、`AmazonEKSHybridNodesRole` などのロールの一意の名前を入力します。

   1. **[Description]** (説明) では、現在のテキストを「`Amazon EKS - Hybrid Nodes role`」などの説明文に置き換えます。

   1. [**ロールの作成**] を選択してください。

 **AWS IAM Roles Anywhere のステップ** 

AWS IAM Roles Anywhere を使用するには、ハイブリッドノードの IAM ロールを作成する前に、AWS IAM Roles Anywhere のトラストアンカーを設定する必要があります。手順については「[AWS IAM Roles Anywhere の設定](#hybrid-nodes-iam-roles-anywhere)」を参照してください。

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

1. 左のナビゲーションペインで、**[ロール]** を選択してください。

1. **[ロール]** ページで、**[ロールの作成]** を選択してください。

1. **[信頼されたエンティティを選択]** ページで、以下の操作を実行してください：

   1. **[信頼されたエンティティのタイプ]** セクションで **[カスタム信頼ポリシー]** を選択します。以下をカスタム信頼ポリシーエディタに貼り付けます。`TRUST_ANCHOR ARN` を、[AWS IAM Roles Anywhere の設定](#hybrid-nodes-iam-roles-anywhere) のステップで作成したトラストアンカーの ARN に置き換えます。この信頼ポリシーの条件は、AWS IAM Roles Anywhere がハイブリッドノードの IAM ロールを引き受けて一時的な IAM 認証情報を交換する機能を、ロールセッション名がハイブリッドノードにインストールされている x509 証明書の CN と一致する場合のみに制限します。別の方法として、他の証明書属性を使用してノードを一意に識別することもできます。信頼ポリシーで使用する証明書属性は、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. **[フィルタポリシー]** ボックスに `AmazonEC2ContainerRegistryPullOnly` と入力します。検索結果の `AmazonEC2ContainerRegistryPullOnly` の左にあるチェックボックスを選択します。

   1. [**次へ**] を選択します。

1. **[名前を付けて、レビューし、作成する]** ページで、以下の操作を実行します。

   1. **[ロール名]** に、`AmazonEKSHybridNodesRole` などのロールの一意の名前を入力します。

   1. **[Description]** (説明) では、現在のテキストを「`Amazon EKS - Hybrid Nodes role`」などの説明文に置き換えます。

   1. [**ロールの作成**] を選択してください。