「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
クラスターのユーザーまたは IAM ロールの管理
Amazon EKS クラスターを作成すると、このクラスターを作成した IAM エンティティユーザーまたはロール (例: フェデレーティッドユーザー) は、コントロールプレーンのクラスターの RBAC 設定で system:masters
のアクセス許可が自動的に付与されます。この IAM エンティティは、ConfigMap やその他の表示可能な設定には表示されません。そのため、もともとクラスターを作成した
IAM エンティティを必ず追跡してください。クラスターを操作する権限を他の AWS ユーザーやロールに付与するには、Kubernetes 内の aws-auth
ConfigMap を編集する必要があります。
さまざまな IAM アイデンティティの詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html の「IAM ユーザーガイドアイデンティティ (ユーザー、グループ、ロール)」を参照してください。Kubernetes の RBAC 設定の詳細については、RBAC 認可の使用
aws-auth
ConfigMap は、 の使用を開始するAmazon EKSガイドの一部として適用されます。このガイドでは、Amazon EKS クラスターの作成からサンプル Kubernetes アプリケーションのデプロイまで、最初から終わりまでのウォークスルーを行います。最初はノードがクラスターに参加できるように作成されていますが、この
ConfigMap を使用して IAM ユーザーとロールに RBAC アクセスを追加する必要もあります。ノードを起動しておらずaws-auth
ConfigMap を適用していない場合は、次の手順で実行できます。
aws-auth
ConfigMap をクラスターに適用するには
-
aws-auth
ConfigMap が適用済みであるかどうかを確認します。kubectl describe configmap -n kube-system aws-auth
「
Error from server (NotFound): configmaps "aws-auth" not found
」というエラーが表示された場合は、以下のステップを実行してストック ConfigMap を適用します。 -
AWS オーセンティケーター設定マップをダウンロード、編集、適用します。
-
設定マップをダウンロードします。
curl -o aws-auth-cm.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
任意のテキストエディタでファイルを開きます。をノードに関連付けられた
<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 マネジメントコンソール用)
-
-
設定を適用します。このコマンドが完了するまで数分かかることがあります。
kubectl apply -f aws-auth-cm.yaml
注記 その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。
-
-
ノードのステータスを監視し、
Ready
ステータスになるまで待機します。kubectl get nodes --watch
IAM ユーザーまたはロールを Amazon EKS クラスターに追加するには
-
AWS が使用している
kubectl
認証情報が、クラスターですでに認証されていることを確認します。クラスターを作成した IAM ユーザーには、デフォルトでこれらのアクセス許可が付与されています。 -
aws-auth
ConfigMap を開きます。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
-
IAM ユーザー、ロール、または AWS アカウントを configMap に追加します。configMap にIAMグループを追加することはできません。
-
IAM ロールを (たとえば、フェデレーティッドユーザー) に追加するには、 ConfigMap の
mapRoles
セクションのdata
の下にロールの詳細を追加します。ファイルに存在しない場合は、このセクションを追加します。各エントリは、次のパラメータをサポートしています。-
rolearn: 追加する ARN ロールの IAM 。
-
username: IAM ロールにマッピングする Kubernetes 内のユーザー名。
-
groups: ロールがマッピングされている、Kubernetes 内のグループのリスト。詳細については、Kubernetes ドキュメントのデフォルトのロールとロールのバインディング
を参照してください。
-
-
IAM ユーザーを追加するには、ConfigMap の
mapUsers
セクションのdata
の下にユーザーの詳細を追加します。ファイルに存在しない場合は、このセクションを追加します。各エントリは、次のパラメータをサポートしています。-
userarn: 追加する ARN ユーザーの IAM。
-
username: IAM ユーザーにマッピングする Kubernetes 内のユーザー名。
-
groups: ユーザーがマッピングされている、Kubernetes 内のグループのリスト。詳細については、Kubernetes ドキュメントのデフォルトのロールとロールのバインディング
を参照してください。
-
たとえば、次のブロックには以下が含まれます。
-
ノードがクラスターに自身を登録できるように、ノードインスタンスロールを追加する
mapRoles
セクション。 -
mapUsers
セクション。デフォルトのadmin
アカウントの AWS ユーザー AWS と、別のops-user
アカウントの AWS が含まれます。いずれのユーザーも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>
-
-
ファイルを保存し、テキストエディタを終了します。
-
ユーザーまたはロールをマッピングした Kubernetes IAM ユーザーまたはグループが、
RoleBinding
または を使用して Kubernetes ロールにバインドされていることを確認しますClusterRoleBinding
。詳細については、Kubernetes ドキュメントの RBAC 認証の使用を参照してください。および clusterrole
またはclusterrolebinding
と を作成する次のマニフェスト例をダウンロードできますrole
rolebinding
。-
[View Kubernetes resources in all namespaces– (Kubernetes リソースのすべての名前空間で表示)] ファイルのグループ名は です。これは
eks-console-dashboard-full-access-group
、IAMユーザーまたはロールをaws-auth
configmap で にマッピングする必要があるグループです。必要に応じて、クラスターに適用する前にグループの名前を変更し、configmap でそのグループにIAMユーザーまたはロールをマッピングできます。ファイルを以下からダウンロードします。https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
-
特定の名前空間の Kubernetes リソースを表示する – このファイルの名前空間は であるため
default
、別の名前空間を指定する場合は、 ファイルを編集してからクラスターに適用します。ファイルのグループ名は です。これはeks-console-dashboard-restricted-access-group
、IAMユーザーまたはロールをaws-auth
configmap でマッピングする必要があるグループです。必要に応じて、クラスターに適用する前にグループの名前を変更し、configmap でそのグループにIAMユーザーまたはロールをマッピングできます。ファイルを以下からダウンロードします。https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
-
-
(オプション) configmap に追加したユーザーが View ノード または を ワークロードの表示 で使用できるようにするにはAWS マネジメントコンソール、ユーザーまたはロールに Kubernetes のリソースを表示するための適切なアクセス許可が必要ですが、 でそれらのリソースを表示するための適切なIAMアクセス許可も必要ですAWS マネジメントコンソール。詳細については、「 」を参照してくださいですべてのクラスターのノードとワークロードを表示する AWS マネジメントコンソール