クラスターのユーザーまたは IAM ロールの管理 - Amazon EKS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

クラスターのユーザーまたは IAM ロールの管理

Amazon EKS クラスターを作成すると、このクラスターを作成した IAM エンティティユーザーまたはロール (例: フェデレーティッドユーザー) は、クラスターの RBAC 設定で system:masters のアクセス許可が自動的に付与されます。クラスターを操作する権限を他の AWS ユーザーやロールに付与するには、Kubernetes 内の aws-auth ConfigMap を編集する必要があります。

注記

さまざまな IAM アイデンティティの詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html の「IAM ユーザーガイドアイデンティティ (ユーザー、グループ、ロール)」を参照してください。Kubernetes の RBAC 設定の詳細については、RBAC 認可の使用を参照してください。すべてのConfigMap設定については、 の完全設定形式を参照してください。GitHub

aws-authConfigMapはAmazon EKS の開始方法、 Amazon EKSクラスターの作成からサンプル Kubernetes アプリケーションのデプロイまでの詳細なチュートリアルを提供するガイドの一部として適用されます。最初、ノードがクラスターに参加できるように作成されますが、これを使用して IAM ユーザーとロールにも RBAC アクセスを追加します。ConfigMapノードを起動して aws-auth ConfigMap を適用していない場合は、次の手順で適用できます。

をクラスターに適用するにはaws-authConfigMap

  1. がすでに適用されているかどうかを確認しますaws-authConfigMap。

    kubectl describe configmap -n kube-system aws-auth

    Error from server (NotFound): configmaps "aws-auth" not found」というエラーが表示された場合は、以下のステップを実行して株式を適用しますConfigMap。

  2. AWS オーセンティケーター設定マップをダウンロード、編集、適用します。

    1. クラスターがあるリージョンに対応するコマンドを使用して、設定マップをダウンロードします。

      • リージョン以外のすべての中国リージョン。

        curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-08-12/aws-auth-cm.yaml
      • 北京および寧夏中国リージョン.

        curl -o aws-auth-cm.yaml https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-08-12/aws-auth-cm.yaml
    2. 任意のテキストエディタでファイルを開きます。ノードに関連付けられた <ARN of instance role (not instance profile)> ロールAmazon リソースネーム (ARN)の に置き換えて、ファイルを保存します。IAMこのファイルの他の行は変更しないでください。

      重要

      ロール ARN にパスを含めることはできません。ロール ARN の形式は である必要がありますarn:aws:iam::<123456789012>:role/<role-name>。 詳細については、「」を参照してくださいaws-auth ConfigMapがクラスターへのアクセスを許可しない

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

      ワーカーノードグループの AWS CloudFormation スタック出力を検査し、次の値を探すことができます。

      • InstanceRoleARN( で作成されたノードグループの場合eksctl)

      • NodeInstanceRole( で発行されたAmazon EKSテンプレートを使用して作成されたノードグループの場合AWS CloudFormation)AWS マネジメントコンソール

    3. 設定を適用します。このコマンドが完了するまで数分かかることがあります。

      kubectl apply -f aws-auth-cm.yaml
      注記

      その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。

  3. ノードのステータスを監視し、Ready ステータスになるまで待機します。

    kubectl get nodes --watch

IAM ユーザーまたはロールを Amazon EKS クラスターに追加するには

  1. kubectl が使用している AWS 認証情報が、クラスターですでに認証されていることを確認します。クラスターを作成した IAM ユーザーには、デフォルトでこれらのアクセス許可が付与されています。

  2. を開きますaws-authConfigMap。

    kubectl edit -n kube-system configmap/aws-auth
    注記

    Error from server (NotFound): configmaps "aws-auth" not found」というエラーが表示された場合は、前の手順を使用して株式を適用しますConfigMap。

    例ConfigMap:

    apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF username: system:node:{{EC2PrivateDNSName}} kind: ConfigMap metadata: creationTimestamp: "2020-09-30T21:09:18Z" name: aws-auth namespace: kube-system resourceVersion: "1021" selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth uid: dcc31de5-3838-11e8-af26-02e00430057c
  3. IAMユーザー、ロール、またはAWSアカウントを に追加しますconfigMap。 にIAMグループを追加することはできませんconfigMap。

    • ロール (IAMフェデレーティッドユーザーなど) を追加するには、 ロールの詳細を mapRolesのセクションConfigMapに追加しますdata。 ファイルに存在しない場合は、このセクションを追加します。各エントリは、次のパラメータをサポートしています。

      • rolearn: 追加する ARN ロールIAMの 。

      • ユーザー名: IAMロールにマッピングする Kubernetes 内のユーザー名。

      • グループ: ロールがマッピングされる Kubernetes 内のグループのリスト。詳細については、Kubernetes ドキュメントのデフォルトのロールとロールのバインディングを参照してください。

    • ユーザーIAMを追加するには: の下の mapUsersセクションのユーザーにユーザーの詳細ConfigMapを追加しますdata。 ファイルに存在しない場合は、このセクションを追加します。各エントリは、次のパラメータをサポートしています。

      • userarn: 追加するARNユーザーの 。IAM

      • ユーザー名: ユーザーにマッピングする Kubernetes 内のIAMユーザー名。

      • グループ: ユーザーがマッピングされている Kubernetes 内のグループのリスト。詳細については、Kubernetes ドキュメントのデフォルトのロールとロールのバインディングを参照してください。

    たとえば、次のブロックには以下が含まれます。

    • ノードが自身をクラスターに登録できるようにノードインスタンスロールを追加するmapRolesセクション。

    • mapUsers セクション。デフォルトの AWS アカウントの AWS ユーザー admin と、別の AWS アカウントの ops-user が含まれます。いずれのユーザーも system:masters グループに追加されます。

    すべての <example-values> ( を含む<>) を独自の値に置き換えます。

    # Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - rolearn: <arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF> username: <system:node:{{EC2PrivateDNSName}}> groups: - <system:bootstrappers> - <system:nodes> mapUsers: | - userarn: <arn:aws:iam::111122223333:user/admin> username: <admin> groups: - <system:masters> - userarn: <arn:aws:iam::111122223333:user/ops-user> username: <ops-user> groups: - <system:masters>
  4. ファイルを保存し、テキストエディタを終了します。