AWSアカウントセキュリティをIaCで実装する『クラウド破産を回避するInfrastructure as Code実践ガイド』という本を出します。 BOOTHと技術書典9から購入できます。
どんな本?
本書のテーマはAWSアカウントセキュリティとInfrastructure as Codeです。 実装技術にはTerraform・Serverless Framework・Go言語を採用し、サンプルコードは150以上用意しています。 特に次のような人にオススメです。
- クラウド破産の記事を見るたびにドキドキする
- AWSアカウントを安心して運用できるよう、セキュリティを向上させたい
- セキュリティでもInfrastructure as Codeを実践したい
- AWSアカウントセキュリティの実装スキルを効率よく習得したい
TerraformやServerless Frameworkがはじめてでも理解できるようになっています。 「実践Terraform」のセキュリティ版的なテイストで書かれており、実際に手を動かしながら学びます。 無料サンプル(63ページ)も置いておいてあるので、ぜひご覧ください。
なお頒布形式は電子版のみで、PDF・EPUB・MOBI(Kindleで読める形式)で提供します。
書籍の構成
全VI部41章構成で、284ページあります。 第I部ではNISTサイバーセキュリティフレームワークをベースに全体戦略を説明し、Terraformなどの基本的な使い方を解説します。 第II部・第III部ではIAM・AWS Budgets・GuardDuty・Security Hub・Chatbotなどの主要なAWSサービスを、Terraformでガンガン実装していきます。
第IV部ではServerless Framework(Go言語)で自動対応のコードを実装します。 CloudWatch EventsやAWS Config RulesをトリガーにLambdaを動かし、通知や自動復旧の仕組みを構築します。 自動対応はオーソドックスな実装方法が身につくといくらでも応用が効くので、非常にコスパのいい領域です。
第V部はアクセスキーのセキュアな管理方法にフォーカスしており、アクセスキーの一時的な払い出し・暗号化・MFA必須化などを学びます。 これを読めば雑にAdministratorAccess権限を付与するような運用から脱却できます。 また第VI部では重要なわりに意外と言及されることの少ないマルチリージョン対応や、AthenaのPartition Projectionのような最新トピックにも触れます。
目次
第I部「基礎知識」
1章 AWSセキュリティ戦略
1.1 クラウド破産
1.2 責任共有モデル
1.3 NISTサイバーセキュリティフレームワーク
1.4 NISTサイバーセキュリティフレームワークの実践
1.5 Infrastructure as Code
1.6 バージョン管理
1.7 写経のススメ
2章 AWS CLI入門
2.1 AWS CLIとは
2.2 IAMユーザーの作成
2.3 AWS CLIのインストール
2.4 AWS CLIの設定
2.5 AWS CLIの使い方
3章 Terraform入門
3.1 Terraformとは
3.2 Terraformのインストール
3.3 Terraformの実装
3.4 Terraformの使い方
3.5 Terraformの構文
4章 git-secretsの導入
4.1 git-secretsとは
4.2 git-secretsのインストール
4.3 git-secretsの使い方
第II部「AWSアカウントセキュリティ」
5章 AWSアカウント保護
5.1 Infrastructure as Code導入以前
5.2 ID管理とアクセス制御
5.3 強固なパスワードの使用
5.4 請求アラート
5.5 IAMベストプラクティス
6章 IAMグループによる権限管理
6.1 IAMとは
6.2 IAMポリシーによる権限設定
6.3 IAMグループによるIAMユーザーの管理
6.4 アクセスキーの設定
7章 パスワードポリシーの厳格化
7.1 パスワード管理のベストプラクティス
7.2 パスワードポリシーとは
7.3 パスワードポリシーの有効化
7.4 パスワードポリシーの注意点
8章 AWS Budgetsによる請求アラート
8.1 AWSの課金モデル
8.2 AWS Budgetsとは
8.3 AWS Budgetsによる請求アラートの有効化
8.4 請求アラートの確認
第III部「ガードレール」
9章 ガードレールの構築
9.1 AWSにおけるガードレール
9.2 ベースとなるサービス
9.3 ロギング
9.4 問題の検知
9.5 アラート通知
10章 S3による安全なログ管理
10.1 S3とは
10.2 ログバケットの設計
10.3 S3バケットの作成
10.4 ブロックパブリックアクセスによる公開抑止
10.5 バケットポリシーによるアクセス制御
10.6 ログバケットのモジュール化
11章 IAMロールによる権限付与
11.1 IAMロールとは
11.2 IAMロールの作成
11.3 IAMロールのモジュール化
12章 CloudTrailによる証跡管理
12.1 CloudTrailとは
12.2 CloudTrailの有効化
12.3 証跡ログの確認
13章 AWS Configによる構成管理
13.1 AWS Configとは
13.2 AWS Configの有効化
13.3 変更履歴の確認
14章 SNSによるメール通知
14.1 SNSとは
14.2 SNSトピックの設定
14.3 サブスクリプションの作成
14.4 メッセージのメール配信
15章 GuardDutyによる脅威検知
15.1 GuardDutyとは
15.2 GuardDutyの有効化
15.3 GuardDutyのアラート通知
15.4 GuardDutyの動作確認
16章 IAM Access Analyzerによる公開リソースの検出
16.1 IAM Access Analyzerとは
16.2 IAM Access Analyzerの有効化
16.3 IAM Access Analyzerのアラート通知
16.4 IAM Access Analyzerの動作確認
17章 Security Hubによる集約
17.1 Security Hubとは
17.2 Security Hubの有効化
17.3 Security Standardsの有効化
17.4 Security Hubのアラート通知
17.5 Security Hubの動作確認
17.6 Security Standardsのチューニング
18章 ChatbotによるSlack通知
18.1 Chatbotとは
18.2 Chatbotによる通知設計
18.3 Slackの設定
18.4 Chatbotの作成
18.5 Chatbotの動作確認
第IV部「インシデントレスポンス」
19章 インシデントレスポンスの自動化
19.1 環境変数の管理
19.2 Serverless FrameworkによるLambdaの実装
19.3 Slack通知のカスタマイズ
19.4 Lambdaによる自動対応
19.5 Systems Manager Automationによる自動対応
19.6 Go言語のセットアップ
20章 direnvによる環境変数の管理
20.1 direnvとは
20.2 direnvのインストール
20.3 シェルのフック設定
20.4 Gitの除外設定
20.5 direnvの使い方
21章 Serverless Framework入門
21.1 Serverless Frameworkとは
21.2 Serverless Frameworkのインストール
21.3 Serverless Frameworkの構造
21.4 Serverless Frameworkによる実装
21.5 Serverless Frameworkの使い方
21.6 本番運用を想定した設定
22章 AWS利用料金のSlack通知
22.1 利用料金通知アプリケーションの構成
22.2 Incoming Webhook URLの払い出し
22.3 Incoming Webhook URLの管理
22.4 Slackメッセージ投稿アプリケーションの実装
22.5 利用料金通知アプリケーションの実装
22.6 CloudWatch Eventsによる定期実行
23章 セキュリティイベントのSlack通知
23.1 セキュリティイベント通知アプリケーションの構成
23.2 CloudWatch Eventsの構造
23.3 セキュリティイベント通知アプリケーションの実装
23.4 通知条件のカスタマイズ
24章 Security Hubの自動復旧
24.1 Security Hub自動復旧アプリケーションの構成
24.2 AWS Config Rulesによる違反検知
24.3 Security Hub自動復旧アプリケーションの実装
25章 アクセスキーの強制無効化
25.1 アクセスキー強制無効化アプリケーションの構成
25.2 アクセスキーの無効化と削除
25.3 アクセスキー強制無効化アプリケーションの実装
26章 セキュリティグループの自動無効化
26.1 セキュリティグループ自動無効化アプリケーションの構成
26.2 Systems Manager Automationとは
26.3 AWS Config Rulesによるポート開放検知
26.4 Systems Manager Automationによるセキュリティグループの無効化
26.5 セキュリティグループ自動無効化の動作確認
第V部「認証情報の管理」
27章 アクセスキーのセキュアな運用
27.1 一時的なアクセスキーの取得
27.2 アクセスキーの暗号化
28章 AssumeRoleによる一時的な権限取得
28.1 AssumeRoleとは
28.2 AssumeRole先のIAMロール作成
28.3 AssumeRoleの実行
29章 IAMグループの権限最小化
29.1 AssumeRole前提の運用
29.2 最小権限IAMポリシー
29.3 AssumeRole元IAMグループとIAMユーザー
29.4 AssumeRole元プロファイルの設定
29.5 AssumeRoleの自動実行
30章 参照用IAMロールと管理用IAMロール
30.1 IAMロールの使い分け
30.2 参照用IAMロールの作成
30.3 管理用IAMロールの作成
30.4 プロファイル切り替えによるオペレーション
31章 AssumeRoleのMFA強制
31.1 AssumeRoleにおけるMFAの設計
31.2 AssumeRole元IAMユーザーのMFA有効化
31.3 AssumeRole先IAMロールのMFAチェック
31.4 AssumeRole用プロファイルのMFA設定
32章 AWS Vaultによるアクセスキーの暗号化
32.1 AWS Vaultとは
32.2 AWS Vaultのインストール
32.3 AWS Vaultの設定
32.4 AWS Vaultによるコマンド実行
32.5 Keychainのパスワード確認頻度の低減
32.6 AWS Vaultによるアクセスキーのローテーション
33章 パスワードレスサインイン環境の構築
33.1 AWS VaultによるAWSマネジメントコンソールへのサインイン
33.2 AWS VaultによるAWS操作の集約
33.3 AssumeRole元IAMユーザーの絞り込み
33.4 AssumeRole先IAMロールの絞り込み
33.5 パスワードレスサインイン環境の動作確認
第VI部「発展」
34章 セキュリティの高度化
34.1 CloudWatch Alarms
34.2 リージョンサービスの展開
34.3 リージョン制限
34.4 ログ検索
34.5 スケーラブルな設定管理
34.6 AWS Well-Architectedフレームワーク
35章 ルートユーザー使用のアラート通知
35.1 CloudWatch Alarmsのアラート通知設計
35.2 CloudWatch Alarmsの有効化
35.3 CloudWatch Alarmsのモジュール化
36章 CloudWatch Alarmsによるアラート通知
36.1 アラートの種類
36.2 運用中に起きてはいけないイベント
36.3 ネットワーク設定変更イベント
36.4 慎重に扱うべきリソース変更イベント
36.5 攻撃の兆候を示すイベント
36.6 重要だが発生頻度の高いイベント
36.7 オオカミ少年には要注意
37章 マルチリージョン対応
37.1 マルチリージョン対応の考え方
37.2 GuardDutyのモジュール化
37.3 Multipleプロバイダの定義
37.4 Multipleプロバイダの利用
37.5 Chatbotによる通知の集約
37.6 マルチリージョン対応の動作確認
38章 IAMポリシーによるリージョン制限
38.1 IAMポリシーの設計
38.2 リージョン制限IAMポリシーの作成
38.3 リージョン制限IAMロールの作成
38.4 リージョン制限プロファイル
38.5 無効化しているグローバルサービス
39章 Athenaによる証跡ログの検索
39.1 Athenaとは
39.2 パーティション分割
39.3 データベースの作成
39.4 CREATE TABLE文の定義
39.5 CREATE TABLE文の実行
39.6 AthenaでのSELECT文実行
40章 Systems Managerパラメータストアによる設定管理
40.1 設定管理戦略
40.2 Systems Managerパラメータストアとは
40.3 KMSによる暗号鍵の管理
40.4 AWS CLIによるSystems Managerパラメータストアの操作
40.5 Serverless FrameworkによるSystems Managerパラメータストアの参照
40.6 Systems Managerパラメータストアによる設定管理の動作確認
41章 AWS Well-Architectedフレームワークに学ぶ
41.1 AWS Well-Architectedフレームワークとは
41.2 セキュリティの設計原則
41.3 セキュリティのベストプラクティス
41.4 マルチアカウント管理への道
41.5 旅のはじまり
付録 巨人の肩の上に乗る
前著との関連
前著「クラウド破産を回避するAWS実践ガイド」と扱っているテーマは同じですが、情報量は本書のほうが断然多いです。 というかページ数からして2倍ぐらいあります。 本書は前作を前提にしていないので、独立して読んでも大丈夫です。 また前作を読んでいる人にとっては、前作の内容をいかにしてコード化するか学べ、さらなるレベルアップに役立ちます。
まとめ
『クラウド破産を回避するInfrastructure as Code実践ガイド』の執筆は本当に大変でしたが、ちょっとスゴい感じの本に仕上がりました。 ぜひ手にとっていただければうれしいです!