1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CDKでSSOのRoleをEKSのmastersRoleに登録する方法

Last updated at Posted at 2024-12-05

概要

Identity Centerで作成したSSO用Roleの認証情報を利用して、kubectlコマンドを叩きたい場合、K8sのRBACに登録する(認可)必要があります。

通常はCLIやコンソールを利用すれば作成したユーザーがmastersRoleとして登録されるますがCDKの場合勝手が違って大変だったので記事にします。

解決策

SSO用RoleのARNを一部改変する必要があります。

arn:aws:iam::XXXXXXXXXXXX:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX

arn:aws:iam::XXXXXXXXXXXX:role/AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX

改変したARNでmastersRoleを設定することで起動時にSSO用RoleがRBACに登録されます。

const eksCluster = new eks.FargateCluster(this, 'EksCluster', {
    version: eks.KubernetesVersion.V1_31, // EKSのバージョン
    kubectlLayer: new KubectlV30Layer(this, 'KubectlLayer'),
    vpc: vpcForEks,
    albController: {
        version: eks.AlbControllerVersion.V2_8_2, // ALB Ingress Controllerのバージョン,
    },
    mastersRole: iam.Role.fromRoleArn(this, 'EksMasterRole', 'arn:aws:iam::XXXXXXXXXXXX:role//AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX'),
});

EKSのRBACとIAMの繋がり

https://dev.classmethod.jp/articles/eks-cluster-access-control/ より

この図のようにIAMで認証し、k8sのRBACで認可を行っています。

IAMでadmin権限を持っていてもEKSのk8sから取ってみれば一般ユーザーでしかないので、k8s側で権限を付与する必要があります。

問題点1:CDKのデプロイによる問題

CDKでEKSをデプロイした場合、KubectlLayerを持つLambdaが自動生成されLambda経由でEKSを構築します。

公式のドキュメント
解説した記事

そのため、EKSクラスター構築後はCLIやコンソールで操作したユーザがsystem:mastersの権限を持っていますが、CDKで作成する場合はcdk deployを実行するユーザーではなく、自動生成されたLambdaがこの権限を持ちます。

そこでCDKは明示的にmastersRoleを設定する必要があります。

const eksCluster = new eks.FargateCluster(this, 'EksCluster', {
    version: eks.KubernetesVersion.V1_31, // EKSのバージョン
    kubectlLayer: new KubectlV30Layer(this, 'KubectlLayer'),
    mastersRole: iam.Role.fromRoleArn(this, 'EksMasterRole', 'arn:aws:iam::XXXXXXXXXXXX:role//AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX'),
});

問題点2:SSOのRoleのARN問題

SSO用RoleのARNをコンソール上で確認すると、通常のIAM RoleのARNとは異なるpathがあり、このpathのせいでエラーを引き起こす要因になっていました。

arn:aws:iam::XXXXXXXXXXXX:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX

公式のQAによると、

aws-reserved/sso.amazonaws.com/ap-northeast-1

このpathが良くないらしく、EKSが理解できるARNに変更する必要があるみたいです。

arn:aws:iam::XXXXXXXXXXXX:role/AWSReservedSSO_EKSAdmin_XXXXXXXXXXXXXXXXXX

引用

https://dev.classmethod.jp/articles/eks-cluster-access-control
https://docs.aws.amazon.com/cdk/api/v1/docs/aws-eks-readme.html#architectural-overview
https://qiita.com/watany/items/daf433338de5b6858ed6

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?