【Day8】IRSAの真髄!Podに権限を授けてS3へアクセスせよ!
EKSの中で「PodにAWSリソースへの最小権限を与える」——それがIRSA(IAM Roles for Service Accounts)の真価。
今回は、自前で建てた簡単なPodからS3へ安全にアクセスできるように、IRSAの設定手順と実践例を完全ガイド!
1. 🔍 IRSAって何者?EKSで権限を分けるということ
IRSA(IAM Roles for Service Accounts)は、EKSのPodごとにIAMロールを割り当てる仕組み。
セキュアに、かつ最小限の権限でAWSリソースへアクセスできるのが強み。
例えば「S3はこのPodだけ使っていい」みたいな粒度の制御が可能!
2. 🛠️ 事前準備:OIDCプロバイダーとIAMロール
Step1:OIDCプロバイダーを確認(または有効化)
aws eks describe-cluster \
--name <クラスタ名> \
--region ap-northeast-1 \
--query "cluster.identity.oidc.issuer" \
--output text
→ このURLがOIDCプロバイダー。
まだ連携していない場合は以下の手順で有効化。
eksctl utils associate-iam-oidc-provider \
--region ap-northeast-1 \
--cluster <クラスタ名> \
--approve
Step2:IAMポリシー作成(S3アクセス用)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::<バケット名>"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::<バケット名>/*"
}
]
}
Step3:IAMロール作成(信頼関係にOIDC指定)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<アカウントID>:oidc-provider/<OIDC URL>"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"<OIDC URL>:sub": "system:serviceaccount:default:s3-access"
}
}
}
]
}
3. 🚀 実践:IRSAでS3アクセス用のPodを作ってみる
Step4:ServiceAccount作成(IRSA連携)
service-account.yamlとして作成
apiVersion: v1
kind: ServiceAccount
metadata:
name: s3-access
namespace: default
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::<アカウントID>:role/<IRSAロール名>
Step5:Podマニフェスト(S3 CLI付きPod)
pod.yamlとして作成
apiVersion: v1
kind: Pod
metadata:
name: s3-cli
spec:
serviceAccountName: s3-access
containers:
- name: s3cli
image: amazon/aws-cli:2.13.14
command: ["sleep", "3600"]
Podに入って aws s3 ls s3://<バケット名> を実行してアクセス確認!
kubectl exec -it s3-cli -- /bin/bash
aws s3 ls s3://<バケット名を入力>
次回予告 📢:PodとNodeのスケーリング道場:手動・自動でリソースを自在に操る
今まで作ってきたPodやNodeは、すべて一台で構成してきました。
本番環境では2台構成にしたりすることってありますよね。
その場合、ノードってどうなるの?Podってどう拡張するの?ということを解説していきます!
よければフォロー&いいねお願いします🙏
- 「面白かった」「続きが気になる!」と思ったらLGTM👍
- コメントで「聞きたい内容」「つまずきポイント」などもぜひ教えてください!
それではまた明日、EKS道場でお会いしましょう!押忍🔥
