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
IaC運用の落とし穴を防ぐ:AWS CloudFormation Stackの構成逸脱監視
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NRI Netcom
PRO
July 23, 2025
Technology
310
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IaC運用の落とし穴を防ぐ:AWS CloudFormation Stackの構成逸脱監視
NRI Netcom
PRO
July 23, 2025
More Decks by NRI Netcom
See All by NRI Netcom
AIエージェントに 権限と鍵をどこまで渡すか
nrinetcom
PRO
3
170
【DroidKaigi2026】あなたのANRはどこから?
nrinetcom
PRO
1
160
AWSサービスアップデート 2026/08
nrinetcom
PRO
1
120
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
5
2.4k
AWSマンスリーアップデートピックアップ!! 2026年7月分
nrinetcom
PRO
1
99
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
330
Platform Engineeringはじめの一歩
nrinetcom
PRO
2
200
企業でAWS Organizationsを動かすための組織設計の考え方
nrinetcom
PRO
1
310
AWSマンスリーアップデートピックアップ 2026年5月分
nrinetcom
PRO
0
120
Other Decks in Technology
See All in Technology
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
120
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
140
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
会社説明資料_最新版
demaecan
0
32k
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
5
3.3k
cdkd (CDK Direct)
gotok365
4
280
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
2
420
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
330
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
120
evcc & Home Assistant
naltatis
0
480
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
1
440
The Author Pays
hiccupps
0
150
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
770
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
For a Future-Friendly Web
brad_frost
184
11k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
Faster Mobile Websites
deanohume
310
32k
30 Presentation Tips
portentint
PRO
1
460
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Transcript
IaC運用の落とし穴を防ぐ: AWS CloudFormation Stackの構成逸脱監視 NRIネットコム TECH & DESIGN STUDY #71
2025年7月22日 NRIネットコム株式会社 クラウド事業推進部 藤本 匠海
1 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy はじめに
01 ドリフト検出とは 02 Lambdaによるドリフト検出 03 Configルールによるドリフト検出 04 運用のTips 05 最後に 06
2 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼
名前:藤本匠海 ◼ 出身:愛知県 ◼ 経歴 ⚫ 2023年~ • NRIネットコム入社 • クラウド事業推進部に配属 ⚫ 2023年7月~ • AWSを活用したシステムの構築・支援 ⚫ 2025年6月~ • 2025 Japan AWS Jr. Champions • 2025 Japan All AWS Certifications Engineers ◼ 好きなAWSサービス ◼ 保有資格 自己紹介 AWS CloudFormation AWS Organizations https://tech.nri-net.com/archive/author/nnc-t-fujimoto
3 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 1.
はじめに
4 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼
AWSのリソースの構築・管理において、IaC(Infrastructure as Code)の活用が一般化 ⚫ IaC(Infrastructure as Code):インフラ環境をコードとしてバージョン管理できるため、再現性や一貫性を向上 • AWS CloudFormation • AWS CDK • Terraform など ◼ IaCの管理下では、意図しないリソースの設定変更によって、ドリフト(構成逸脱)を引き起こす可能性 ⚫ 手動でのリソース設定変更 ⚫ スクリプトや他サービスによるリソース操作 ◼ ドリフト(構成逸脱) :テンプレートと実際の構成が乖離している状態 ⚫ 運用リスクが高まる • 本来あるべき状態の検証が困難 • 壊滅的な設定・誤った設定に変更された場合に重大なリスクを招く恐れ ⚫ CloudFormation ベストプラクティスでも非推奨 • https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/best-practices.html#donttouch 今回の勉強会で、このドリフト(構成逸脱)を自動で検知する仕組みを紹介します。 はじめに
5 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 2.
ドリフト検出とは
6 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ドリフトの例
◼ 例:テンプレートで定義されたセキュリティグループに対して、AWSコンソールで手動でインバウンドルールを追加 ⚫ テンプレート:ポート80のみ許可 ⚫ 実リソース:ポート80とポート22を許可 ◼ ドリフト検出 ⚫ CloudFormationスタックのリソースが、テンプレートで定義された状態からドリフトしていないかを検出する機能 ⚫ ドリフト検出は自動で実行されず、明示的に実行する必要がある • マネジメントコンソール上では、スタックアクションから「ドリフトの検出」を実行 ドリフト検出とは ドリフト発生
7 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ドリフト検出
◼ ドリフト検出の流れ 1. テンプレートに定義された各リソースについて、現在の実リソースの構成を取得 2. その構成とテンプレート定義をプロパティ単位で比較 3. 差異があるかどうかを判定し、結果を検出 ◼ ドリフト検出の対象 ⚫ スタック単位:スタック内のリソースにドリフトが存在するか確認 ⚫ スタック内のリソース単位:各リソースのドリフトの有無、またドリフトが発生しているリソースのプロパティを確認 ドリフト検出とは ・ CloudFormationのマネジメントコンソール
8 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ドリフトステータス
◼ スタック単位のステータス ⚫ DRIFTED:スタックが意図したテンプレート構成とは異なる(ドリフトが発生している状態) ⚫ NOT_CHECKED:まだドリフト検出を行っていない、ドリフト検出の対象外 ⚫ IN_SYNC:意図したテンプレート構成と一致する ◼ スタック内のリソース単位のステータス ⚫ DELETED:リソースが削除されている ⚫ MODIFIED:テンプレートと異なるプロパティがある ⚫ NOT_CHECKED:まだドリフト検出を行っていない、ドリフト検出の対象外 ⚫ IN_SYNC:テンプレートと一致している ◼ スタック単位: DRIFTED、リソース単位: DELETED, MODIFIED のステータスである場合、ドリフトが発生している ことを把握し、対処する必要がある ◼ ドリフトを自動検知し、通知する方法 1. Lambdaによるドリフト検出 2. Configルールによるドリフト検出 ドリフト検出とは
9 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 3.
Lambdaによるドリフト検出
10 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 実行の流れ
◼ 実行の流れ 1. EventBridgeスケジュールでLambda①を定期実行 2. Lambda①でCloudFormation ドリフト検出を実行 3. ドリフト検出された結果をEventBridgeルールでキャッチし、Lambda②を実行 4. Lambda②でドリフト検出の結果を取得し、SNSで通知 Lambdaによるドリフト検出 ① ②
11 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy Lambda①でCloudFormation
ドリフト検出を実行 ◼ Lambda① ⚫ スタック一覧を取得し、全てのスタックに対して、ドリフト検出を行うLambda ⚫ EventBridgeスケジュールにより、任意のタイミングでLambdaを実行 ◼ detect_stack_driftメソッド ⚫ boto3 のCloudFormation ドリフト検出を開始するメソッド ⚫ あくまでもドリフト検出を開始するだけで、検出完了までには時間がかかり、非同期に処理 ⚫ ドリフト検出の対象となるCloudFormation Stackによって展開されているリソースの参照権限が必要 ◼ describe_stack_drift_detection_statusメソッド ⚫ boto3 において、CloudFormationドリフト検出の進行状況と結果を確認するためのメソッド Lambdaによるドリフト検出 ・Lambda①のコード抜粋
12 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ドリフト検出された結果をEventBridgeルールでキャッチ
◼ ドリフト検出の完了をトリガーにLambda②を実行 ⚫ ドリフト検出の開始(detect_stack_drift)によって、非同期で処理されたドリフト結果をEventBridgeルールによってキャッチ ⚫ EventBridgeルールのターゲットにLambda②を選択 ◼ イベントパターン ⚫ EventBridgeイベント「CloudFormation Drift Detection Status Change」 • CloudFormation がスタックのドリフト検出を行った際に、そのステータスが変更されたことを通知するイベント ⚫ 6行目:“detection-status”: [“DETECTION_COMPLETE”]を指定 • ドリフト検出が完了したイベントのみをキャッチするため →この指定が無いと、ドリフト検出が進行中である「DETECTION_IN_PROGRESS」の状態もマッチしてしまう Lambdaによるドリフト検出 イベントパターン
13 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy Lambda②でドリフト検出結果を整形し、通知する
◼ Lambda② ⚫ ドリフト検出の結果から、どのリソースのプロパティにドリフト検出が出ているか確認し、通知するLambda ⚫ EventBridgeルールで直接SNSをターゲットに設定できるが… • SNSで通知する内容を整形することで、視認性を向上 • スタック単位でなく、リソース単位でドリフト結果を取得 ◼ describe_stack_resource_driftsメソッド ⚫ boto3のリソース単位でのドリフトとその詳細を取得するメソッド ◼ 通知内容 ⚫ ドリフト検出が起こっているリソースのプロパティを即座に把握し、対処するための情報を通知する • ドリフト検出されたリソースの種類 • リソース単位のドリフトステータス • 変更(MODIFIED)ステータスの場合、プロパティの詳細 • CloudFormation のコンソールURL Lambdaによるドリフト検出
14 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 実際の通知確認
◼ 各リソースのプロパティを手動で変更し、通知を確認 ⚫ SNS トピック:表示名(Display name) を変更 ⚫ SQS キュー:可視性タイムアウト(VisibilityTimeout)を30から45に変更 ⚫ DynamoDB:DynamoDBコンソールから「DriftTestTable」を削除 ◼ 実際の通知内容 ⚫ View in ConsoleのURLから対象のスタックを確認 ⚫ 今回はメール宛に通知を行ったが、運用面ではSlack通知の方が管理しやすい Lambdaによるドリフト検出
15 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 4.
Configルールによるドリフト検出
16 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼
Configルール「cloudformation-stack-drift-detection-check」を設定 ⚫ ドリフトの有無を確認するConfigルール ⚫ 実行タイミング • 定期実行(1,3,6,12,24時間) • CloudFormation設定変更(UpdateStack)時 ⚫ 評価方法 • 各スタックに対して DetectStackDrift オペレーションを実行する • スタック単位でのドリフト検出を行う • IN_SYNC ステータス → COMPLIANT(準拠)と評価 • DRIFTED ステータス→ NON_COMPLIANT(非準拠)と評価 ⚫ Configルールはあくまでも準拠、非準拠を判定するだけで、スタック単位からドリフトを判断し、リソース単位で検知はしない ◼ メリット ⚫ マネージドサービスであるため、管理の必要がない ⚫ 簡単に設定できる ⚫ SNSトピックを指定できるため、簡単に通知設定も行える(データの整形は行えない) Configルールによるドリフト検出 AWS Config AWS CloudFormation Amazon SQS Amazon SNS Amazon DynamoDB AWS CloudFormationによって展開されたリソース
17 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 5.
EventBridge+LambdaとConfigルールによるドリフト検出の使い分け
18 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy EventBridge+LambdaとConfigルールによるドリフト検出の使い分け
観点 EventBridge+Lambda Configルール 実行タイミング 任意のタイミング(1時間以内も設定可能) 最短1時間 デフォルト:24時間 検出対象 Lambdaにより、任意のスタックを指定可能 全てのスタック 結果の取得 リソース単位 スタック単位 (準拠か非準拠) 通知内容 Lambdaにより、自由にカスタマイズ JSON形式のイベント 設定の容易さ 複雑であり、管理が必要 容易 主な用途 柔軟なドリフト検出と迅速な通知を行いたい 簡単に定期的な監査を行いたい
19 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 6.
運用のTips
20 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼
タグを利用し、監視対象を絞る ⚫ 対象スタックが多い場合・スタックによって展開されているリソースが多い場合は、Lambdaのクォータ(15分)に達する可能性 ⚫ 通知の優先度が低いスタックは除外する • 通知の必要がない検証用スタック • すべての環境に一律で適用しているガードレール設計に用いられるような設定を展開しているスタック →より重要な変更に集中 ◼ そもそも意図しない設定変更が行われないよう、SCP(Service Control Policy)を適用する ⚫ ガードレール設計等のスタックなど ◼ CloudFormation StackSetsによる展開で、マルチリージョン対応 ⚫ 今回作成した構成逸脱(ドリフト)を監視する構成をCloudFormationでテンプレート化 運用のTips
21 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy 6.
最後に
22 Copyright(C) NRI Netcom, Ltd. All rights reserved. #nncstudy ◼
ドリフト(構成逸脱) :テンプレートと実際の構成が乖離している状態 ⚫ 本来あるべき状態の検証が困難 ⚫ 壊滅的な設定・誤った設定に変更された場合に重大なリスクを招く恐れ →CloudFormationによるドリフト検出機能を利用 ◼ ドリフト検出は自動で実行されず、明示的に実行する必要がある 1. EventBridge+Lambdaによるドリフト検出→柔軟なドリフト検出と即時通知 2. Configルールによるドリフト検出→定期的な監査 ◼ 運用Tips ⚫ タグを利用し、監視対象を絞る ⚫ SCP(Service Control Policy)による制御 ⚫ マルチリージョン対応 最後に
None