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
Docker/ECSでIAMロールを利用する
Search
takipone
January 17, 2015
Technology
1
5.3k
Docker/ECSで IAMロールを利用する
Docker Meetup Tokyo #4 LT
takipone
January 17, 2015
Tweet
Share
More Decks by takipone
See All by takipone
OJTに夢を見すぎていませんか? ロールプレイ研修の試行錯誤/tryanderror-in-roleplaying-training
takipone
1
220
ロールプレイトレーニングでクラウドエンジニアを短期育成した知見を一挙公開 / roll playing training benefits and cases
takipone
0
660
スキル育成に生かすLlamaIndexの活用 /using-llamaIndex-to-enhance-ones-skills
takipone
1
3.4k
DNSにちょっとだけ詳しくなりたい人に贈る少し突っ込んだDNSの話 / devioday1_dns
takipone
2
11k
Amazon VPC Latticeに期待する / look-for-vpc-lattice
takipone
0
1.1k
DevelopersIOのアウトプット文化をハックして人材育成に繋げる話 /deviosapporo2022fall_takipone
takipone
0
980
AWSネットワークリソースをサービスでマルチテナントに 提供するときのスケーラビリティ / nwjaws202112-takipone
takipone
1
760
ネットワークがクラウドに載って変わることと変わらないこと /nwjaws201909-takipone
takipone
0
2.1k
AWSネイティブなEC/CRMシステム運用に欠かせないログ基盤構築 / cmdevio2018-aws-log-infra
takipone
7
3.1k
Other Decks in Technology
See All in Technology
努力家なスクラムマスターが陥る「傍観者」という罠と乗り越えた先に信頼があった話 / 20250830 Takahiro Sasaki
shift_evolve
PRO
2
120
進捗
ydah
1
210
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
330
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
220
実践アプリケーション設計 ②トランザクションスクリプトへの対応
recruitengineers
PRO
4
1.1k
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
180
JuniorからSeniorまで: DevOpsエンジニアの成長ロードマップ
yuriemori
2
330
AI時代に非連続な成長を実現するエンジニアリング戦略
sansantech
PRO
3
830
Understanding Go GC #coefl_go_jp
bengo4com
1
1.1k
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
340
Grafana Meetup Japan Vol. 6
kaedemalu
1
180
PRDの正しい使い方 ~AI時代にも効く思考・対話・成長ツールとして~
techtekt
PRO
0
100
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
6.8k
Faster Mobile Websites
deanohume
309
31k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
500
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Visualization
eitanlees
147
16k
Facilitating Awesome Meetings
lara
55
6.5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
How GitHub (no longer) Works
holman
315
140k
Transcript
Docker/ECSで IAMロールを利利⽤用する Docker Meetup #4 LT classmethod.jp 1 2015/1/17 クラスメソッド株式会社
⼤大瀧隆太
classmethod.jp 2 ⾃自⼰己紹介 • ⽒氏名 : ⼤大瀧隆太
@takipone • 会社 : クラスメソッド • ポジション : AWSコンサル部 エンジニア / 研修講師 classmethod.jp 2
前段のお話をブログに書きました classmethod.jp 3 http://dev.classmethod.jp/cloud/creds-‐‑‒design-‐‑‒pattern-‐‑‒in-‐‑‒docker/
Dockerコンテナのクレデンシャル管理理 1. DockerfileのADDなどで設定ファイルを Dockerイメージに埋め込む – クレデンシャル更更新によるイメージの作り直し – Docker HubへのPushは漏漏洩につながってしまう 2. 環境変数をdocker run
-‐‑‒-‐‑‒envで渡す – GKE/ECSだと環境変数を定義ファイルに記述す るので、そのファイルの管理理が必要 3. クラウドサービスを利利⽤用することで、 クレデンシャルが外出しできる – AWS : IAMロール – GCE : Service Account classmethod.jp 4
classmethod.jp 5 AWS IAMロールの仕組み EC2 AWS IAM メタデータ サーバー 169.254.169.254
S3 ⼀一時キー ⼀一時キー GET /latest/meta-‐‑‒data/iam/ security-‐‑‒credentials/role-‐‑‒name ⼀一時キーでS3にアクセス
classmethod.jp 6 DockerコンテナからのIAMロール EC2 AWS IAM メタデータ サーバー 169.254.169.254 S3
⼀一時キー インスタンスと同じ⼀一時キー が取得できる/できちゃう
DockerコンテナからのIAMロール • コンテナとインスタンスで区別できない – インスタンスと同等の権限が全コンテナから参照 できてしまう • コンテナ単位の権限分けができない – fluentコンテナはs3:PutObject権限を、 phpコンテナはcloudwatch:PutMetricData権限 を付与したい!
• 現在のECSでは、インスタンスの権限(ecs:*) と全コンテナの権限の合算を設定することで 対応 classmethod.jp 7
classmethod.jp 8 メタデータサーバーの⾃自前実装 http://qiita.com/j3tm0t0/items/b63d456cafd20b1624fd
classmethod.jp 9 こうする。 AWS IAM メタデータ サーバー 169.254.169.254 S3 ⼀一時キー
sts:AssumeRole メタデータサーバーへ のトラフィックを⾃自前 サーバーにフック ⾃自前メタデータ サーバー
classmethod.jp 10 こうする。(⾃自前サーバーの実⾏行行) $ ruby ec2-role.rb arn:aws:iam::XXXXXXXXXXXX:role/exc_web [2015-01-16 15:04:44] INFO
WEBrick 1.3.1 [2015-01-16 15:04:44] INFO ruby 2.1.5 (2014-11-13) [x86_64-linux-gnu] == Sinatra/1.4.5 has taken the stage on 4567 for development with backup from WEBrick [2015-01-16 15:04:44] INFO WEBrick::HTTPServer#start: pid=2425 port=4567 { "Code" : "Success", "AccessKeyId" : "ASIAJUGBBWGPOE5LB2DA", "SecretAccessKey" : "F1UCLL1xus3i/HX5UjmJRoPzothnnAza9WRCRbSn", "Token" : "AQoDYXdzEPD////////// wEakAJ5SVuBEVHPmjjCMmaAJ7zX6MJsRy09k62S92wCO5rGImeVeKx +IB4AVZJ4eE8E0kRGpI7RDpW1l3UEqfeWon6AKwuNJQxgrcKOuB91zKSi3BeH8nT/ d2JUoY2deUVyBMLg3LoebPIlAzl1l83mbQ1Dds1vsj6pSn+nhU0w +hFJxypQcEGDSUrGyJMw15xDD/DQ+9G001ocbp0yBD4otjInNxWgB/ kME1KBPVANSLcJKSTubvNqjwyVgQpPGdu5p/eutns/sSvvRfYgKU9eSEdZzJ5y3djSEoo +J4Rmwrtol4p0fS1VhzsQOxPpH5nCaJwJiW3LnUfPbaDGoCwk2kq6z8sH8sx1t0Du +VT9Xp0qYSCM0eSlBQ==", "Expiration" : "2015-01-16T16:04:44Z" }
classmethod.jp 11 こうする。(トラフィックのフック) $ sudo iptables -t nat \ -A
PREROUTING -j DNAT \ -i docker0 \ -p tcp \ ! --src 172.17.0.2 \ --dst 169.254.169.254 --dport 80 \ --to 172.17.42.1:4567
classmethod.jp 12 できた。 $ docker exec 2de1f31fcb3d curl -s 169.254.169.254/latest/meta-data/iam/
security-credentials/temp { "Code" : "Success", "AccessKeyId" : "ASIAJUGBBWGPOE5LB2DA", "SecretAccessKey" : "F1UCLL1xus3i/HX5UjmJRoPzothnnAza9WRCRbSn", "Token" : "AQoDYXdzEPD////////// : $ ruby ec2-role.rb arn:aws:iam::XXXXXXXXXXXX:role/exc_web : 172.17.0.3 - - [17/Jan/2015:04:58:54 +0000] "GET /latest/meta-data/iam/ security-credentials/temp HTTP/1.1" 200 590 0.0003 ip-172-17-0-3.ec2.internal - - [17/Jan/2015:04:58:54 UTC] "GET /latest/ meta-data/iam/security-credentials/temp HTTP/1.1" 200 590 - -> /latest/meta-data/iam/security-credentials/temp • コンテナからメタデータサーバーにリクエスト • ⾃自前メタデータサーバーにアクセスログが表⽰示
classmethod.jp 13 今後の課題 • ⾃自家メタデータサーバー⾃自体をコンテナに • コンテナごとにロールを切切り替えたい • Dockerコンテナのクレデンシャル管理理は、 もっとディスカッションされてもいい話題