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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
OpsJAWS#13 IAMベストプラクティス
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tmorinaga
May 21, 2018
Technology
4.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OpsJAWS#13 IAMベストプラクティス
#jawsug #opsjaws
Tmorinaga
May 21, 2018
More Decks by Tmorinaga
See All by Tmorinaga
Developers.IO 2017 E3
tmorinaga
0
1.4k
JAWS DAYS 2017 Security-JAWS発表資料
tmorinaga
2
5k
AWS WAFのログが3時間しか見れないのでなんとかしてみる
tmorinaga
3
4.4k
re:Growth 2016 in Tokyo
tmorinaga
0
2.4k
Developers.IO 2016 in Fukuoka
tmorinaga
1
960
【エンジニア編】AWS活用を考えているなら”必ず!"知っておくべきセキュリティの話
tmorinaga
1
4.6k
【ビジネス編】AWS活用を考えているなら”必ず!"知っておくべきセキュリティの話
tmorinaga
1
2.5k
OpsJAWS#4 CloudWatch Events Hands-on
tmorinaga
3
1.9k
Other Decks in Technology
See All in Technology
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
650
omasushiというライブラリを作った
polidog
PRO
0
160
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
170
GoにおけるFFIのこれまでとこれから
goccy
4
1.4k
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
240
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
430
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
300
module Synths; end
asonas
1
130
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
250
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
930
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
110
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Un-Boring Meetings
codingconduct
0
410
My Coaching Mixtape
mlcsv
0
310
HDC tutorial
michielstock
2
850
Code Review Best Practice
trishagee
74
20k
Building Adaptive Systems
keathley
44
3.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Transcript
IAMの運用 ベストプラクティス OpsJAWS #15 クラスメソッド株式会社 AWS事業部 森永 大志
森永 大志(もりなが たいし) • AWS事業部 ソリューションアーキテクト • 地味で大事なサービスがすき(だいたい緑のやつ) • 二人の娘のために生きてます
自己紹介
IAM運用どうしてます?
まずはAWS公式のベストプラク ティスを見てみる
AWS公式ベストプラクティス 1. AWS アカウントのルートユーザーのアクセスキーをロックする 2. 個々の IAM ユーザーの作成 3. IAM
ユーザーへのアクセス権限を割り当てるためにグループを使用する 4. AWS 定義のポリシーを使用して可能な限りアクセス権限を割り当てる 5. 最小権限を付与する 6. アクセスレベルを使用して、IAM 権限を確認する 7. ユーザーの強力なパスワードポリシーを設定 8. 特権ユーザーに対して MFA を有効化する 9. Amazon EC2 インスタンスで実行するアプリケーションに対し、ロールを使用する 10. 認証情報を共有するのではなく、ロールを使って委託する 11. 認証情報を定期的にローテーションする 12. 不要な認証情報を削除する 13. 追加セキュリティに対するポリシー条件を使用する 14. AWS アカウントのアクティビティの監視 https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
1.AWS アカウントのルートユーザーの アクセスキーをロックする • ルートユーザのアクセスキーは作らない/削除する ◦ ルートユーザーは制限することが出来ない ◦ IAMユーザ/ロールで出来ないことがほぼない ◦
アクセスキーは原則使うべきではない ⇒ 必ず実施すべき 後述するMFAの登録も忘れずに行う
(参考)ルートユーザでしか出来ないこと • アカウント関連の作業(支払い、解約など) • 逆引き設定の申請 • EC2からのメール送信制限の解除申請 • Route53で登録したドメインを別AWSアカウントに移管 •
侵入テスト申請など https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_tasks-that-require-root.html
2.個々の IAM ユーザーの作成 • 複数人で一つのIAMユーザを使わない ◦ 認可の設定が出来なくなる ◦ CloudTrailであとから追えない ⇒
必ず実施すべき 特例としてチーム内で参照権限だけならアリ?
3.IAM ユーザーへのアクセス権限を 割り当てるためにグループを使用する • ユーザに直接ではなくグループに割り当てる ◦ ユーザに割り当てると同じ権限ユーザ作成が面倒 ◦ ポリシーでも権限をまとめられる ⇒
なるべくやったほうが良い ポリシーで同様の事が出来るのでそちらでやるのも手
4.AWS 定義のポリシーを使用して可能な限り アクセス権限を割り当てる • なるべくAWSの管理ポリシーを使う ◦ 新しいサービス追加に自動で追随 ◦ 関連するAPIコールも追加してくれる ◦
要らない権限までつく ⇒ 判断は後ほど
5.最小権限を付与する • ユーザ/ロールが使う最小限の権限のみ与える ◦ やってはいけない操作を防ぐ ◦ 関係ないリソース操作を防ぐ ◦ 運用が死ぬほど大変 ◦
4番の項目と相反してる ⇒ 判断は後ほど
6.アクセスレベルを使用してIAM 権限を確認する • アクセスレベル(フル、制限など)を確認する ◦ どこまで出来るか概要を確認できる ⇒ 権限管理には使えるので使う どこまで権限管理するかは後ほど
7.ユーザーの強力なパスワードポリシーを設定 • ユーザのパスワードポリシーを強化する ◦ 簡単なパスワードはすぐに突破される ◦ 文字数、大文字、小文字、数字、記号の要件 ◦ 定期的な更新は議論の余地あり ⇒
必ず実施すべき ただし、ポリシーの内容については要検討
8.特権ユーザーに対して MFA を有効化する • 強い権限を持つユーザーにMFAをつける ◦ パスワードは脆弱 ◦ What you
knowとWhat you haveの併用 ⇒ 必ず実施すべき 特権ユーザーに限らずなるべく実施した方が良い
9.Amazon EC2 インスタンスで実行する アプリケーションに対し、ロールを使用する • IAMユーザのアクセスキーではなくIAMロールを使う ◦ アクセスキーは管理が面倒 ◦ IAMロールは一時的なアクセスキーを発行
▪ つまり漏れてもすぐに使えなくなる ⇒ 必ず実施すべき アクセスキーは最後の手段!使わない方法を考える!
10.認証情報を共有するのではなく ロールを使って委託する • IAMユーザを作るのではなくIAMロールでスイッチする ◦ パスワードは脆弱 ◦ 1つのアカウントから別アカウントへスイッチ可能 ◦ IAMロールで権限管理も出来る
⇒ 必ず実施すべき 複数アカウントで認証情報管理は人類に向かない 1アカウントにIAMユーザー(MFA付き)でスイッチ AD連携などでフェデレーションするのもあり
11.認証情報を定期的にローテーションする • パスワード、アクセスキーを定期的に変更 ◦ パスワードの定期変更は議論の余地あり ◦ アクセスキーは影響範囲が分かりづらい ⇒ 出来ればやりたい アクセスキーを基本的に使わないようにする
影響範囲が狭くなるため、運用しやすくなる
12.不要な認証情報を削除する • 使ってないパスワード/アクセスキーを削除する ◦ アプリでしか使わないユーザはパスワード不要 ◦ コンソールしか使わないユーザはアクセスキー不要 ⇒ なるべくやったほうが良い 頻繁には難しければ、定期的に棚卸しする
そもそもアクセスキーは発行せずIAMロールで コンソールアクセスもIAMロールで
13.追加セキュリティに対する ポリシー条件を使用する • IAMポリシーを細く設定する ◦ API呼び出し元IPアドレスや時間指定が可能 ◦ 管理が死ぬほど面倒 ⇒ 判断は後ほど
14.AWS アカウントのアクティビティの監視 • アクセスログ、監査ログをとる ◦ CloudTrailでAPI呼び出しログ ◦ Configでリソースの変更ログ ◦ CloudFront/ELB/S3などでアクセスログ
⇒ 必ず実施すべき 少しコストが掛かるが誤差レベル Configは変更毎に課金されるので要調整
ひとまずの個人的まとめ • ルートユーザは通常運用では使ってはならない • IAMユーザはなるべく使わないでIAMロールにする • アクセスキーは最終手段なのでIAMロールで実現 • ログはちゃんと取る •
MFAは基本的に有効化する(仮想でもいい) • とはいえパスワードはなるべく強力に • IAMロール使うとだいたい解決
残った課題
AWS公式ベストプラクティス 1. AWS アカウントのルートユーザーのアクセスキーをロックする 2. 個々の IAM ユーザーの作成 3. IAM
ユーザーへのアクセス権限を割り当てるためにグループを使用する 4. AWS 定義のポリシーを使用して可能な限りアクセス権限を割り当てる 5. 最小権限を付与する 6. アクセスレベルを使用して、IAM 権限を確認する 7. ユーザーの強力なパスワードポリシーを設定 8. 特権ユーザーに対して MFA を有効化する 9. Amazon EC2 インスタンスで実行するアプリケーションに対し、ロールを使用する 10. 認証情報を共有するのではなく、ロールを使って委託する 11. 認証情報を定期的にローテーションする 12. 不要な認証情報を削除する 13. 追加セキュリティに対するポリシー条件を使用する 14. AWS アカウントのアクティビティの監視 https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
IAMの権限をどうするか
最小権限にした時のよくあるシナリオ 運用者: このIAMユーザを使ってください! 開発者: 了解でーす
最小権限にした時のよくあるシナリオ 運用者: 権限付与します!! 開発者: ◯◯しようとすると 権限不足なんですが…
最小権限にした時のよくあるシナリオ 運用者: 権限付与します!!!! 開発者: まだ、XXの権限が足りないとでます…
最小権限にした時のよくあるシナリオ 運用者: 権限付与します!!!!!! 開発者: 今度は△△しようとすると権限不足…
最小権限にした時のよくあるシナリオ 運用者: つらい 開発者: またダメだ!!!!!! やってられるか!!!!!!
問題点 • AWSは一つの操作でも複数のAPIを呼ぶことがある ◦ 完璧な最小権限は難しい(というか無理?) • 何かやるたびに問い合わせが必要だと開発者のモチベーショ ンはだだ下がり • 問い合わせが増えるとIAMの運用者はつらい
やれる体制があるならやるべき
• ほぼ専門チームを作ってIAMの棚卸し実施 • 見直しだけで1週間かかる • 数が増えたら… (参考)リクルートテクノロジーズさん運用事例 https://www.slideshare.net/recruitcojp/20160517-security-jaws-miyazakisachie
やれる体制がない場合どうする
レベル1
PowerUser権限を渡して一部Deny • 基本的に全てのサービス/リソースを触れる • 触らせたくないサービス/リソースだけDeny • メリット ◦ 運用はほぼなし ◦
権限不足で悩まなくていい • デメリット ◦ セキュリティ的にイケてない?
(Tips)PowerUserはIAMロールを付与できない • PowerUser権限は”iam:*”以外を許可している • リソースへのIAMロール付与ができない • “iam:PassRole”の権限を付ければいけます { "Version": "2012-10-17",
"Statement": [ { "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*", "iam:PassRole" ], "Resource": "*" } ] }
レベル2
使うサービスの権限だけAWS管理ポリシーを渡す • EC2FullAccessなどの管理ポリシーを使う • 使う可能性のあるポリシーだけを割り当てる • メリット ◦ 運用は比較的楽 •
デメリット ◦ 別のサービスを見にいくサービスがある(特に参照) ◦ 許可したサービスについてはなんでもできちゃう
レベル3
職務機能別のAWS管理ポリシーをつかう • データベース管理者、システム管理者など職務別にポリシー が存在している • 足りない部分は適宜付け足す • メリット ◦ 職務に必要そうな権限は付与されるのでそこは楽
• デメリット ◦ 足りない権限が多分にあるので結局運用は必要
どれを選択するかは 組織体制や仕組みづくり次第 どれかが正解というわけではないです
IAMの権限をガッチガチにするより • 問題発生時に対応できる仕組み作りが重要では? ◦ CloudTrailでログ分析 ◦ Configで変更監視 ◦ Config Rulesで設定値を監視
• 外部から不正利用されないようにベスプラを守る ◦ 内部犯行はほぼ防げない • そもそも組織が違うならアカウント自体を変える • 不要なユーザは消す
(参考)認証情報レポートが棚卸しに便利 • アカウント内の全てのユーザとユーザの認証に関する情報が 一覧にまとめられたレポート • パスワード/アクセスキーが使用されていない、MFAが有効 化されていない、などを見れる • CSVファイルなので分析に回すのも簡単 https://dev.classmethod.jp/cloud/iam-report/
まとめ • IAMの権限管理は自分の組織に合わせて方針を決める • 無理して厳しくしすぎずに即座に対応できる仕組みを • 運用者も開発者も疲弊しないように最善を探る • 自動チェックなどはどんどんやるべき ◦
自動修正は諸刃の剣なので人力は必要…