チェックポイント:インフラのコード化
ストーリー
「IaCの実践知識を確認しよう。 最後のStep 6に向けて、しっかり固めておくぞ」
木村先輩が最終確認のクイズを用意した。
クイズの説明
- 全6問
- 合格ライン: 80%(5問正解)
問題
Q1. TerraformでAWSのVPCを作成するリソースタイプとして正しいものはどれですか?
- A)
terraform_vpc - B)
aws_vpc - C)
cloud_vpc - D)
vpc_resource
正解: B
Terraformのリソースタイプは プロバイダ名_リソース名 の形式です。AWSのVPCは aws_vpc です。同様に、EC2は aws_instance、S3は aws_s3_bucket、RDSは aws_db_instance となります。
Q2. Terraformのモジュールを使う最大のメリットはどれですか?
- A) 実行速度が速くなる
- B) Stateファイルが不要になる
- C) インフラコードを再利用でき、環境ごとの差異をパラメータで管理できる
- D) AWSの利用料金が安くなる
正解: C
モジュールの最大のメリットは、VPCやEC2などの共通インフラパターンをパッケージ化して再利用できることです。staging/productionなどの環境ごとに異なるパラメータ(インスタンスタイプ、サブネット数等)を渡すだけで、同じ構 造のインフラを複数環境に展開できます。
</details>Q3. Terraform + GitHub ActionsでPR時にterraform planの結果をPRにコメントする目的として最も適切なものはどれですか?
- A) デプロイを自動化するため
- B) インフラの変更内容をレビュアーが事前に確認できるようにするため
- C) Stateファイルを自動生成するため
- D) AWSの認証情報を共有するため
正解: B
PR時にterraform planの結果をコメントとして投稿することで、レビュアーがコードの変更だけでなく、実際にどのリソースが作成・変更・削除されるかを事前に確認できます。これにより、意図しないインフラ変更(例: 本番DBの削除)をマージ前に検出できます。
</details>Q4. Terraformのセキュリティスキャンツールとして適切なものはどれですか?
- A) ESLint
- B) Jest
- C) tfsec
- D) Prettier
正解: C
tfsecはTerraformコード専用のセキュリティスキャンツールで、セキュリティグループの過度な開放、暗号化の未設定、パブリックアクセスの有効化などの問題を自動検出します。ESLintとPrettierはJavaScript/TypeScript用、JestはテストフレームワークでTerraformには使用しません。
</details>Q5. 以下のTerraformコードで、S3バケットのセキュリティ上の問題は何ですか?
resource "aws_s3_bucket" "data" {
bucket = "my-important-data"
}- A) バケット名が不正である
- B) リージョンが指定されていない
- C) サーバーサイド暗号化とパブリックアクセスブロックが未設定
- D) タグが設定されていない
正解: C
このコードではS3バケットを作成していますが、サーバーサイド暗号化(aws_s3_bucket_server_side_encryption_configuration)とパブリックアクセスブロック(aws_s3_bucket_public_access_block)が設定されていません。重要なデータを保管するバケットでは、暗号化とパブリックアクセスの制限は必須のセキュリティ設定です。
Q6. GitHub ActionsからAWSにアクセスする際、OIDC認証が推奨される理由として正しいものはどれですか?
- A) OIDCはAWSの無料枠で利用できるから
- B) 長期的なアクセスキーをGitHub Secretsに保存する必要がなく、一時的な認証情報で安全にアクセスできるから
- C) OIDCを使うとTerraformの実行速度が向上するから
- D) OIDCはGitHub Enterprise でのみ利用可能な機能だから
正解: B
OIDC認証では、GitHub ActionsがAWS STSから一時的な認証情報を取得します。これにより、長期的なアクセスキーをGitHub Secretsに保存する必要がなくなり、認証情報の漏洩リスクを大幅に低減できます。一時的な認証情報は短時間で自動失効するため、仮 に漏洩しても被害が限定的です。
</details>結果
5問以上正解の場合
合格です。おめでとうございます。
Step 5「インフラをコード化しよう」を完了しました。 次は Step 6「完全自動化を達成しよう」に進みましょう。
4問以下の場合
もう少し復習しましょう。
| 問題 | 復習セクション |
|---|---|
| Q1 | step4_2 HCL構文とリソース定義 |
| Q2 | step4_4 変数とモジュール |
| Q3 | step5_3 Terraform + GitHub Actions連携 |
| Q4 | step5_4 IaCセキュリティとベストプラクティス |
| Q5 | step5_4 IaCセキュリティとベストプラクティス |
| Q6 | step5_3 Terraform + GitHub Actions連携 |
Step 5 完了
お疲れさまでした。
学んだこと
- AWSリソース(S3, EC2, RDS)のTerraformでの構築
- VPCネットワーク全体のIaC化
- Terraform + GitHub Actionsの連携
- IaCセキュリティとベストプラクティス
次のステップ
Step 6: 完全自動化を達成しよう(2時間)
CI/CDとIaCの全てを組み合わせた最終演習と卒業クイズに挑戦します。
推定所要時間: 20分