AWS×IaC本 『クラウド破産を回避するInfrastructure as Code実践ガイド』 を出します #技術書典

AWSアカウントセキュリティをIaCで実装する『クラウド破産を回避するInfrastructure as Code実践ガイド』という本を出します。 BOOTHと技術書典9から購入できます。

booth.pm

techbookfest.org

どんな本?

本書のテーマは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実践ガイド』の執筆は本当に大変でしたが、ちょっとスゴい感じの本に仕上がりました。 ぜひ手にとっていただければうれしいです!

booth.pm

techbookfest.org

おまけ:試し読みコーナー