mcpField
C
cloud-infrastructure-security

cloud-infrastructure-security

github.com/valorvieSecurity060 installsUpdated 3w ago
Repository

About cloud-infrastructure-security

A cloud and infrastructure security skill that provides checklists and configuration examples for deployments, identity and access, secrets, networking, logging, CI/CD, CDN security, and recovery. It is intended for practitioners reviewing cloud environments and deployment setups.

Key features

  1. 01Review IAM and access controls
  2. 02Manage secrets and credentials
  3. 03Check network security settings
  4. 04Review logging and monitoring
  5. 05Assess CI/CD and CDN protections
  6. 06Plan backups and disaster recovery

Use cases

  1. 01Review cloud deployments before production
  2. 02Audit IAM policies and secrets handling
  3. 03Harden CI/CD pipelines and CDN settings
  4. 04Check backup and incident response plans

Install

Copy the command and run it in a terminal.

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

After installing, type/cloud-infrastructure-securityin Claude Code to confirm it loaded.

Details

From the project README

Cloud & Infrastructure Security Skill | 雲端基礎設施安全

確保雲端基礎設施、CI/CD pipeline 與部署配置遵循安全最佳實踐並符合業界標準。

適用情境

  • 部署應用程式到雲端平台(AWS, Vercel, Railway, Cloudflare)
  • 配置 IAM 角色與權限
  • 設定 CI/CD pipeline
  • 實作基礎設施即程式碼(Terraform, CloudFormation)
  • 配置日誌與監控
  • 管理雲端環境中的 secrets
  • 設定 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 policy 遵循最小權限
  • 定期進行存取審查
  • 未使用的憑證已輪替或移除

2. Secrets 管理
雲端 Secrets Manager
// ✅ 正確:使用雲端 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; // 不輪替,不審計
驗證步驟
  • 所有 secrets 存放在雲端 secrets manager
  • 資料庫憑證啟用自動輪替
  • API keys 至少每季輪替
  • 程式碼、日誌或錯誤訊息中沒有 secrets
  • 啟用 secret 存取審計日誌

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 port 限制為 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 Pipeline 安全
安全的 Pipeline 配置
# ✅ 正確:安全的 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 取代長期憑證
  • Pipeline 中進行 secrets 掃描
  • 依賴漏洞掃描
  • Container image 掃描(如適用)
  • 強制分支保護規則
  • 合併前需要程式碼審查
  • 強制簽署提交

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 規則
  • 配置速率限制
  • 啟動 Bot 防護
  • 啟用 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、最小權限 policy
  • Secrets:所有 secrets 在雲端 secrets manager 並輪替
  • 網路:安全群組受限、無公開資料庫
  • 日誌:CloudWatch/logging 啟用並設定保留
  • 監控:配置異常警報
  • CI/CD:OIDC 認證、secrets 掃描、依賴審計
  • CDN/WAF:Cloudflare WAF 啟用 OWASP 規則
  • 加密:靜態和傳輸中資料已加密
  • 備份:自動備份並測試過復原
  • 合規:符合 GDPR/HIPAA 要求(如適用)
  • 文件:基礎設施已文件化、runbooks 已建立
  • 事件回應:安全事件計畫已就位

常見雲端安全配置錯誤

S3 Bucket 曝露
# ❌ 錯誤:公開 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 bucket 或過度寬鬆的 IAM policy 可能危及整個基礎設施。永遠遵循最小權限原則與縱深防禦。

Comments

Markdown supported