午前I問題

IaC(Infrastructure as Code)に関する記述として、最も適切なものはどれか。

ア)インフラの構成をコード化することで、手作業によるインフラ構築を排除し、再現性・可監査性を高める手法である

イ)IaCを導入すれば、クラウドサービスの認証情報管理は不要になる

ウ)IaCはアプリケーションのソースコードのみを対象とし、ネットワークやストレージなどのインフラ構成は対象外である

エ)IaCで管理されたインフラ構成は自動的に脆弱性がないことが保証される

午前I の解答・解説を見る

正解: ア)インフラの構成をコード化することで、手作業によるインフラ構築を排除し、再現性・可監査性を高める手法である

解説:

  • ア)正解。IaCはサーバ・ネットワーク・ストレージ等のインフラ構成をコード(設定ファイル)として記述・管理する手法。バージョン管理システムでの履歴管理により、誰がいつ何を変更したかの追跡(可監査性)と、同一構成の再現が可能になる。
  • イ)不正解。IaCツール自体がクラウドAPIを呼び出すために認証情報(APIキー・サービスアカウント等)を必要とするため、認証情報管理はむしろ重要性が増す。
  • ウ)不正解。IaCはインフラ構成(ネットワーク、ストレージ、IAM権限等)そのものを対象とする概念であり、アプリケーションコードとは別の管理対象である。
  • エ)不正解。IaCのコード自体に設定ミス(例:ストレージの公開設定、過剰なIAM権限)を記述すれば、そのまま脆弱な構成が量産される。IaCは再現性を高める一方、誤った設定も再現・拡散するリスクがある。

午前II問題

TerraformなどのIaCコードに対する静的セキュリティ解析(IaCスキャン)ツールが検出する対象として、最も適切なものはどれか。

ア)実行中のアプリケーションに対するSQLインジェクション攻撃の試行

イ)クラウドストレージの公開範囲設定やセキュリティグループの過剰に緩い通信許可ルールなど、構成ファイル内の設定ミス

ウ)本番環境で発生したDDoS攻撃のトラフィックパターン

エ)開発者のIDEにおけるタイプミスによる構文エラー全般

午前II の解答・解説を見る

正解: イ)

解説:

  • ア)不正解。SQLインジェクションの検知はDASTやWAFの役割であり、実行時の攻撃トラフィックを解析するものはIaCスキャンの対象外。
  • イ)正解。tfsec、Checkov、terrascanなどのIaCスキャンツールは、Terraform等の構成ファイルを静的に解析し、「S3バケットが全世界に公開設定になっている」「セキュリティグループで0.0.0.0/0からの全ポート許可」「暗号化が無効化されている」といった設定ミス(misconfiguration)をデプロイ前に検出する。
  • ウ)不正解。DDoS攻撃のトラフィック検知はネットワーク監視・WAF/IPSの役割であり、IaCの静的解析とは無関係。
  • エ)不正解。単純な構文エラーはIaCツール自体(terraform validate等)やIDEのシンタックスチェックで検出されるものであり、セキュリティスキャンが主眼とするのは「文法的には正しいが安全でない設定」の検出である。

午後問題

金融系サービスを提供するD社では、AWS環境の構築をTerraformで管理し、GitLab CIを用いてIaCの変更をCI/CDパイプライン経由で自動適用(terraform apply)している。ある日、セキュリティ診断会社から「顧客の取引ログを保存するS3バケットが、認証なしで誰でも読み取り可能な状態になっている」との指摘を受けた。

調査の結果、次の事実が判明した。

  • 開発者が新機能のログ出力先として新規S3バケットを作成する際、Terraformコードでacl = "public-read"を誤って指定していた
  • コードレビューでは機能面のみが確認され、S3バケットのアクセス制御設定は見落とされていた
  • CI/CDパイプラインにはterraform planの実行はあるが、IaCの設定内容に対するセキュリティチェックは組み込まれていなかった
  • 該当バケットには過去2か月分の取引ログ(氏名・口座情報を含む)約8万件が保存されていた

設問1

D社が本事案から学ぶべき、CI/CDパイプラインにおける再発防止のための技術的対策を述べよ。

設問1の解答・解説を見る

正解例: terraform planの後(terraform applyの前)にtfsecやCheckov等のIaCセキュリティスキャンツールをパイプラインに組み込み、S3バケットの公開設定やセキュリティグループの緩い許可設定などのポリシー違反を自動検出する。重大な違反(Critical/High)が検出された場合はapplyを自動的にブロックし、人手による承認・修正を経なければ本番環境へ適用できない仕組み(ポリシーアズコード、Policy as Code)とする。

解説・採点基準(計15点):

採点項目キーワード配点
IaCスキャンツールの導入に言及「tfsec」「Checkov」「terrascan」等のツール名または「IaC静的解析」6点
apply前のパイプライン組み込みに言及「plan後・apply前」「デプロイ前に検出」4点
検出時の自動ブロック・承認フローに言及「Policy as Code」「違反時はapplyを止める」5点

単に「コードレビューを強化する」だけの回答は、属人的なチェックに依存し見落としのリスクが残るため、技術的な自動化策への言及がない場合は部分点(最大6点)に留める。

設問2

CI/CDパイプラインでの技術的対策に加え、S3バケット自体の設計として推奨されるアクセス制御の考え方を、キーワードを用いて説明せよ。

設問2の解答・解説を見る

正解例: S3バケットはデフォルトで非公開(プライベート)とし、「パブリックアクセスブロック設定」を有効化して意図しない公開設定を組織全体で防止する。バケットへのアクセスが必要なアプリケーションやユーザに対しては、IAMポリシーやバケットポリシーで必要最小限の操作(読み取りのみ等)と対象リソースを限定して許可する最小権限の原則を適用する。また、保存データ自体もサーバサイド暗号化(SSE-S3やSSE-KMS)を施し、万一アクセス制御が突破された場合の被害を軽減する多層防御を実施する。

解説・採点基準(計15点):

採点項目キーワード配点
デフォルト非公開・パブリックアクセスブロックに言及「デフォルト非公開」「パブリックアクセスブロック」5点
最小権限の原則に言及「IAMポリシー」「最小権限」「必要最小限のアクセス」5点
暗号化等の多層防御に言及「サーバサイド暗号化」「多層防御」5点

重要キーワード

用語説明
IaC(Infrastructure as Code)インフラ構成をコードとして記述・管理する手法。再現性・可監査性を高める一方、設定ミスの拡散リスクも伴う
IaCスキャンTerraform等の構成ファイルを静的解析し、公開設定ミスや過剰な権限付与などを検出するセキュリティ手法
Policy as Codeインフラのセキュリティポリシーをコードとして定義し、CI/CDパイプラインで自動的に強制する仕組み
最小権限の原則リソースやアカウントに付与する権限を、業務上必要な最小限に限定する設計原則
パブリックアクセスブロックAWS S3において、意図しない公開設定を組織・アカウント単位で強制的に防止する機能
クラウド設計クラウド環境における可用性・セキュリティを考慮したアーキテクチャ設計の考え方

まとめ

  • 午前I視点: IaCはインフラ構成をコード化し再現性・可監査性を高める手法だが、誤った設定もそのまま再現・拡散するリスクを併せ持つことを理解する。
  • 午前II視点: IaCスキャンツール(tfsec、Checkov等)はストレージの公開設定やセキュリティグループの緩い許可ルールなど、構成ファイル内の設定ミスをデプロイ前に検出する点が出題の中心。
  • 午後視点: S3バケットの公開設定ミスのような事故対策では、CI/CDへのIaCスキャン組み込み(Policy as Code)と、デフォルト非公開・最小権限・暗号化というバケット側の多層防御を組み合わせて答える。