Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IAM Role for Pods and Instance Meta Data Service
Search
@ジュジュ
January 23, 2020
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IAM Role for Pods and Instance Meta Data Service
@ジュジュ
January 23, 2020
More Decks by @ジュジュ
See All by @ジュジュ
チーム分割においていかれたアラートをチームで責任を持てる形に再設計した
juju62q
0
220
ボトムアップでSLOを導入 2年半運用して分かった失敗と変化
juju62q
2
1.3k
Firecracker Snapshottingを調べてみた
juju62q
1
680
SLOを活用した技術的改善
juju62q
10
16k
telepresence handson
juju62q
2
5.5k
Wanna Use Vitess in Orientation
juju62q
6
1.5k
machine learning with rancher and K8s on prem
juju62q
5
500
docker-handson-for-researcher
juju62q
3
370
Getting Started to CRIU
juju62q
0
170
Other Decks in Technology
See All in Technology
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
200
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
260
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
120
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
330
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
220
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
480
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
190
新卒エンジニア、 介護士になる
ryu1013
1
690
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
120
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
180
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
140
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
Featured
See All Featured
Mind Mapping
helmedeiros
1
430
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
560
WENDY [Excerpt]
tessaabrams
14
40k
Tell your own story through comics
letsgokoyo
1
1.1k
Deep Space Network (abreviated)
tonyrice
0
410
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
The World Runs on Bad Software
bkeepers
PRO
72
12k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
300
Six Lessons from altMBA
skipperchong
29
4.6k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Transcript
IAM Role for Pods と Instance Meta Data Service 2020/01/23
岡野兼也(@Juju_62q) JAWS-UGコンテナ支部 #16@AWS
Okano Kenya / @Juju_62q Belonging: - “CyberAgent, Inc” Team: “OpenSaaS
Studio” Role: - “Backend Engineer” - “ほうれん草エバンジェリスト” - “銀の弾丸” Interest: - Microservices - “Domain Driven Development” - “Developer Experience” 22
皆さんも銀の弾丸になりませんか? 33 地上最高のTシャツを SUZURIで販売しています。 着ているので興味ある人は 見るに来てください
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 44
2019/09にEKSユーザに激震が走りました 55
IAM Role for ServiceAccount 66
77 IAM Role S3 IAM Role Dynamo Master Node Worker
Node service account A service account B Pod S3 (service account A) Pod Dynamo (service account B) S3 Dynamo OpenID Connect
88 Pod S3 (service account A) Pod Dynamo (service account
B) ここで にcredentialがマウントされる /var/run/secrets/eks.amazonaws.com/serviceaccount/token
ServiceAccountごとにIAM Roleが制御できた 99
でもその方法、今までなかった方法じゃない? 10 10
それはそう。 11 11
なので 12 12
古いAWS SDKからは読めません 13 13
あなたのAWS SDK新しいですか? • 自身のアプリのAWS SDKはアップデートしていますか? • 依存ライブラリ・OSSのAWS SDKは全て新しいですか? ◦ kubernetes-sigの対応は早かった
◦ 全てのOSSがK8sを前提にしているわけじゃない ◦ メンテが続いていてもまだ対応していないことも 14 14
僕は違いました 15 15
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 16 16
kiamとは • IAM Role for ServiceAccountが出る前によく使われてい たIAM Role for Podsのツール
• PodのアノテーションでIAM Roleを管理 • kube2iamというツールをもとにそこからRace Condition を排除し、セキュアにしたもの • AWS Traditional IAM Role Managementに対応 • uSwitch社が開発 17 17
アーキテクチャを見る前に 18 18
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 19 19
“IAM Roleがアタッチされている” in IMDSv1 20 20 $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ hogehoge
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/hogehoge { "Code" : "Success", "LastUpdated" : "2019-12-08T07:20:38Z", "Type" : "AWS-HMAC", "AccessKeyId" : "*****", "SecretAccessKey" : "******", "Token" : "*****", "Expiration" : "2019-12-08T13:49:31Z" }
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 21 21
続kiamとは 22 22 引用元: https://www.bluematador.com/blog/iam-access-in-kubernetes-kube2iam-vs-kiam
23 23 kiam-serverがSTSとやりとりしてcredentialを取得
24 24 kiam-agentがホストマシンのIMDSへのアクセスを kiam-agentにiptablesで書き換える
25 25 kiam-agentがkiam-serverとアクセスしてcredentialを取得
26 26 PodがIMDSにアクセスしようとして kiam-agentにアクセスし、credentialを取得
IAM Roleが取得できた! 27 27
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 28 28
IMDSv2とは • IMDSv1は中に入りさえすれば簡単にmetadataを 取得できてしまっていた • やばいのでセキュアにしたやつ • LTで詳しく解説すると終わるので気になったら 調べてみましょう 29
29
“IAM Roleがアタッチされている” in IMDSv2 30 30 $ curl -X PUT
http://169.254.169.254/latest/api/token \ -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" ${TOKEN} $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ \ -H "X-aws-ec2-metadata-token: ${TOKEN}" hogehoge $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/hogehoge \ -H "X-aws-ec2-metadata-token: ${TOKEN}" { "Code" : "Success", "LastUpdated" : "2019-12-08T07:20:38Z", "Type" : "AWS-HMAC", "AccessKeyId" : "*****", "SecretAccessKey" : "******", "Token" : "*****", "Expiration" : "2019-12-08T13:49:31Z" }
“IAM Roleがアタッチされている” in IMDSv2 31 31 $ curl -X PUT
http://169.254.169.254/latest/api/token \ -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" ${TOKEN} $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ \ -H "X-aws-ec2-metadata-token: ${TOKEN}" hogehoge $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/hogehoge \ -H "X-aws-ec2-metadata-token: ${TOKEN}" { "Code" : "Success", "LastUpdated" : "2019-12-08T07:20:38Z", "Type" : "AWS-HMAC", "AccessKeyId" : "*****", "SecretAccessKey" : "******", "Token" : "*****", "Expiration" : "2019-12-08T13:49:31Z" } PUTリクエストでセッショントークンを取得
“IAM Roleがアタッチされている” in IMDSv2 32 32 $ curl -X PUT
http://169.254.169.254/latest/api/token \ -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" ${TOKEN} $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ \ -H "X-aws-ec2-metadata-token: ${TOKEN}" hogehoge $ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/hogehoge \ -H "X-aws-ec2-metadata-token: ${TOKEN}" { "Code" : "Success", "LastUpdated" : "2019-12-08T07:20:38Z", "Type" : "AWS-HMAC", "AccessKeyId" : "*****", "SecretAccessKey" : "******", "Token" : "*****", "Expiration" : "2019-12-08T13:49:31Z" } ヘッダにトークンをつけてアクセスをメタデータサーバにアクセス
色々セキュアになりました 33 33
ところで、kiamを覗きましょう 34 34
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 35 35
Current Status 36 36 ※ Production環境ではありません 新しいAWS SDKでのIMDSv2に対するアクセスが全てエラーに。。。
Contents 1. 2020年のイケてるIAM Role管理 for K8s on AWS 2. kiamとは
3. “IAM Roleがアタッチされている” in IMDSv1 4. 続kiamとは 5. “IAM Roleがアタッチされている” in IMDSv2 6. Current Status 7. まとめ 37 37
まとめ • 古いAWS SDKは早いとこ窓から投げ捨てましょう • 早めにIAM Role for ServiceAccountに移行するといい •
古いものを使わないといけない場合 ◦ 古いものでのみkiamやkube2iamを使う ◦ それを”負債である”と認知する ◦ ライブラリバージョンアップ施策を進めましょう 38 38 一応kiamにもISSUEが立ってるので対応してくれるかも https://github.com/uswitch/kiam/issues/359