mcpField
C
cloud-infrastructure-security

cloud-infrastructure-security

github.com/valorvieセキュリティ060 回インストール3 週間前に更新
リポジトリ

cloud-infrastructure-security について

クラウドおよびインフラのセキュリティスキルです。デプロイ、アクセス管理、シークレット、ネットワーク、ログ、CI/CD、CDN セキュリティ、復旧のチェックリストと設定例を提供し、クラウド環境やデプロイ設定の確認に役立ちます。

主な機能

  1. 01IAM とアクセス制御の確認
  2. 02シークレットと認証情報の管理
  3. 03ネットワークセキュリティ設定の確認
  4. 04ログと監視の確認
  5. 05CI/CD と CDN 保護の評価
  6. 06バックアップと災害復旧の計画

活用シーン

  1. 01本番前のクラウドデプロイ確認
  2. 02IAM ポリシーとシークレット管理の監査
  3. 03CI/CD パイプラインと CDN 設定の強化
  4. 04バックアップとインシデント対応計画の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/valorvie/ai-dev-skills --skill cloud-infrastructure-security

インストール後、Claude Code で/cloud-infrastructure-securityを入力して読み込まれたか確認します。

詳細

クラウド&インフラストラクチャセキュリティスキル | クラウドインフラストラクチャのセキュリティ

クラウドインフラストラクチャ、CI/CD パイプライン、デプロイ設定がセキュリティのベストプラクティスに従い、業界標準に準拠していることを確認します。

適用シナリオ

  • アプリケーションをクラウドプラットフォーム(AWS, Vercel, Railway, Cloudflare)にデプロイする
  • IAM ロールと権限を設定する
  • CI/CD パイプラインを設定する
  • Infrastructure as Code(Terraform, CloudFormation)を実装する
  • ロギングと監視を設定する
  • クラウド環境のシークレットを管理する
  • CDN とエッジセキュリティを設定する
  • 災害復旧とバックアップ戦略を実装する

クラウドセキュリティチェックリスト

1. IAM とアクセス制御
最小権限の原則
# ✅ 正確:最小權限
iam_role:
  permissions:
    - s3:GetObject  # 只有讀取權限
    - s3:ListBucket
  resources:
    - arn:aws:s3:::my-bucket/*  # 特定 bucket

# ❌ 錯誤:過度寬鬆的權限
iam_role:
  permissions:
    - s3:*  # 所有 S3 動作
  resources:
    - "*"  # 所有資源
確認手順
  • 本番環境で root アカウントを使用しない
  • すべての特権アカウントで MFA を有効にする
  • サービスアカウントでは長期認証情報ではなくロールを使用する
  • IAM ポリシーが最小権限に従っている
  • 定期的にアクセスを監査する
  • 未使用の認証情報をローテーションまたは削除する

2. シークレット管理
クラウドシークレットマネージャー
// ✅ 正確:使用雲端 secrets manager
import { SecretsManager } from '@aws-sdk/client-secrets-manager';

const client = new SecretsManager({ region: 'us-east-1' });
const secret = await client.getSecretValue({ SecretId: 'prod/api-key' });
const apiKey = JSON.parse(secret.SecretString).key;

// ❌ 錯誤:硬編碼或僅在環境變數
const apiKey = process.env.API_KEY; // 不輪替,不審計
確認手順
  • すべてのシークレットをクラウドシークレットマネージャーに保存する
  • データベース認証情報の自動ローテーションを有効にする
  • API キーを少なくとも四半期ごとにローテーションする
  • コード、ログ、エラーメッセージにシークレットが含まれていない
  • シークレットへのアクセス監査ログを有効にする

3. ネットワークセキュリティ
VPC とファイアウォールの設定
# ✅ 正確:限制的安全群組
resource "aws_security_group" "app" {
  name = "app-sg"

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["10.0.0.0/16"]  # 僅內部 VPC
  }

  egress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]  # 僅 HTTPS 出站
  }
}

# ❌ 錯誤:對網際網路開放
resource "aws_security_group" "bad" {
  ingress {
    from_port   = 0
    to_port     = 65535
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]  # 所有 port,所有 IP!
  }
}
確認手順
  • データベースへのパブリックアクセスを禁止する
  • SSH/RDP ポートへのアクセスを VPN/bastion に制限する
  • セキュリティグループが最小権限に従っている
  • Network ACLs を設定する
  • VPC flow logs を有効にする

4. ログと監視
CloudWatch/Logging の設定
// ✅ 正確:完整的日誌
const logSecurityEvent = async (event: SecurityEvent) => {
  await cloudwatch.putLogEvents({
    logGroupName: '/aws/security/events',
    logStreamName: 'authentication',
    logEvents: [{
      timestamp: Date.now(),
      message: JSON.stringify({
        type: event.type,
        userId: event.userId,
        ip: event.ip,
        result: event.result,
        // 永不記錄敏感資料
      })
    }]
  });
};
確認手順
  • すべてのサービスで CloudWatch/logging を有効にする
  • 認証の失敗を記録する
  • 管理者の操作を監査する
  • ログの保持期間を設定する(コンプライアンス要件では 90 日以上)
  • 不審なアクティビティのアラートを設定する
  • ログを一元管理し、改ざんを防止する

5. CI/CD パイプラインのセキュリティ
セキュアなパイプライン設定
# ✅ 正確:安全的 GitHub Actions workflow
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: read  # 最小權限

    steps:
      - uses: actions/checkout@v4

      # 掃描 secrets
      - name: Secret scanning
        uses: trufflesecurity/trufflehog@main

      # 依賴審計
      - name: Audit dependencies
        run: npm audit --audit-level=high

      # 使用 OIDC,非長期 token
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
          aws-region: us-east-1
確認手順
  • 長期認証情報の代わりに OIDC を使用する
  • パイプラインでシークレットをスキャンする
  • 依存関係の脆弱性をスキャンする
  • コンテナイメージをスキャンする(該当する場合)
  • ブランチ保護ルールを強制する
  • マージ前にコードレビューを必須にする
  • コミットへの署名を必須にする

6. Cloudflare と CDN のセキュリティ
Cloudflare のセキュリティ設定
// ✅ 正確:帶安全標頭的 Cloudflare Workers
export default {
  async fetch(request: Request): Promise<Response> {
    const response = await fetch(request);

    const headers = new Headers(response.headers);
    headers.set('X-Frame-Options', 'DENY');
    headers.set('X-Content-Type-Options', 'nosniff');
    headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
    headers.set('Permissions-Policy', 'geolocation=(), microphone=()');

    return new Response(response.body, {
      status: response.status,
      headers
    });
  }
};
確認手順
  • WAF で OWASP ルールを有効にする
  • レート制限を設定する
  • ボット対策を有効にする
  • DDoS 対策を有効にする
  • セキュリティヘッダーを設定する
  • SSL/TLS strict モードを有効にする

7. バックアップと災害復旧
自動バックアップ
# ✅ 正確:自動 RDS 備份
resource "aws_db_instance" "main" {
  allocated_storage     = 20
  engine               = "postgres"

  backup_retention_period = 30  # 30 天保留
  backup_window          = "03:00-04:00"
  maintenance_window     = "mon:04:00-mon:05:00"

  enabled_cloudwatch_logs_exports = ["postgresql"]

  deletion_protection = true  # 防止意外刪除
}
確認手順
  • 毎日の自動バックアップを設定する
  • バックアップの保持期間がコンプライアンス要件を満たしている
  • ポイントインタイムリカバリを有効にする
  • 四半期ごとにバックアップをテストする
  • 災害復旧計画を文書化する
  • RPO と RTO を定義し、テストする

デプロイ前のクラウドセキュリティチェックリスト

本番環境へのクラウドデプロイ前に、以下を確認します。

  • IAM:root アカウントを使用しない、MFA を有効にする、最小権限ポリシーを適用する
  • シークレット:すべてのシークレットをクラウドシークレットマネージャーに保存し、ローテーションする
  • ネットワーク:セキュリティグループを制限し、データベースを公開しない
  • ログ:CloudWatch/logging を有効にし、保持期間を設定する
  • 監視:異常アラートを設定する
  • CI/CD:OIDC 認証、シークレットスキャン、依存関係の監査を行う
  • CDN/WAF:Cloudflare WAF で OWASP ルールを有効にする
  • 暗号化:保存データと転送中のデータを暗号化する
  • バックアップ:自動バックアップを設定し、復旧をテストする
  • コンプライアンス:GDPR/HIPAA の要件を満たす(該当する場合)
  • ドキュメント:インフラストラクチャを文書化し、runbooks を作成する
  • インシデント対応:セキュリティインシデント対応計画を整備する

よくあるクラウドセキュリティ設定ミス

S3 バケットの公開
# ❌ 錯誤:公開 bucket
aws s3api put-bucket-acl --bucket my-bucket --acl public-read

# ✅ 正確:私有 bucket 並指定存取
aws s3api put-bucket-acl --bucket my-bucket --acl private
aws s3api put-bucket-policy --bucket my-bucket --policy file://policy.json
RDS のパブリックアクセス
# ❌ 錯誤
resource "aws_db_instance" "bad" {
  publicly_accessible = true  # 永遠不要這樣做!
}

# ✅ 正確
resource "aws_db_instance" "good" {
  publicly_accessible = false
  vpc_security_group_ids = [aws_security_group.db.id]
}

参考資料

覚えておきましょう:クラウドの設定ミスは、データ漏えいの主な原因です。S3 バケットが一つ公開されているだけでも、あるいは IAM ポリシーの権限が過剰なだけでも、インフラストラクチャ全体が危険にさらされる可能性があります。常に最小権限の原則と多層防御に従ってください。

コメント