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
NRI Netcom
PRO
July 23, 2025
Technology
290
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
【DroidKaigi2026】あなたのANRはどこから?
nrinetcom
PRO
1
140
AWSサービスアップデート 2026/08
nrinetcom
PRO
1
110
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
5
2.3k
AWSマンスリーアップデートピックアップ!! 2026年7月分
nrinetcom
PRO
1
90
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
300
Platform Engineeringはじめの一歩
nrinetcom
PRO
2
190
企業でAWS Organizationsを動かすための組織設計の考え方
nrinetcom
PRO
1
250
AWSマンスリーアップデートピックアップ 2026年5月分
nrinetcom
PRO
0
120
Keynoteから考える、AIエージェント時代で何が変わるのか?
nrinetcom
PRO
0
180
Other Decks in Technology
See All in Technology
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
120
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
180
hackers_champloo_2026_tidb
makocchi
0
170
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
280
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
340
React改造してみた
tsukina_7mochi
0
110
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
440
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
280
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
Featured
See All Featured
A Soul's Torment
seathinner
8
3.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
520
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
How to Think Like a Performance Engineer
csswizardry
28
2.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Technical Leadership for Architectural Decision Making
baasie
3
600
Bash Introduction
62gerente
615
220k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Git: the NoSQL Database
bkeepers
PRO
433
67k
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