Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
200
ボトムアップでSLOを導入 2年半運用して分かった失敗と変化
juju62q
2
1.2k
Firecracker Snapshottingを調べてみた
juju62q
1
640
SLOを活用した技術的改善
juju62q
10
15k
telepresence handson
juju62q
2
5.4k
Wanna Use Vitess in Orientation
juju62q
6
1.4k
machine learning with rancher and K8s on prem
juju62q
5
480
docker-handson-for-researcher
juju62q
3
350
Getting Started to CRIU
juju62q
0
150
Other Decks in Technology
See All in Technology
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
0
410
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
170
AgentGatewayを試してみたかった
tkikuchi
0
120
React、まだ楽しくて草
uhyo
7
4.2k
実装は速くなった、レビューはどうする? ― 自身のレビューをAIで再現させるサーヴァントエンジニアリングのすゝめ / Implementation got faster. So what about reviews? — An invitation to Servant Engineering: Recreating your own code reviews with AI
nrslib
7
4.2k
地元にいないローカルオーガナイザーの立ち回り
uvb_76
2
1.1k
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
2.9k
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
220
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
520
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
190
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
0
210
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
0
340
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
Practical Orchestrator
shlominoach
191
11k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Leo the Paperboy
mayatellez
7
1.8k
The Limits of Empathy - UXLibs8
cassininazir
1
350
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
KATA
mclloyd
PRO
35
15k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
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