Iac security
Skill ShieldNet-360/secure-vibe/dist/copilot-skills/.github/skills/iac-security
SecureVibe — prevention-first security for AI-written code. Signed SKILL.md knowledge that makes AI coding assistants write secure code at generation time, plus a deterministic CI gate. Offline · keyless · Ed25519-signed. By ShieldNet360.
npx -y skills add ShieldNet-360/secure-vibe --skill iac-securityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Hardening rules for Terraform, CloudFormation, and Pulumi: state, providers, drift, secrets — Applies to: when generating Terraform / Pulumi / CloudFormation; when reviewing IaC changes in PR; when wiring up a new cloud account or workspace
SKILL.md
3.2 KB, 753 tokens by cl100k_base, as published. Nobody here has run it
Infrastructure-as-Code Security
Hardening rules for Terraform, CloudFormation, and Pulumi: state, providers, drift, secrets
ALWAYS
- Pin every provider/module to an exact version or a pessimistic constraint (
~> 5.42); never>= 0or unpinnedlatest. - Configure a remote backend with encryption at rest, server-side state locking, and versioning (Terraform:
s3+ DynamoDB lock table withkms_key_id; Pulumi: the managed backend ors3://?kmskey=; CloudFormation: managed by AWS). - Encrypt every persistent resource by default with a customer-managed KMS key: S3 buckets, EBS volumes, RDS, EFS, DynamoDB, SQS, SNS, CloudWatch log groups.
- Tag every resource with
owner,environment,cost-center, anddata-classificationvia a default tags block. - Run
terraform plan(orpulumi preview,aws cloudformation deploy --no-execute-changeset) in CI and require a human approval beforeapplyon production stacks. - Add a drift-detection job that runs daily and opens an issue when actual cloud state diverges from code (Terraform Cloud drift detection,
pulumi refresh,cfn-drift-detect). - Use IAM Conditions to scope every role:
aws:SourceArn,aws:SourceAccount,aws:PrincipalOrgID, and TLS-only access policies on storage.
NEVER
- Hardcode provider credentials in the code or
.tfvars(access_key,secret_key,client_secret,service_account_key). Use OIDC federation from CI, the provider's instance metadata service, or a secret manager. - Commit
terraform.tfstate,terraform.tfstate.backup,.pulumi/, or any*.tfvarscontaining real secrets. They contain plaintext secrets even if the code references variables. - Use
local_exec/null_resourceto fetch secrets at apply time and stash them in state. State is queryable plaintext by anyone with backend read access. - Open security groups / firewall rules to
0.0.0.0/0for ports 22, 3389, 3306, 5432, 1433, 6379, 27017, 9200, 11211 — even for "just dev". Use bastion or VPN. - Grant
*:*(wildcard action on wildcard resource) IAM policies. Useiam:PassRolewith explicit resource ARNs. - Disable provider TLS verification (
skip_tls_verify,insecure = true). - Use
count = 0to "soft-delete" resources you actually want gone — destroy them.
KNOWN FALSE POSITIVES
- Bastion hosts intentionally exposed on port 22 to the internet with hardened configurations are not the same risk as opening RDS to the world. Document the exception inline.
- Public CloudFront distributions, ALB listeners on 80/443, API Gateways, and Lambda function URLs that are meant to be internet-facing.
- Bootstrap resources (the S3 bucket and DynamoDB lock table the backend itself uses) must exist before remote state can; this chicken-and-egg is usually bootstrapped by a one-time
localbackend that's then migrated.
What ships with it: 1 file
962 B alongside SKILL.md
- metadata.json962 B