【AWS】EKSアクセスエントリに複数ユーザをグループとして登録したい

## はじめに
Amazon EKSのアクセス制御方法で2023年12月のアップデートによりアクセスエントリというConfigMapを使用しない新たな方式が使用できるようになりました。

https://aws.amazon.com/jp/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/

詳細はこちらの記事でもご紹介しております。

https://qiita.com/triple321jhango/items/c03276b3fdbd7e63007c

## 課題
こちらの方法、実務で使用する際に課題となっていたのがアクセスエントリへの登録はIAMユーザまたはIAMロールを指定できるのですが、EKSクラスターを操作できる複数のIAMユーザを都度アクセスエントリに追加するのは運用上煩雑になるのでやりたくないと思い、IAMグループを指定して運用する方法はないかと模索していました。

## 結論
試行錯誤した結果、IAMグループが直接アクセスエントリへ登録することができないため、特定のIAMグループに所属するユーザに`sts:AssumeRole`権限を付与することで、そのユーザが特定のロール (この場合EKSを操作できる権限)にスイッチすることで、解決します。
全体像は以下のイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/d5522dd4-3a0f-a83a-d2ad-e08b8b458897.png)


方法は以降で解説します。


## EKSを操作する専用の一時的な認証情報を持ったポリシーを作成
ResourceにアカウントIDを指定して、指定されたアカウントIDはロールを引き受けることができるポリシーを作成する。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/d7de747d-67fe-c657-0469-1dc9517a7ba5.png)
<font color="DeepPink">※eks-access-swhitch-roleは後述しますが、EKSリソースを操作するための権限を持ったロールです</font>
ポリシー名: `eks-access-switch-policy`

```json:iampolicy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::{アカウントID}:role/eks-access-swhitch-role"
        }
    ]
}
```
このポリシーを特定のIAMグループにアタッチすることで、そのアカウントのIAMグループ内のユーザは特定のロールにスイッチすることができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/5ee68194-fc66-b954-e031-575c84d7bbf9.png)

## EKSを操作できるポリシーを作成
ポリシー名: `eks-access-policy`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/832dd0a0-50c4-1d61-35a4-789d45f466da.png)


## EKSにアクセスする専用のIAMロールを作成

ロール名: `eks-access-swhitch-role`

1.ロールを作成から信頼されたエンティティタイプを[AWSアカウントを選択]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/9401da7e-17e3-9816-67c3-e252e7b5be2e.png)


2.AWSアカウントを[このアカウント]を選択し[次へ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/54e9bdd0-e091-14ae-65a2-5a62e73c8863.png)

3.許可するポリシーを選択
先ほど作成した`eks-access-policy`のポリシーを選択します



4.ロール名を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/8681a42b-60fd-2b41-ad47-12f426aa56b2.png)

信頼されたエンティティタイプで[AWSアカウント]を選択すると、デフォルトで以下のようになっているので、そのままロールを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/251772db-0631-99ec-5375-1f9c59e6e380.png)


## EKSアクセスエントリに作成したロールをアタッチする
EKSの画面から[アクセスエントリの作成]を選択し、先ほど作成したIAMプリンシパルARNを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/ac641107-0599-50a8-a4e4-6d44bd1f6b2d.png)

ポリシー名の選択で[AmazonEKSClusterAdminPolicy]を選択し作成
![File (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/d58893dd-fbdf-5cd6-3c96-e3af51a56a10.jpeg)

## スイッチロールする
ここまでで準備が整いましたので、スイッチロールしてみます。
eks-access-swhitch-roleの[コンソールでロールの切り替えるためのリンク]をコピー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/26a88640-f280-b2a7-3a8e-b20c106055f4.png)


リンクにアクセスする[とSwhitch Role]の画面が表示されるため、必要に応じてDisplay nameとDisplay colorを入力をおよび選択し[Switch Role]します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/3575dda5-1692-b933-d991-b289a699af74.png)

スイッチロールした画面でEKSクラスターのコンピューティングの内容などが問題なく閲覧できていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379725/37239fa5-fb03-8624-f9b2-f9ad96a08fe7.png)