Amazon EKS pod 実行 IAM ロール - Amazon EKS

Amazon EKS pod 実行 IAM ロール

pods を AWS Fargate インフラストラクチャで実行するために、Amazon EKS pod 実行ロールが必要になります。

クラスターが AWS Fargate インフラストラクチャ上で pods を作成する場合、Fargate インフラストラクチャ上で実行されているコンポーネントは、ユーザーに代わって AWS API にコールを実行する必要があります。これは、Amazon ECR からコンテナイメージをプルしたり、ログを他の AWS サービスにルーティングしたりするなどのアクションを実行できるようにするためです。Amazon EKS pod 実行ロールにより、これらを行うための IAM アクセス許可が付与されます。

Fargate プロファイルを作成する際には、プロファイルを使用して Fargate インフラストラクチャで実行される Amazon EKS コンポーネントのために、pod 実行ロールを指定する必要があります。このロールは、認証のためにクラスターの Kubernetes [Role based access control] (ロールベースのアクセスコントロール) (RBAC) に追加されます。これにより、Fargate インフラストラクチャで実行されている kubelet が Amazon EKS クラスターに登録され、クラスター内でノードとして表示されるようになります。

注記

Fargate プロファイルには、Amazon EC2 ノードグループとは異なる IAM ロールが必要です。

重要

Fargate pod で実行されているコンテナは、pod 実行ロールに関連付けられた IAM アクセス許可を引き受けることはできません。Fargate pod 内のコンテナに他の AWS のサービスへのアクセス許可を付与するには、サービスアカウントの IAM ロール を使用する必要があります。

Fargate プロファイルを作成する前に、AmazonEKSFargatePodExecutionRolePolicy で IAM ロールを作成する必要があります。

正しく設定された既存の pod 実行ロールをチェックする

次の手順を使用して、正しく設定された Amazon EKS の pod 実行ロールがアカウントにすでに存在しているかをチェックします。「混乱した代理」のセキュリティ上の問題を回避するには、ロールが SourceArn に基づいてアクセスを制限することが重要です。必要に応じて実行ロールを変更し、他のクラスター上で Fargate プロファイルのサポートを含めることができます。

IAM コンソールで Amazon EKS pod 実行ロールをチェックするには

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

  2. 左のナビゲーションペインで、[Roles (ロール)] を選択します。

  3. [Roles] (ロール) ページで、ロールの一覧から AmazonEKSFargatePodExecutionRole を検索します。ロールが存在しない場合は、「Amazon EKS の pod 実行ロールの作成」を参照してロールを作成します。ロールが存在する場合は、そのロールを選択します。

  4. [AmazonEKSFargatePodExecutionRole] ページで、次の操作を実行します。

    1. [Permissions] (許可) を選択します。

    2. AmazonEKSFargatePodExecutionRolePolicy Amazon マネージドポリシーがロールにアタッチされていることを確認します。

    3. [Trust relationships (信頼関係)] を選択します。

    4. [Edit trust policy] (信頼ポリシーを編集) を選択します。

  5. [Edit trust policy] (信頼ポリシーを編集) ページで、信頼関係に次のポリシーが含まれており、クラスター上で Fargate プロファイルの行が存在していることを確認します。そうである場合は、[Cancel] (キャンセル) を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    ポリシーは一致するが、クラスター上で Fargate プロファイルを指定する行が存在しない場合は、ArnLike オブジェクトの上部に次の行を追加します。region-code をクラスターが存在する AWS リージョン で、111122223333 をアカウント ID で、my-cluster を自分のクラスター名に置き換えます。

    "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",

    ポリシーが一致しない場合は、前のポリシー全体をフォームにコピーして、[Update policy] (ポリシーの更新) を選択します。region-code をクラスターのある AWS リージョン に置き換えます。アカウントのすべての AWS リージョン で同じロールを使用する場合は、region-code* で置き換えます。111122223333 をアカウント ID に置き換え、my-cluster を自分のクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、my-cluster* に置き換えます。

Amazon EKS の pod 実行ロールの作成

クラスター用の Amazon EKS pod 実行ロールをまだお持ちでない場合は、AWS Management Console または AWS CLI を使用して作成できます。

AWS Management Console

AWS Management Console を使用して AWS Fargate ポッド実行ロールを作成するには

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

  2. 左のナビゲーションペインで、[Roles (ロール)] を選択します。

  3. [ロール] ページで、[ロールの作成] を選択します。

  4. [Select trusted entity] (信頼されたエンティティを選択) ページで、以下の操作を実行します。

    1. [Trusted entity type] (信頼するエンティティのタイプ) で [AWS service] (サービス) を選択します。

    2. [Use cases for other AWS のサービス] (他の のユースケース) ドロップダウンリストから、[EKS] を選択します。

    3. [EKS - Fargate pod] (EKS - Fargate ポッド) を選択します。

    4. [Next] を選択します。

  5. [Add permissions] (アクセス許可を追加する) ページで Next (次へ) を選択します。

  6. [Name, review, and create] (名前を付けて、レビューし、作成する) ページで、以下の操作を実行します。

    1. [Role name] (ロール名) に、AmazonEKSFargatePodExecutionRole などのロールの一意の名前を入力します。

    2. [Add tags (Optional)] (タグの追加(オプション)) で、タグをキーバリューのペアとして添付して、メタデータをロールに追加します。IAM でのタグの使用の詳細については、[IAM User Guide] (IAM ユーザーガイド) の「[Tagging IAM Entities] (IAM エンティティのタグ付け)」を参照してください。

    3. [ロールの作成] を選択します。

  7. [Roles] (ロール) ページで、ロールの一覧から AmazonEKSFargatePodExecutionRole を検索します。ロール を選択します。

  8. [AmazonEKSFargatePodExecutionRole] ページで、次の操作を実行します。

    1. [Trust relationships (信頼関係)] を選択します。

    2. [Edit trust policy] (信頼ポリシーを編集) を選択します。

  9. [Edit trust policy] (信頼ポリシーを編集) ページで、次の操作を実行します。

    1. 次の内容をコピーして、[Edit trust policy] (信頼ポリシーを編集) フォームに貼り付けます。region-code を、クラスターが存在する AWS リージョン で置き換えます。アカウントのすべての AWS リージョン で同じロールを使用する場合は、region-code* で置き換えます。111122223333 をアカウント ID に置き換え、my-cluster を自分のクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、my-cluster* に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. [ポリシーの更新] を選択します。

AWS CLI

AWS CLI を使用して AWS Fargate ポッド実行ロールを作成するには

  1. 次の内容をコピーして、pod-execution-role-trust-policy.json という名前のファイルに貼り付けます。region-code を、クラスターが存在する AWS リージョン で置き換えます。アカウントのすべての AWS リージョン で同じロールを使用する場合は、region-code* で置き換えます。111122223333 をアカウント ID に置き換え、my-cluster を自分のクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、my-cluster* に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. pod 実行 IAM ロールを作成します。

    aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
  3. このロールに、必要な Amazon EKS 管理の IAM ポリシーをアタッチします。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole