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
OpsJAWS#13 IAMベストプラクティス
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
970
【エンジニア編】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
The seven pitfalls of AI (revised version)
ufried
0
180
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
290
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
500
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
270
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
290
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
410
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
200
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
1
700
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
190
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
240
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
Become a Pro
speakerdeck
PRO
31
6.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Producing Creativity
orderedlist
PRO
348
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Building the Perfect Custom Keyboard
takai
2
890
4 Signs Your Business is Dying
shpigford
187
23k
A better future with KSS
kneath
240
18k
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の権限管理は自分の組織に合わせて方針を決める • 無理して厳しくしすぎずに即座に対応できる仕組みを • 運用者も開発者も疲弊しないように最善を探る • 自動チェックなどはどんどんやるべき ◦
自動修正は諸刃の剣なので人力は必要…