mcpField
C
Cloud Security & Container Hardening

Cloud Security & Container Hardening

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

Cloud Security & Container Hardening について

AWS、Azure、GCP のクラウド、コンテナ、Kubernetes、IaC のセキュリティ評価を支援する Claude スキルです。設定レビューやスキャンの手順に、コンプライアンス対応付けと攻撃経路に基づく所見を組み合わせます。

主な機能

  1. 01AWS、Azure、GCP のセキュリティレビュー
  2. 02Docker と Kubernetes の強化
  3. 03Terraform と CloudFormation のスキャン
  4. 04クラウドコンプライアンスの対応付け
  5. 05コンテナイメージスキャンのガイダンス
  6. 06攻撃経路に基づく所見

活用シーン

  1. 01クラウドの ID とストレージ設定の監査
  2. 02Dockerfile または Kubernetes マニフェストのレビュー
  3. 03Terraform または CloudFormation ファイルのスキャン
  4. 04クラウドの所見をコンプライアンス管理策に対応付け

インストール

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

$npx skills add https://github.com/masriyan/claude-code-cybersecurity-skill --skill cloud-security-&-container-hardening

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
example_usage.md
scripts/
iac_scanner.py
cloud_auditor.py

詳細

クラウドセキュリティとコンテナの強化

目的

Claude が AWS、Azure、GCP のクラウドセキュリティ評価、コンテナと Kubernetes のセキュリティ強化、Infrastructure as Code(Terraform、CloudFormation、Kubernetes マニフェスト)のスキャン、CIS Benchmarks および主要なフレームワークに基づくクラウドコンプライアンスレポートを支援できるようにします。


有効化のトリガー

次の内容についてユーザーから質問があった場合、このスキルが有効になります。

  • AWS IAM、S3、セキュリティグループ、またはクラウドサービスの監査
  • Azure RBAC、ストレージ、NSG、または Key Vault 設定のレビュー
  • GCP IAM、Cloud Storage、または GKE のセキュリティ評価
  • Terraform ファイル、CloudFormation テンプレート、または Kubernetes マニフェストのスキャン
  • Docker コンテナの強化、または Dockerfile のレビュー
  • Kubernetes RBAC、Pod セキュリティ、またはネットワークポリシー
  • クラウドコンプライアンス(CIS、SOC2、PCI-DSS、HIPAA)
  • コンテナイメージの脆弱性スキャン
  • クラウドアーキテクチャのセキュリティレビュー
  • IaC セキュリティスキャン(tfsec、Checkov、Terrascan)

前提条件

pip install pyyaml boto3 requests

推奨するクラウドセキュリティツール:

  • AWS CLI — AWS の監査と管理
  • ScoutSuite — マルチクラウドのセキュリティ監査
  • Prowler — AWS/Azure/GCP のセキュリティ評価
  • Checkov — IaC の静的解析
  • tfsec — Terraform セキュリティスキャナー
  • Trivy — コンテナと IaC の脆弱性スキャナー
  • kube-bench — CIS Kubernetes Benchmark
  • Falco — コンテナのランタイムセキュリティ

主な機能

1. AWS セキュリティ監査

ユーザーが AWS セキュリティの監査を依頼した場合:

CLI を使用した AWS セキュリティのクイックチェック:

# IAM: Find users without MFA
aws iam get-account-summary
aws iam list-users | jq '.Users[].UserName' | xargs -I{} aws iam list-mfa-devices --user-name {}

# Find overly permissive policies
aws iam list-policies --scope Local --only-attached | jq '.Policies[].PolicyName'

# S3: Find public buckets
aws s3api list-buckets --query 'Buckets[].Name' | xargs -I{} aws s3api get-bucket-acl --bucket {}
aws s3api list-buckets --query 'Buckets[].Name' | xargs -I{} aws s3api get-bucket-policy-status --bucket {}

# Security groups: Find wide-open rules
aws ec2 describe-security-groups --filters "Name=ip-permission.cidr,Values=0.0.0.0/0" \
  --query 'SecurityGroups[*].{ID:GroupId,Name:GroupName,Rules:IpPermissions}'

# CloudTrail: Verify logging
aws cloudtrail describe-trails
aws cloudtrail get-trail-status --name [trail-name]

# Root account check
aws iam get-account-summary --query 'SummaryMap.AccountMFAEnabled'

AWS IAM セキュリティチェックリスト:

Identity & Access Management:
[ ] Root account has MFA enabled
[ ] Root account has no access keys
[ ] All IAM users have MFA enabled
[ ] No IAM users with AdministratorAccess unless necessary
[ ] All IAM users have individual credentials (no shared)
[ ] Password policy: min 14 chars, complexity, rotation ≤90 days
[ ] Access keys rotated every 90 days
[ ] Unused credentials disabled (>90 days no use)
[ ] No inline policies; use managed policies

S3 Security:
[ ] Block Public Access enabled at account level
[ ] No buckets with public READ ACL
[ ] Server-side encryption enabled (SSE-S3 or SSE-KMS)
[ ] Versioning enabled for critical buckets
[ ] MFA Delete enabled for critical buckets
[ ] Access logging enabled
[ ] Bucket policies use HTTPS-only conditions

Networking:
[ ] No security groups with 0.0.0.0/0 → port 22 (SSH)
[ ] No security groups with 0.0.0.0/0 → port 3389 (RDP)
[ ] VPC Flow Logs enabled
[ ] No default VPC in use for production workloads
[ ] Private subnets for database and application tiers

Monitoring & Detection:
[ ] CloudTrail enabled in all regions
[ ] CloudTrail log file integrity validation enabled
[ ] GuardDuty enabled
[ ] Security Hub enabled and findings reviewed
[ ] Config rules configured for compliance
[ ] CloudWatch alarms for: root login, failed auth, security group changes

AWS の重大な検出事項のテンプレート:

**CRITICAL: S3 Bucket Publicly Readable**
Bucket: example-data-prod
Finding: GetBucketAcl returns AllUsers:READ
Risk: All objects publicly readable — potential data breach
Fix: aws s3api put-bucket-acl --bucket example-data-prod --acl private
     Enable: aws s3api put-public-access-block --bucket example-data-prod \
       --public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

**HIGH: Security Group Allows SSH from Internet**
Group: sg-0abc123 (web-servers)
Rule: Inbound TCP 22 from 0.0.0.0/0
Risk: SSH brute-force, CVE exploitation
Fix: Change source from 0.0.0.0/0 to your VPN/bastion host IP
2. Azure セキュリティ監査

ユーザーが Azure の監査を依頼した場合:

# Login and set subscription
az login
az account set --subscription [subscription-id]

# Check RBAC assignments
az role assignment list --all --include-inherited \
  --query "[?roleDefinitionName=='Owner' || roleDefinitionName=='Contributor'].{Name:principalName,Role:roleDefinitionName}"

# Storage account public access
az storage account list --query "[?allowBlobPublicAccess==true].name"

# NSG rules allowing any source
az network nsg list --query "[*].{NSG:name}" | jq '.[].NSG' | xargs -I{} \
  az network nsg rule list --nsg-name {} --resource-group [rg] \
  --query "[?sourceAddressPrefix=='*'].{Rule:name,Port:destinationPortRange}"

# Key Vault access policies
az keyvault list --query "[*].name" | xargs -I{} az keyvault show --name {} \
  --query 'properties.accessPolicies'

Azure セキュリティチェックリスト:

Identity:
[ ] Global Administrator role has MFA
[ ] No more than 3-5 Global Administrators
[ ] Privileged Identity Management (PIM) for elevated roles
[ ] Guest accounts reviewed quarterly
[ ] Legacy authentication blocked (Conditional Access)

Storage:
[ ] No public blob containers (allowBlobPublicAccess = false)
[ ] Secure transfer required (HTTPS only)
[ ] Storage accounts use private endpoints
[ ] Storage logs enabled (read/write/delete)
[ ] Customer-managed keys for sensitive data

Networking:
[ ] NSGs restrict management ports (22, 3389) from internet
[ ] Azure DDoS Protection enabled
[ ] Network Watcher flow logs enabled

Monitoring:
[ ] Azure Monitor Diagnostic Settings for all resources
[ ] Security Center (Defender for Cloud) enabled
[ ] Log Analytics Workspace connected
[ ] Alerts for privileged role assignments
3. コンテナセキュリティ(Docker)

ユーザーが Dockerfile またはコンテナセキュリティのレビューを依頼した場合:

Claude は Dockerfile を直接読み取り、分析します。

Dockerfile セキュリティレビュー:

# BEFORE (insecure)
FROM ubuntu:latest           # ← Never use latest
RUN apt-get install -y curl  # ← Install what you need during build
COPY . .                     # ← Copies everything including .env files
RUN chmod 777 /app           # ← World-writable is dangerous
CMD ["./app"]                # ← Runs as root by default
EXPOSE 0-65535               # ← Never expose all ports

# AFTER (secure)
FROM ubuntu:24.04 AS builder            # Pin specific version
RUN apt-get update && apt-get install -y --no-install-recommends curl \
    && rm -rf /var/lib/apt/lists/*      # Clean up after install
WORKDIR /app

FROM ubuntu:24.04 AS runtime           # Multi-stage: minimal runtime image
WORKDIR /app
COPY --from=builder /app/bin/myapp ./  # Only copy what's needed
RUN groupadd -r appgroup && useradd -r -g appgroup appuser
RUN chown -R appuser:appgroup /app
USER appuser                           # Non-root user
EXPOSE 8080                            # Only expose necessary port
HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:8080/health || exit 1
CMD ["./myapp"]

Dockerfile 監査チェックリスト:

[ ] Base image version pinned (not latest)
[ ] Multi-stage build used to minimize final image
[ ] Runs as non-root user (USER instruction)
[ ] No COPY . . (copies .env, secrets)
[ ] .dockerignore exists and excludes .env, *.key, secrets/
[ ] Package caches cleaned after installation (rm -rf /var/lib/apt/lists/*)
[ ] No RUN commands with passwords, tokens, or secrets
[ ] HEALTHCHECK defined
[ ] Only necessary ports EXPOSE'd
[ ] Read-only filesystem where possible
[ ] No setuid/setgid binaries in final image

コンテナイメージのスキャン:

# Scan with Trivy
trivy image myapp:latest --severity HIGH,CRITICAL
trivy image myapp:latest --format json --output scan-results.json

# Docker bench security (runtime checks)
docker run --rm --net host --pid host --userns host --cap-add audit_control \
  -v /etc:/etc:ro -v /usr/bin/containerd:/usr/bin/containerd:ro \
  -v /usr/bin/runc:/usr/bin/runc:ro \
  -v /usr/lib/systemd:/usr/lib/systemd:ro \
  -v /var/lib:/var/lib:ro -v /var/run/docker.sock:/var/run/docker.sock:ro \
  docker/docker-bench-security
4. Kubernetes セキュリティ

ユーザーが Kubernetes セキュリティの監査を依頼した場合:

# Run CIS Kubernetes Benchmark
docker run --pid=host -v /etc:/etc:ro -v /var/lib:/var/lib:ro \
  -v /usr/bin/kubelet:/usr/bin/kubelet:ro \
  aquasec/kube-bench:latest

# Check for privileged pods
kubectl get pods --all-namespaces -o json | \
  jq '.items[] | select(.spec.containers[].securityContext.privileged==true) | 
      .metadata.name + " in " + .metadata.namespace'

# Check RBAC for overly permissive ClusterRoles
kubectl get clusterrolebindings -o json | \
  jq '.items[] | select(.roleRef.name=="cluster-admin") | .subjects[]?'

# Check for pods running as root
kubectl get pods --all-namespaces -o json | \
  jq '.items[] | select(.spec.securityContext.runAsUser==0 or 
      .spec.containers[].securityContext.runAsUser==0) | .metadata.name'

セキュアな Pod 仕様のテンプレート:

apiVersion: v1
kind: Pod
metadata:
  name: secure-app
spec:
  securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    runAsGroup: 1000
    fsGroup: 2000
    seccompProfile:
      type: RuntimeDefault
  
  automountServiceAccountToken: false  # Disable unless needed
  
  containers:
  - name: app
    image: myapp:v1.2.3@sha256:abc123  # Pin by digest
    securityContext:
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
      runAsNonRoot: true
      capabilities:
        drop:
          - ALL              # Drop ALL capabilities
        add:
          - NET_BIND_SERVICE  # Add back only what's needed
    
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"      # Always set limits
        cpu: "500m"
    
    volumeMounts:
    - name: tmp
      mountPath: /tmp        # Writable volume for /tmp if needed
  
  volumes:
  - name: tmp
    emptyDir: {}

Kubernetes セキュリティチェックリスト:

RBAC:
[ ] No wildcards (*) in ClusterRole rules
[ ] cluster-admin role not assigned to service accounts
[ ] Each workload uses a dedicated service account
[ ] ServiceAccount token auto-mount disabled by default

Pod Security:
[ ] All pods have securityContext defined
[ ] runAsNonRoot: true for all containers
[ ] allowPrivilegeEscalation: false
[ ] readOnlyRootFilesystem: true where possible
[ ] capabilities: drop: [ALL]
[ ] No hostPID, hostIPC, hostNetwork
[ ] No privileged: true

Networking:
[ ] Default deny NetworkPolicy in all namespaces
[ ] Only required pod-to-pod communication allowed
[ ] Egress restricted (not just ingress)

Secrets Management:
[ ] No secrets in environment variables (use mounted secrets or vault)
[ ] No secrets in ConfigMaps
[ ] External secrets management (Vault, AWS SSM, Azure Key Vault)
[ ] ETCD encryption at rest enabled

Image Security:
[ ] All images from private registry (not Docker Hub public)
[ ] Image digest pinning (not mutable tags)
[ ] Admission controller (OPA, Kyverno) enforcing policy
[ ] Image scanning in CI/CD pipeline
5. IaC セキュリティスキャン

ユーザーが Terraform または CloudFormation のスキャンを依頼した場合:

Claude は IaC ファイルを直接読み取り、問題を特定します。

Terraform でよくある設定ミス:

# INSECURE: S3 bucket with public access
resource "aws_s3_bucket" "bad" {
  bucket = "my-bucket"
  acl    = "public-read"          # ← PUBLIC READ!
}

# SECURE: S3 bucket with all public access blocked
resource "aws_s3_bucket" "good" {
  bucket = "my-bucket"
}
resource "aws_s3_bucket_public_access_block" "good" {
  bucket                  = aws_s3_bucket.good.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

# INSECURE: Security group allows all inbound
resource "aws_security_group_rule" "bad" {
  type        = "ingress"
  from_port   = 0
  to_port     = 65535
  protocol    = "tcp"
  cidr_blocks = ["0.0.0.0/0"]    # ← OPEN TO INTERNET!
}

IaC の自動スキャン:

# Checkov (Terraform, CloudFormation, K8s, Dockerfile)
checkov -d ./terraform/ --framework terraform --output json > checkov-results.json
checkov -d ./k8s-manifests/ --framework kubernetes

# tfsec (Terraform focused)
tfsec ./terraform/ --format json --out tfsec-results.json

# Trivy (IaC, container, filesystem)
trivy config ./terraform/
trivy config ./k8s-manifests/

# Use iac_scanner.py
python scripts/iac_scanner.py --path ./terraform/ --output findings.json
python scripts/iac_scanner.py --path ./k8s-manifests/ --type kubernetes --output k8s_audit.json

コンプライアンスフレームワークとの対応

検出事項CIS AWSSOC2PCI-DSSHIPAA
MFA が適用されていない1.10, 1.14CC6.18.3.2164.312(d)
S3 バケットが公開されている2.1.5CC6.73.4164.312(a)(2)(iv)
CloudTrail が無効になっている3.1, 3.2CC7.210.2164.312(b)
SSH がインターネットに公開されている5.2CC6.61.2.1164.312(e)(1)
ルートアカウントが使用されている1.7CC6.17.1.1164.308(a)(1)

スクリプトのリファレンス

iac_scanner.py
python scripts/iac_scanner.py --path ./terraform/ --output findings.json
python scripts/iac_scanner.py --path ./k8s-manifests/ --type kubernetes --output k8s_audit.json

スキルの連携

条件関連スキル
偵察でクラウドアセットが見つかった場合← スキル 01(偵察と OSINT)
CSOC アラート向けのクラウド脆弱性→ スキル 11(CSOC 自動化)
クラウド強化の推奨事項を実装する場合→ スキル 15(ブルーチーム防御)

参考資料


v3.0 の強化点(2026 年更新)

攻撃経路主導のクラウドセキュリティ:

  • アイデンティティが境界です — 特権昇格につながる経路(過剰な権限を持つロール、iam:PassRole、ワイルドカードアクション、クロスアカウント信頼、CI/CD への OIDC フェデレーション)を列挙します。個別の設定ミスではなく、攻撃経路(CNAPP/CSPM スタイル)として考えます。
  • インスタンスメタデータ — AWS ではホップ制限 1 の IMDSv2 を必須にします。Azure/GCP のメタデータ保護が SSRF を防げることを検証します(スキル 09 に関連)。
  • Kubernetes 2026 — Pod Security Admission(baseline/restricted)、ワークロード ID(EKS Pod Identity / GKE Workload Identity / AKS)、デフォルトの SA に cluster-admin を付与しないこと、デフォルト拒否のネットワークポリシー、アドミッション制御(OPA/Gatekeeper、Kyverno)。
  • CI/CD とサプライチェーン — パイプライン内のシークレット、クラウドへの OIDC 信頼、アーティファクト署名(Sigstore/cosign)、SLSA 来歴、Terraform の状態ファイルの露出。
  • ランタイム — コンテナーエスケープや暗号資産マイニングを検知する eBPF ランタイム検出(Falco/Tetragon)。検出結果をクラウド/コンテナー向け MITRE ATT&CK にマッピングします。

精度ルール: 検出結果はそれぞれ、設定ミス → 到達可能なアイデンティティ/データ → 影響範囲 の形式で、正確な CLI/IaC の修正方法とともに報告します。

コメント