情 報 種 別 ： ○○○○○○○
会 社 名 ： ○○○○○○○
情報所有者 ： ○○○○○○○AWS Summitミニセッション「あなたのIaC、今でも動きますか？」

2024/6/20
株式会社NTTデータ© 2024 NTT DATA Japan Corporation

自己紹介
奥村 康晃（Okumura Yasuaki）
NTTデータ データセンタ&クラウドサービス事業部 エグゼクティブITスペシャリスト

ミッション :
クラウド領域における技術リード
先進技術を用いた新規サービスの創出

社外活動 :- 2022 APN AWS Top Engineers / 2023 AWS Ambassadors- AWS Summit Tokyo 2023登壇など- CodeZine:これだけは押さえておきたい！ AWSサービス最新アップデート[連載中]- マイナビ Tech+:AWS Organizations連携サービス最新情報＆セットアップのコツ[連載中]

保有資格 :© 2024 NTT DATA Japan Corporation2

こんなことありませんか？
IaCはやっているから、必要な時にすぐに作ることができる！
CloudFormation(久しぶりに)デプロイしてみたら、動かない・・・！

CDK

Terraform

deployAmazon EC2

Amazon RDS© 2024 NTT DATA Japan Corporation

Amazon S3

3

アマゾン ウェブ サービス (AWS)側の仕様変更により、今までのIaCが動作しないことが・・・ 1/2
S3 Block Public Accessがデフォルト有効化
パブリックバケット作成時にコード修正が必要（・・・中略・・・）© 2024 NTT DATA Japan Corporation

4

アマゾン ウェブ サービス (AWS)側の仕様変更により、今までのIaCが動作しないことが・・・ 2/2
IAMの変更サービスプレフィクスやアクションの廃止（・・・中略・・・）© 2024 NTT DATA Japan Corporation

5当社のIaCの例
当社は最低限必要なセキュリティ設定を実施済みのAWSアカウントを払い出す「セキュリティアカウント発行サービス」を提供中※裏側の設定は実施内容の関係でPython(boto3)で実装
デフォルトVPCの削除

パスワードポリシーの厳格化
IAM

Amazon VPCAWS Cloud有効化

証跡の有効化AWS CloudTrail© 2024 NTT DATA Japan CorporationAWS Config
6当社のIaCにおける課題
課題１：
多岐にわたるAWSサービスへの設定が必要であり、対象の全AWSサービスの全アップデートを追うことが難しい。気づかないうちに設定対象のサービス仕様が変わっており、IaCが動作しなくなる可能性があるのではないか？

課題２：
ベースとしているSecurity HubのAWS 基礎セキュリティ・ベスト・プラクティス (FSBP) 標準に頻繁に更新が入り、IaCの変更が頻発するため、動作しなくなる可能性があるのではないか？
(FY2023は72件の更新)

IaCの継続的なテスト© 2024 NTT DATA Japan Corporation7継続的なテストの実現方法
3つのAWSアカウントによるテスト環境
1. テストの実行基盤のあるアカウント
2. 単体テストの対象となるアカウント
3. 結合テストの対象となるアカウント

テスト実行用アカウント
AWS Step Functions

AWS CodeBuild

13日ごと実行

日次実行

継続的なテストの実装- AWS CodeBuild：AWSサービスごとの設定変更スクリプトの単体テスト- AWS Step Functions：依存関係を考慮した
全スクリプトを通した結合テスト

スクリプト
実行

スクリプト
実行

スクリプト
実行

・・・ スクリプト
実行

待機
テスト

・・・

テスト

前提条件ありスクリプト実行
テスト

ロールバック

ロールバック

単体テスト用アカウント© 2024 NTT DATA Japan Corporation

8

ロールバック

結合テスト用アカウント

継続的なテストの実現方法 | ポイント①ロールバック
3つのAWSアカウントによるテスト環境
1. テストの実行基盤のあるアカウント
2. 単体テストの対象となるアカウント
3. 結合テストの対象となるアカウント

セキュリティアカウント発行サービス実行用アカウント
AWS Step Functions

AWS CodeBuild

13日ごと
実行

日次実行

継続的なテストの実装- AWS CodeBuild：AWSサービスごとの設定変更スクリプトの単体テスト- AWS Step Functions：依存関係を考慮した
全スクリプトを通した結合テスト

スクリプト
実行

スクリプト
実行

スクリプト
実行

・・・ スクリプト
実行

待機
テスト

・・・

テスト

前提条件ありスクリプト実行
テスト

ロールバック

クリーンな状態のAWSアカウントを多数用意するのは難しいため、ロールバックを行い、毎回クリーンな状態とする

ロールバック

単体テスト用アカウント© 2024 NTT DATA Japan Corporation

9

ロールバック

結合テスト用アカウント

継続的なテストの実現方法 | ポイント②単体テスト
3つのAWSアカウントによるテスト環境
1. テストの実行基盤のあるアカウント
2. 単体テストの対象となるアカウント
3. 結合テストの対象となるアカウント

セキュリティアカウント発行サービス実行用アカウント
13日ごと
実行

日次実行

継続的なテストの実装- AWS CodeBuild：AWSサービスごとの設定変更スクリプトの単体テスト- AWS Step Functions：依存関係を考慮した全スクリプトを通した結合テスト

スクリプト
実行

スクリプト
実行

スクリプト
実行

・・・ スクリプト
実行

待機
テスト

待機が必要な設定やロールバックに時間がかかる設定以外のスクリプトの単体テストを実行
処理単体での品質を確保

・・・

テスト

前提条件ありスクリプト実行
テスト

ロールバック(例)
DetectiveはGuardDuty有効後2日待機が必要
CMKの削除は7日必要© 2024 NTT DATA Japan CorporationAWS Step Functions

AWS CodeBuild

ロールバック

単体テスト用
アカウント
10

ロールバック

結合テスト用アカウント

継続的なテストの実現方法 | ポイント③結合テスト
3つのAWSアカウントによるテスト環境
1. テストの実行基盤のあるアカウント
2. 単体テストの対象となるアカウント
3. 結合テストの対象となるアカウント

セキュリティアカウント発行サービス実行用アカウント
AWS Step Functions

AWS CodeBuild

13日ごと
実行

日次実行

継続的なテストの実装- AWS CodeBuild：AWSサービスごとの設定変更スクリプトの単体テスト- AWS Step Functions：依存関係を考慮した全スクリプトを通した結合テスト

スクリプト
実行

スクリプト
実行

スクリプト
実行

・・・ スクリプト
実行

待機
テスト

・・・

テスト

前提条件ありスクリプト実行
テスト

ロールバック全体としての整合性をとれているかの結合試験を別途用意

ロールバック

単体テスト用アカウント© 2024 NTT DATA Japan Corporation

11

ロールバック

結合テスト用アカウント

継続的なテストの実現方法
3つのAWSアカウントによるテスト環境
1. テストの実行基盤のあるアカウント
2. 単体テストの対象となるアカウント
3. 結合テストの対象となるアカウント

テスト実行用アカウント
13日ごと
実行

日次実行

継続的なテストの実装- AWS CodeBuild：AWSサービスごとの設定変更スクリプトの単体テスト- AWS Step Functions：依存関係を考慮した
全スクリプトを通した結合テスト

提供後の約AWS Step Functions

AWS CodeBuild

スクリプト
実行

・・・ スクリプト

2年間を安定的にサービス提供中
スクリプト
実行

スクリプト
実行

実行

待機

テスト

・・・

テスト

前提条件ありスクリプト実行
テスト

ロールバック

ロールバック

単体テスト用アカウント© 2024 NTT DATA Japan Corporation

12

ロールバック

結合テスト用アカウント

13日間を1サイクルにしている理由
設定完了/テスト実施/
ロールバック開始

設定開始

0days

1days

Detective以外のコントロール対応実施

2days

ロールバック完了

3days

4days

5days

6days

7days

11days 12days 13days

設定/テストに関する処理

Detectiveのコントロール対応実施

Detective有効化待機時間(2days)

SHubのSHubのスコア再計算
スコア初回計算

ロールバックに関する処理

Security Hubスコア再計算待機時間(1day)

作成したAWSリソースの削除

S3バケット削除

ログ用S3バケットの削除待機(4days)
CMK削除のスケジュール© 2024 NTT DATA Japan Corporation

13

Customer Managed Keyの削除待機(7days)

まとめ• クラウドを操作するIaCは様々な理由により、動作しなくなるリスクがあり、安定的に利用するためには、継続的なテストが必要になる
場合によってはlocalstackなどでもOK• 当社独自のセキュリティルール(ガードレール)を設定する「セキュリティアカウント発行サービス」の裏側では、単体試験と結合試験を組み合わせて品質を担保• お客様独自セキュリティルール構築を支援するサービス(SRE as a Service)もありますので、興味がある方はぜひともお声がけください！

© 2024 NTT DATA Japan Corporation

14

NTTデータのSRE as a Service
以下サービスメニューをお客様の状況に応じて時間単位でご利用可能です
クラウドネイティブ開発支援サービス

クラウドネイティブ運用支援サービス#サービスメニュー例#

サービスメニュー例

内容

1

システム
アーキテクチャ検討

マネージドサービスを活用したシステム
アーキテクチャ検討支援

1

アップデート対応
支援

クラウドサービスアップデート情報を踏まえた改善やEOL対応支援

2

PoC

お客様にとって未経験のサービスのPoC
2

コスト可視化／
最適化支援

お客様の全社視点でのコスト可視化／最適化支援

3

セキュリティガードレー
ル実装／運用支援

お客様全社でクラウドをセキュアに利用するためのセキュリティガードレール実装やその運用を支援

3

4

開発ガイドライン
作成支援
PMO/QA支援

内容

お客様特性を踏まえたクラウドでの開発ガイドラインの作成支援
クラウド開発での品質保証のためのコーチングやレビューなどを支援※システムの要件定義はお客様自身で実施※お客様環境での実作業（AWSリソースの構築など）はお客様自身で実施※新規契約の場合、1契約最大3か月間までのご支援(最低稼働時間10H/契約)© 2024 NTT DATA Japan Corporation※お客様環境での実作業（AWSリソースの設定変更など）はお客様自身で実施※新規契約の場合、1契約最大3か月間までのご支援(最低稼働時間10H/契約)

15