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
26
AWSサービスアップデート 2026/08
nrinetcom
PRO
1
80
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
4
1.7k
AWSマンスリーアップデートピックアップ!! 2026年7月分
nrinetcom
PRO
1
81
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
240
Platform Engineeringはじめの一歩
nrinetcom
PRO
2
180
企業でAWS Organizationsを動かすための組織設計の考え方
nrinetcom
PRO
1
240
AWSマンスリーアップデートピックアップ 2026年5月分
nrinetcom
PRO
0
110
Keynoteから考える、AIエージェント時代で何が変わるのか?
nrinetcom
PRO
0
150
Other Decks in Technology
See All in Technology
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
550
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
340
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2k
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
1
270
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
940
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.4k
Minecraft JavaのMODをSwiftで作る
1mash0
0
180
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
3
1.7k
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
0
160
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
640
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
Building the Perfect Custom Keyboard
takai
2
870
Paper Plane
katiecoart
PRO
4
53k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
KATA
mclloyd
PRO
35
15k
Designing for Timeless Needs
cassininazir
1
480
Navigating Team Friction
lara
192
16k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Building Applications with DynamoDB
mza
96
7.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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