16. 16
@everpeace
(AWSの場合) IAM Roles for Service Accounts
IAM RoleにServiceAccount
によるRoleの引き受けを許可
Role
ServiceAccountに引き受けたい
IAM RoleをAnnotationする
Icons made by Freepik from www.flaticon.com
SDKがSTS(Security Token Service)
を使ってService Account Tokenと
IAM Roleの一時的なクレデンシャルを発行
一時的なクレデンシャルをつかって
Cloud APIにアクセス
Bound SA Tokenは
Kubeletが安全に
Rotateします🔄
失効したら
SDKが自動的に
再取得🔄
19. 19
@everpeace
(AWSの場合) IAM Roles for Service Accounts
IAM RoleにServiceAccount
によるRoleの引き受けを許可
Role
ServiceAccountに引き受けたい
IAM RoleをAnnotationする
Icons made by Freepik from www.flaticon.com
SDKがSTS(Security Token Service)
を使ってService Account Tokenと
IAM Roleの一時的なクレデンシャルを発行
一時的なクレデンシャルをつかって
Cloud APIにアクセス
Bound SA Tokenは
Kubeletが安全に
Rotateします🔄
失効したら
SDKが自動的に
再取得🔄
20. 20
@everpeace
(AWSの場合) IAM Roles for Service Accounts
ServiceAccountとIAM Roleと
紐付ける(引き受けを許可)
Role
ServiceAccountに引き受けたい
IAM RoleをAnnotationする
STS(Security Token Service)を使って
Service Account TokenとIAM Roleの
一時的なクレデンシャルを交換
一時的なクレデンシャルをつかって
Cloud APIにアクセス
SA Tokenは
Kubeletが安全に
Rotateします🔄
Expireしたら
自動的に再取得
されます🔄
アプリ開発者は
一度もクレデンシャル
を目にすることがない🙈
無期限なクレデンシャル
が存在しない🈚♾
めっちゃいい🎉
他のCloudも同様の
仕組みがあります
Icons made by Freepik from www.flaticon.com
21. 21
@everpeace
(AWSの場合) IAM Roles for Service Accounts
ServiceAccountとIAM Roleと
紐付ける(引き受けを許可)
Role
ServiceAccountに引き受けたい
IAM RoleをAnnotationする
STS(Security Token Service)を使って
Service Account TokenとIAM Roleの
一時的なクレデンシャルを交換
一時的なクレデンシャルをつかって
Cloud APIにアクセス
SA Tokenは
Kubeletが安全に
Rotateします🔄
Expireしたら
自動的に再取得
されます🔄
各Public Cloudでの機能名
AWS: IAM Roles for Service Accounts
GCP: Workload Identity
Azure: Azure AD Workload Identity
Icons made by Freepik from www.flaticon.com
24. 24
@everpeace
ポイントはココ: SA Tokenをどうやって認証する?
STS(Security Token Service)を使って
Service Account TokenとIAM Roleの
一時的なクレデンシャルを発行
クラウド側でRoleとSAは紐付けられている🪢ので、
STSがBound SA Token(JWT(OIDC IDToken)形式)を
検証可能な状況にすればいい✅
Icons made by Freepik from www.flaticon.com
25. 25
@everpeace
ポイントはココ: SA Tokenをどうやって認証する?
STS(Security Token Service)を使って
Service Account TokenとIAM Roleの
一時的なクレデンシャルを発行
事前にRoleとSAは紐付けられている🪢ので、
STSはBound SA Token(OIDC IDToken(JWT))を検証できればよい✅
Icons made by Freepik from www.flaticon.com
🛠使う道具は2つ
(実はIRSAとほぼ同じ仕組み)
○ 各Cloudの外部OIDC ProviderとのID Federation
○ Kubernetes ServiceAccountIssuerDiscovery
(v1.21以降デフォルトで有効)