このラボについて
Cloud Security Labは、AWS・Azure・Google Cloud・Kubernetesのセキュリティを手を動かして学ぶハンズオン学習サイトであると同時に、サイト自体をセキュリティエンジニアリングの実践対象として構築しているプロジェクトです。
Build it. Secure it. Validate it.
このサイトのすべてのコンテンツとエンジニアリング判断は、次の3つのステップに基づいています。記事は概念の説明で終わらず、実際に「作り」「守り」「検証する」ところまでを扱います。
01 / Build it
作る
実際に動くアーキテクチャ・コード・インフラを構築する。抽象的な理論ではなく、手を動かして再現できる実装を示す。
02 / Secure it
守る
構築したものに対して、最小権限・IAM設計・シークレット管理・IaCスキャンなどの具体的なセキュリティコントロールを適用する。
03 / Validate it
検証する
設定したコントロールが実際に機能しているかを、スキャン結果・CIのSecurity Gate・手動検証によって確認する。
サイト自体がセキュリティエンジニアリングのラボ
このサイトは単なる記事の置き場所ではありません。開発からデプロイまでのソフトウェア配信パイプライン全体を、継続的にセキュアにし続けることを目標にしています。
現在の状態: Phase 1 実装済み
GitHub Actionsによるセキュリティスキャン(Gitleaks / Trivy / Semgrep / HTML-CSS-JS Lint)、OIDCベースの短期認証情報によるAmazon S3へのデプロイ自動化、そしてCloudFront + ACM + Route53によるカスタムドメイン・HTTPS配信(Phase 2)が稼働しています。Terraform/Checkov(Phase 3)はこれから実装します。
デプロイを自動化する際は、GitHub Actionsに長期的なAWS認証情報を置かない方針です。代わりにOIDCによる短期認証情報を利用します。
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
aws-region: ${{ vars.AWS_REGION }}
# No long-lived AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY secrets.
セキュリティ原則
パイプライン全体を通じて守るべき原則です。IaCスキャンはTerraform導入後のPhase 3で実装予定のため、状態を正直に示しています。
-
長期認証情報を持たない Implemented
GitHub ActionsからAWSへのデプロイはOIDCと短期IAMロールで行い、静的なアクセスキーは発行しない。
-
Security Gateでデプロイをブロックする Implemented
セキュリティスキャンが失敗した場合、ビルド・デプロイのステップに進めないようにGitHub Actions上でゲートする。
-
すべてのPRでシークレットスキャンを行う Implemented
Gitleaksをプルリクエスト単位で実行し、シークレットの混入をマージ前に検出する。
-
すべてのPRで静的解析を行う Implemented
Semgrepによるソースコードのセキュリティ解析をCIに組み込む。
-
IaC変更はapply前にスキャンする Planned
Terraformを導入するPhase 3では、Checkovによるミスコンフィグレーション検出をapply前に必須化する。
セキュリティツールのロードマップ
| Tool | Purpose | Status |
|---|---|---|
| Trivy | Filesystem / dependency scanning | Implemented |
| Gitleaks | Secret detection on every PR | Implemented |
| Semgrep | Static source code security analysis | Implemented |
| HTML/CSS/JS Linting | Front-end code quality checks | Implemented |
| Checkov | Terraform / IaC security scanning (Phase 3) | Planned |