QUIZ 20分

チェックポイント:インフラのコード化

ストーリー

「IaCの実践知識を確認しよう。 最後のStep 6に向けて、しっかり固めておくぞ」

木村先輩が最終確認のクイズを用意した。


クイズの説明

  • 全6問
  • 合格ライン: 80%(5問正解)

問題

Q1. TerraformでAWSのVPCを作成するリソースタイプとして正しいものはどれですか?

  • A) terraform_vpc
  • B) aws_vpc
  • C) cloud_vpc
  • D) vpc_resource
<details> <summary>解答と解説</summary>

正解: B

Terraformのリソースタイプは プロバイダ名_リソース名 の形式です。AWSのVPCは aws_vpc です。同様に、EC2は aws_instance、S3は aws_s3_bucket、RDSは aws_db_instance となります。

</details>

Q2. Terraformのモジュールを使う最大のメリットはどれですか?

  • A) 実行速度が速くなる
  • B) Stateファイルが不要になる
  • C) インフラコードを再利用でき、環境ごとの差異をパラメータで管理できる
  • D) AWSの利用料金が安くなる
<details> <summary>解答と解説</summary>

正解: C

モジュールの最大のメリットは、VPCやEC2などの共通インフラパターンをパッケージ化して再利用できることです。staging/productionなどの環境ごとに異なるパラメータ(インスタンスタイプ、サブネット数等)を渡すだけで、同じ構造のインフラを複数環境に展開できます。

</details>

Q3. Terraform + GitHub ActionsでPR時にterraform planの結果をPRにコメントする目的として最も適切なものはどれですか?

  • A) デプロイを自動化するため
  • B) インフラの変更内容をレビュアーが事前に確認できるようにするため
  • C) Stateファイルを自動生成するため
  • D) AWSの認証情報を共有するため
<details> <summary>解答と解説</summary>

正解: B

PR時にterraform planの結果をコメントとして投稿することで、レビュアーがコードの変更だけでなく、実際にどのリソースが作成・変更・削除されるかを事前に確認できます。これにより、意図しないインフラ変更(例: 本番DBの削除)をマージ前に検出できます。

</details>

Q4. Terraformのセキュリティスキャンツールとして適切なものはどれですか?

  • A) ESLint
  • B) Jest
  • C) tfsec
  • D) Prettier
<details> <summary>解答と解説</summary>

正解: C

tfsecはTerraformコード専用のセキュリティスキャンツールで、セキュリティグループの過度な開放、暗号化の未設定、パブリックアクセスの有効化などの問題を自動検出します。ESLintとPrettierはJavaScript/TypeScript用、JestはテストフレームワークでTerraformには使用しません。

</details>

Q5. 以下のTerraformコードで、S3バケットのセキュリティ上の問題は何ですか?

hcl
resource "aws_s3_bucket" "data" {
  bucket = "my-important-data"
}
  • A) バケット名が不正である
  • B) リージョンが指定されていない
  • C) サーバーサイド暗号化とパブリックアクセスブロックが未設定
  • D) タグが設定されていない
<details> <summary>解答と解説</summary>

正解: C

このコードではS3バケットを作成していますが、サーバーサイド暗号化(aws_s3_bucket_server_side_encryption_configuration)とパブリックアクセスブロック(aws_s3_bucket_public_access_block)が設定されていません。重要なデータを保管するバケットでは、暗号化とパブリックアクセスの制限は必須のセキュリティ設定です。

</details>

Q6. GitHub ActionsからAWSにアクセスする際、OIDC認証が推奨される理由として正しいものはどれですか?

  • A) OIDCはAWSの無料枠で利用できるから
  • B) 長期的なアクセスキーをGitHub Secretsに保存する必要がなく、一時的な認証情報で安全にアクセスできるから
  • C) OIDCを使うとTerraformの実行速度が向上するから
  • D) OIDCはGitHub Enterprise でのみ利用可能な機能だから
<details> <summary>解答と解説</summary>

正解: B

OIDC認証では、GitHub ActionsがAWS STSから一時的な認証情報を取得します。これにより、長期的なアクセスキーをGitHub Secretsに保存する必要がなくなり、認証情報の漏洩リスクを大幅に低減できます。一時的な認証情報は短時間で自動失効するため、仮に漏洩しても被害が限定的です。

</details>

結果

5問以上正解の場合

合格です。おめでとうございます。

Step 5「インフラをコード化しよう」を完了しました。 次は Step 6「完全自動化を達成しよう」に進みましょう。

4問以下の場合

もう少し復習しましょう。

問題復習セクション
Q1step4_2 HCL構文とリソース定義
Q2step4_4 変数とモジュール
Q3step5_3 Terraform + GitHub Actions連携
Q4step5_4 IaCセキュリティとベストプラクティス
Q5step5_4 IaCセキュリティとベストプラクティス
Q6step5_3 Terraform + GitHub Actions連携

Step 5 完了

お疲れさまでした。

学んだこと

  • AWSリソース(S3, EC2, RDS)のTerraformでの構築
  • VPCネットワーク全体のIaC化
  • Terraform + GitHub Actionsの連携
  • IaCセキュリティとベストプラクティス

次のステップ

Step 6: 完全自動化を達成しよう(2時間)

CI/CDとIaCの全てを組み合わせた最終演習と卒業クイズに挑戦します。


推定所要時間: 20分