opencode-skills-collection 4.0.68 → 4.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +266 -1
  2. package/bundled-skills/access-review/SKILL.md +394 -0
  3. package/bundled-skills/access-review/references/details.md +121 -0
  4. package/bundled-skills/agent-evals/SKILL.md +420 -0
  5. package/bundled-skills/agent-observability/SKILL.md +346 -0
  6. package/bundled-skills/agent-observability/references/details.md +786 -0
  7. package/bundled-skills/ai-agent-security/SKILL.md +393 -0
  8. package/bundled-skills/ai-agent-security/references/details.md +912 -0
  9. package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
  10. package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
  11. package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
  12. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
  13. package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
  14. package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
  15. package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
  16. package/bundled-skills/alerting-oncall/SKILL.md +458 -0
  17. package/bundled-skills/alerting-oncall/references/details.md +84 -0
  18. package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
  19. package/bundled-skills/argocd-gitops/SKILL.md +469 -0
  20. package/bundled-skills/arm-templates/SKILL.md +438 -0
  21. package/bundled-skills/arm-templates/references/details.md +64 -0
  22. package/bundled-skills/asset-inventory/SKILL.md +412 -0
  23. package/bundled-skills/asset-inventory/references/details.md +127 -0
  24. package/bundled-skills/audit-logging/SKILL.md +476 -0
  25. package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
  26. package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
  27. package/bundled-skills/aws-ec2/SKILL.md +426 -0
  28. package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
  29. package/bundled-skills/aws-iam/SKILL.md +463 -0
  30. package/bundled-skills/aws-lambda/SKILL.md +428 -0
  31. package/bundled-skills/aws-rds/SKILL.md +380 -0
  32. package/bundled-skills/aws-s3/SKILL.md +434 -0
  33. package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
  34. package/bundled-skills/aws-vpc/SKILL.md +436 -0
  35. package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
  36. package/bundled-skills/azure-aks/SKILL.md +423 -0
  37. package/bundled-skills/azure-devops/SKILL.md +457 -0
  38. package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
  39. package/bundled-skills/azure-keyvault/SKILL.md +455 -0
  40. package/bundled-skills/azure-keyvault/references/details.md +83 -0
  41. package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
  42. package/bundled-skills/azure-networking/SKILL.md +448 -0
  43. package/bundled-skills/azure-networking/references/details.md +135 -0
  44. package/bundled-skills/azure-sql/SKILL.md +413 -0
  45. package/bundled-skills/azure-sql/references/details.md +113 -0
  46. package/bundled-skills/azure-vms/SKILL.md +402 -0
  47. package/bundled-skills/azure-vms/references/details.md +134 -0
  48. package/bundled-skills/backup-recovery/SKILL.md +388 -0
  49. package/bundled-skills/bb-methodology/SKILL.md +451 -0
  50. package/bundled-skills/bb-methodology/references/details.md +120 -0
  51. package/bundled-skills/block-storage/SKILL.md +371 -0
  52. package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
  53. package/bundled-skills/blue-green-deploy/references/details.md +90 -0
  54. package/bundled-skills/bug-bounty/SKILL.md +447 -0
  55. package/bundled-skills/bug-bounty/references/details.md +1316 -0
  56. package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
  57. package/bundled-skills/business-continuity/SKILL.md +463 -0
  58. package/bundled-skills/career-ops/SKILL.md +186 -0
  59. package/bundled-skills/cdn-setup/SKILL.md +374 -0
  60. package/bundled-skills/change-management/SKILL.md +438 -0
  61. package/bundled-skills/change-management/references/details.md +105 -0
  62. package/bundled-skills/circleci/SKILL.md +475 -0
  63. package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
  64. package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
  65. package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
  66. package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
  67. package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
  68. package/bundled-skills/cloudformation/SKILL.md +461 -0
  69. package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
  70. package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
  71. package/bundled-skills/container-hardening/SKILL.md +126 -0
  72. package/bundled-skills/container-registries/SKILL.md +435 -0
  73. package/bundled-skills/container-scanning/SKILL.md +416 -0
  74. package/bundled-skills/convex-backend/SKILL.md +338 -0
  75. package/bundled-skills/dast-scanning/SKILL.md +437 -0
  76. package/bundled-skills/database-backups/SKILL.md +425 -0
  77. package/bundled-skills/datadog/SKILL.md +487 -0
  78. package/bundled-skills/dependency-scanning/SKILL.md +457 -0
  79. package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
  80. package/bundled-skills/disaster-recovery/SKILL.md +374 -0
  81. package/bundled-skills/disaster-recovery/references/details.md +219 -0
  82. package/bundled-skills/dns-management/SKILL.md +375 -0
  83. package/bundled-skills/docker-compose/SKILL.md +482 -0
  84. package/bundled-skills/docker-management/SKILL.md +426 -0
  85. package/bundled-skills/ebpf-observability/SKILL.md +436 -0
  86. package/bundled-skills/ebpf-observability/references/details.md +542 -0
  87. package/bundled-skills/elk-stack/SKILL.md +487 -0
  88. package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
  89. package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
  90. package/bundled-skills/feature-flags/SKILL.md +426 -0
  91. package/bundled-skills/feature-flags/references/details.md +86 -0
  92. package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
  93. package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
  94. package/bundled-skills/firewall-config/SKILL.md +479 -0
  95. package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
  96. package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
  97. package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
  98. package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
  99. package/bundled-skills/gcp-compute/SKILL.md +319 -0
  100. package/bundled-skills/gcp-gke/SKILL.md +307 -0
  101. package/bundled-skills/gcp-networking/SKILL.md +293 -0
  102. package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
  103. package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
  104. package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
  105. package/bundled-skills/gdpr-compliance/references/details.md +145 -0
  106. package/bundled-skills/geo-audit/SKILL.md +368 -0
  107. package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
  108. package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
  109. package/bundled-skills/geo-citability/SKILL.md +350 -0
  110. package/bundled-skills/geo-compare/SKILL.md +340 -0
  111. package/bundled-skills/geo-content/SKILL.md +383 -0
  112. package/bundled-skills/geo-crawlers/SKILL.md +408 -0
  113. package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
  114. package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
  115. package/bundled-skills/geo-proposal/SKILL.md +378 -0
  116. package/bundled-skills/geo-prospect/SKILL.md +225 -0
  117. package/bundled-skills/geo-report/SKILL.md +436 -0
  118. package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
  119. package/bundled-skills/geo-schema/SKILL.md +408 -0
  120. package/bundled-skills/geo-technical/SKILL.md +78 -0
  121. package/bundled-skills/geo-technical/references/details.md +543 -0
  122. package/bundled-skills/git-workflow/SKILL.md +460 -0
  123. package/bundled-skills/github-actions/SKILL.md +368 -0
  124. package/bundled-skills/gitlab-ci/SKILL.md +340 -0
  125. package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
  126. package/bundled-skills/gpu-server-management/SKILL.md +236 -0
  127. package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
  128. package/bundled-skills/helm-charts/SKILL.md +469 -0
  129. package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
  130. package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
  131. package/bundled-skills/hunt-ato/SKILL.md +184 -0
  132. package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
  133. package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
  134. package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
  135. package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
  136. package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
  137. package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
  138. package/bundled-skills/hunt-cicd/SKILL.md +311 -0
  139. package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
  140. package/bundled-skills/hunt-cors/SKILL.md +335 -0
  141. package/bundled-skills/hunt-dom/SKILL.md +323 -0
  142. package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
  143. package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
  144. package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
  145. package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
  146. package/bundled-skills/hunt-grpc/SKILL.md +317 -0
  147. package/bundled-skills/hunt-host-header/SKILL.md +309 -0
  148. package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
  149. package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
  150. package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
  151. package/bundled-skills/hunt-idor/SKILL.md +434 -0
  152. package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
  153. package/bundled-skills/hunt-k8s/SKILL.md +337 -0
  154. package/bundled-skills/hunt-laravel/SKILL.md +255 -0
  155. package/bundled-skills/hunt-ldap/SKILL.md +351 -0
  156. package/bundled-skills/hunt-lfi/SKILL.md +311 -0
  157. package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
  158. package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
  159. package/bundled-skills/hunt-misc/SKILL.md +378 -0
  160. package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
  161. package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
  162. package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
  163. package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
  164. package/bundled-skills/hunt-oauth/SKILL.md +459 -0
  165. package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
  166. package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
  167. package/bundled-skills/hunt-race-condition/references/details.md +159 -0
  168. package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
  169. package/bundled-skills/hunt-rce/SKILL.md +444 -0
  170. package/bundled-skills/hunt-rce/references/details.md +110 -0
  171. package/bundled-skills/hunt-saml/SKILL.md +156 -0
  172. package/bundled-skills/hunt-session/SKILL.md +342 -0
  173. package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
  174. package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
  175. package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
  176. package/bundled-skills/hunt-springboot/SKILL.md +285 -0
  177. package/bundled-skills/hunt-sqli/SKILL.md +466 -0
  178. package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
  179. package/bundled-skills/hunt-ssrf/references/details.md +179 -0
  180. package/bundled-skills/hunt-ssti/SKILL.md +163 -0
  181. package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
  182. package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
  183. package/bundled-skills/hunt-xxe/SKILL.md +466 -0
  184. package/bundled-skills/i-have-adhd/SKILL.md +170 -0
  185. package/bundled-skills/identity-access-management/SKILL.md +382 -0
  186. package/bundled-skills/identity-access-management/references/details.md +524 -0
  187. package/bundled-skills/incident-management/SKILL.md +484 -0
  188. package/bundled-skills/incident-response/SKILL.md +448 -0
  189. package/bundled-skills/incident-response/references/details.md +113 -0
  190. package/bundled-skills/interview-me/SKILL.md +248 -0
  191. package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
  192. package/bundled-skills/jenkins/SKILL.md +462 -0
  193. package/bundled-skills/jev-use/SKILL.md +158 -0
  194. package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
  195. package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
  196. package/bundled-skills/kubernetes-ops/references/details.md +108 -0
  197. package/bundled-skills/kustomize/SKILL.md +478 -0
  198. package/bundled-skills/linux-administration/SKILL.md +367 -0
  199. package/bundled-skills/linux-hardening/SKILL.md +154 -0
  200. package/bundled-skills/llm-app-security/SKILL.md +389 -0
  201. package/bundled-skills/llm-app-security/references/details.md +674 -0
  202. package/bundled-skills/llm-caching/SKILL.md +334 -0
  203. package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
  204. package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
  205. package/bundled-skills/llm-gateway/SKILL.md +282 -0
  206. package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
  207. package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
  208. package/bundled-skills/load-balancing/SKILL.md +403 -0
  209. package/bundled-skills/loki-logging/SKILL.md +479 -0
  210. package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
  211. package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
  212. package/bundled-skills/mcp-server-security/SKILL.md +356 -0
  213. package/bundled-skills/mcp-server-security/references/details.md +745 -0
  214. package/bundled-skills/mdm-device-management/SKILL.md +404 -0
  215. package/bundled-skills/mdm-device-management/references/details.md +410 -0
  216. package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
  217. package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
  218. package/bundled-skills/model-registry-governance/SKILL.md +452 -0
  219. package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
  220. package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
  221. package/bundled-skills/mongodb/SKILL.md +436 -0
  222. package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
  223. package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
  224. package/bundled-skills/mysql/SKILL.md +390 -0
  225. package/bundled-skills/new-relic/SKILL.md +472 -0
  226. package/bundled-skills/nfs-storage/SKILL.md +356 -0
  227. package/bundled-skills/object-storage/SKILL.md +378 -0
  228. package/bundled-skills/offensive-osint/SKILL.md +443 -0
  229. package/bundled-skills/okta-attack/SKILL.md +436 -0
  230. package/bundled-skills/ollama-stack/SKILL.md +379 -0
  231. package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
  232. package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
  233. package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
  234. package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
  235. package/bundled-skills/openshift/SKILL.md +485 -0
  236. package/bundled-skills/opentelemetry/SKILL.md +438 -0
  237. package/bundled-skills/opentelemetry/references/details.md +78 -0
  238. package/bundled-skills/opentofu-migration/SKILL.md +349 -0
  239. package/bundled-skills/osint-methodology/SKILL.md +460 -0
  240. package/bundled-skills/osint-methodology/references/details.md +1350 -0
  241. package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
  242. package/bundled-skills/penetration-testing/SKILL.md +152 -0
  243. package/bundled-skills/performance-tuning/SKILL.md +381 -0
  244. package/bundled-skills/planetscale/SKILL.md +297 -0
  245. package/bundled-skills/platform-engineering/SKILL.md +348 -0
  246. package/bundled-skills/platform-engineering/references/details.md +944 -0
  247. package/bundled-skills/podman/SKILL.md +405 -0
  248. package/bundled-skills/policy-as-code/SKILL.md +434 -0
  249. package/bundled-skills/policy-as-code/references/details.md +204 -0
  250. package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
  251. package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
  252. package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
  253. package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
  254. package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
  255. package/bundled-skills/rag-observability-evals/references/details.md +92 -0
  256. package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
  257. package/bundled-skills/redis/SKILL.md +421 -0
  258. package/bundled-skills/redteam-report-template/SKILL.md +370 -0
  259. package/bundled-skills/report-writing/SKILL.md +426 -0
  260. package/bundled-skills/report-writing/references/details.md +187 -0
  261. package/bundled-skills/reverse-proxy/SKILL.md +420 -0
  262. package/bundled-skills/runbook-creation/SKILL.md +438 -0
  263. package/bundled-skills/runbook-creation/references/details.md +71 -0
  264. package/bundled-skills/saas-security-posture/SKILL.md +415 -0
  265. package/bundled-skills/sast-scanning/SKILL.md +444 -0
  266. package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
  267. package/bundled-skills/security-arsenal/SKILL.md +446 -0
  268. package/bundled-skills/security-arsenal/references/details.md +540 -0
  269. package/bundled-skills/security-automation/SKILL.md +146 -0
  270. package/bundled-skills/semantic-versioning/SKILL.md +434 -0
  271. package/bundled-skills/semantic-versioning/references/details.md +83 -0
  272. package/bundled-skills/service-mesh/SKILL.md +422 -0
  273. package/bundled-skills/soc2-compliance/SKILL.md +409 -0
  274. package/bundled-skills/sops-encryption/SKILL.md +124 -0
  275. package/bundled-skills/sre-dashboards/SKILL.md +143 -0
  276. package/bundled-skills/ssh-configuration/SKILL.md +324 -0
  277. package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
  278. package/bundled-skills/ssl-tls-management/references/details.md +99 -0
  279. package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
  280. package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
  281. package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
  282. package/bundled-skills/systemd-services/SKILL.md +379 -0
  283. package/bundled-skills/terraform-aws/SKILL.md +125 -0
  284. package/bundled-skills/terraform-azure/SKILL.md +415 -0
  285. package/bundled-skills/terraform-azure/references/details.md +231 -0
  286. package/bundled-skills/terraform-gcp/SKILL.md +369 -0
  287. package/bundled-skills/threat-modeling/SKILL.md +487 -0
  288. package/bundled-skills/user-management/SKILL.md +383 -0
  289. package/bundled-skills/using-agent-skills/SKILL.md +220 -0
  290. package/bundled-skills/vector-database-ops/SKILL.md +300 -0
  291. package/bundled-skills/vendor-management/SKILL.md +439 -0
  292. package/bundled-skills/vendor-management/references/details.md +109 -0
  293. package/bundled-skills/vercel-deployments/SKILL.md +296 -0
  294. package/bundled-skills/vllm-server/SKILL.md +236 -0
  295. package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
  296. package/bundled-skills/vpn-setup/SKILL.md +452 -0
  297. package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
  298. package/bundled-skills/waf-setup/SKILL.md +354 -0
  299. package/bundled-skills/waf-setup/references/details.md +211 -0
  300. package/bundled-skills/web2-recon/SKILL.md +440 -0
  301. package/bundled-skills/web2-recon/references/details.md +319 -0
  302. package/bundled-skills/web3-audit/SKILL.md +445 -0
  303. package/bundled-skills/web3-audit/references/details.md +224 -0
  304. package/bundled-skills/windows-hardening/SKILL.md +454 -0
  305. package/bundled-skills/windows-hardening/references/details.md +204 -0
  306. package/bundled-skills/windows-server/SKILL.md +318 -0
  307. package/bundled-skills/zero-trust/SKILL.md +461 -0
  308. package/package.json +1 -1
  309. package/skills_index.json +6943 -323
@@ -0,0 +1,486 @@
1
+ ---
2
+ name: aws-secrets-manager
3
+ description: Store and rotate secrets in AWS Secrets Manager.
4
+ category: security
5
+ risk: critical
6
+ source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
7
+ source_repo: BagelHole/DevOps-Security-Agent-Skills
8
+ source_type: community
9
+ date_added: '2026-09-20'
10
+ license: MIT
11
+ license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
12
+ compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
13
+ authorized scope for any active assessment. Docs-only; helper scripts and templates
14
+ not bundled.
15
+ metadata:
16
+ author: devops-skills
17
+ version: '1.0'
18
+ ---
19
+
20
+ # AWS Secrets Manager
21
+
22
+ Securely store, manage, and rotate secrets in AWS.
23
+
24
+ ## When to Use This Skill
25
+
26
+ Use this skill when:
27
+ - Storing database credentials, API keys, or tokens in AWS
28
+ - Implementing automatic credential rotation for RDS or other services
29
+ - Replacing hardcoded secrets in application code or config files
30
+ - Integrating secrets into ECS, EKS, or Lambda workloads
31
+ - Meeting compliance requirements for secret management and rotation
32
+
33
+ ## Prerequisites
34
+
35
+ - AWS account with appropriate IAM permissions
36
+ - AWS CLI v2 installed and configured
37
+ - IAM policy allowing `secretsmanager:*` actions (or scoped permissions)
38
+ - For rotation: Lambda execution role and VPC access to target services
39
+ - Python 3.9+ with `boto3` for SDK examples
40
+
41
+ ## Secret Creation and Management
42
+
43
+ ```bash
44
+ # Create a secret with JSON structure
45
+ aws secretsmanager create-secret \
46
+ --name myapp/production/database \
47
+ --description "Production database credentials" \
48
+ --secret-string '{"username":"dbadmin","password":"S3cur3P@ssw0rd!","engine":"postgres","host":"db.internal.example.com","port":5432,"dbname":"myapp"}' \
49
+ --tags '[{"Key":"Environment","Value":"production"},{"Key":"Team","Value":"platform"}]'
50
+
51
+ # Create a secret with KMS encryption (custom key)
52
+ aws secretsmanager create-secret \
53
+ --name myapp/production/api-key \
54
+ --description "Third-party API key" \
55
+ --secret-string "ak_live_xxxxxxxxxxxx" \
56
+ --kms-key-id alias/secrets-key
57
+
58
+ # Create a binary secret (certificates, keys)
59
+ aws secretsmanager create-secret \
60
+ --name myapp/production/tls-cert \
61
+ --secret-binary fileb://server.pfx
62
+
63
+ # Get secret value
64
+ aws secretsmanager get-secret-value \
65
+ --secret-id myapp/production/database \
66
+ --query 'SecretString' --output text | jq .
67
+
68
+ # Get a specific version
69
+ aws secretsmanager get-secret-value \
70
+ --secret-id myapp/production/database \
71
+ --version-stage AWSPREVIOUS
72
+
73
+ # Update secret value
74
+ aws secretsmanager put-secret-value \
75
+ --secret-id myapp/production/database \
76
+ --secret-string '{"username":"dbadmin","password":"N3wS3cur3P@ss!","engine":"postgres","host":"db.internal.example.com","port":5432,"dbname":"myapp"}'
77
+
78
+ # List all secrets
79
+ aws secretsmanager list-secrets \
80
+ --filters Key=name,Values=myapp/production
81
+
82
+ # Delete secret (with recovery window)
83
+ aws secretsmanager delete-secret \
84
+ --secret-id myapp/production/old-key \
85
+ --recovery-window-in-days 7
86
+
87
+ # Restore a deleted secret
88
+ aws secretsmanager restore-secret \
89
+ --secret-id myapp/production/old-key
90
+
91
+ # Tag a secret
92
+ aws secretsmanager tag-resource \
93
+ --secret-id myapp/production/database \
94
+ --tags '[{"Key":"RotationEnabled","Value":"true"}]'
95
+ ```
96
+
97
+ ## Automatic Rotation
98
+
99
+ ### Enable Rotation
100
+
101
+ ```bash
102
+ # Enable rotation with an existing Lambda function
103
+ aws secretsmanager rotate-secret \
104
+ --secret-id myapp/production/database \
105
+ --rotation-lambda-arn arn:aws:lambda:us-east-1:123456789012:function:SecretsManagerRDSPostgreSQLRotation \
106
+ --rotation-rules '{"AutomaticallyAfterDays":30,"ScheduleExpression":"rate(30 days)"}'
107
+
108
+ # Trigger immediate rotation
109
+ aws secretsmanager rotate-secret \
110
+ --secret-id myapp/production/database
111
+
112
+ # Check rotation status
113
+ aws secretsmanager describe-secret \
114
+ --secret-id myapp/production/database \
115
+ --query '{RotationEnabled:RotationEnabled,RotationLambdaARN:RotationLambdaARN,RotationRules:RotationRules,LastRotatedDate:LastRotatedDate}'
116
+ ```
117
+
118
+ ### Lambda Rotation Function
119
+
120
+ ```python
121
+ """rotation_function.py - Custom rotation Lambda for database credentials."""
122
+
123
+ import boto3
124
+ import json
125
+ import logging
126
+ import psycopg2
127
+
128
+ logger = logging.getLogger()
129
+ logger.setLevel(logging.INFO)
130
+
131
+ def lambda_handler(event, context):
132
+ """Secrets Manager rotation handler.
133
+
134
+ The rotation process has four steps:
135
+ 1. createSecret - Generate new secret value
136
+ 2. setSecret - Apply the new secret to the target service
137
+ 3. testSecret - Verify the new secret works
138
+ 4. finishSecret - Mark rotation complete
139
+ """
140
+ secret_arn = event['SecretId']
141
+ token = event['ClientRequestToken']
142
+ step = event['Step']
143
+
144
+ client = boto3.client('secretsmanager')
145
+
146
+ metadata = client.describe_secret(SecretId=secret_arn)
147
+ if not metadata.get('RotationEnabled'):
148
+ raise ValueError(f"Secret {secret_arn} does not have rotation enabled")
149
+
150
+ versions = metadata.get('VersionIdsToStages', {})
151
+ if token not in versions:
152
+ raise ValueError(f"Secret version {token} has no stage for rotation")
153
+
154
+ if step == "createSecret":
155
+ create_secret(client, secret_arn, token)
156
+ elif step == "setSecret":
157
+ set_secret(client, secret_arn, token)
158
+ elif step == "testSecret":
159
+ test_secret(client, secret_arn, token)
160
+ elif step == "finishSecret":
161
+ finish_secret(client, secret_arn, token)
162
+ else:
163
+ raise ValueError(f"Invalid step: {step}")
164
+
165
+
166
+ def create_secret(client, secret_arn, token):
167
+ """Generate a new secret value."""
168
+ current = client.get_secret_value(
169
+ SecretId=secret_arn, VersionStage="AWSCURRENT"
170
+ )
171
+ current_dict = json.loads(current['SecretString'])
172
+
173
+ new_password = client.get_random_password(
174
+ PasswordLength=32,
175
+ ExcludeCharacters='/@"\\',
176
+ RequireEachIncludedType=True,
177
+ )['RandomPassword']
178
+
179
+ current_dict['password'] = new_password
180
+ client.put_secret_value(
181
+ SecretId=secret_arn,
182
+ ClientRequestToken=token,
183
+ SecretString=json.dumps(current_dict),
184
+ VersionStages=['AWSPENDING'],
185
+ )
186
+ logger.info(f"createSecret: New secret version created for {secret_arn}")
187
+
188
+
189
+ def set_secret(client, secret_arn, token):
190
+ """Apply the new secret to the target database."""
191
+ pending = client.get_secret_value(
192
+ SecretId=secret_arn, VersionId=token, VersionStage="AWSPENDING"
193
+ )
194
+ pending_dict = json.loads(pending['SecretString'])
195
+
196
+ current = client.get_secret_value(
197
+ SecretId=secret_arn, VersionStage="AWSCURRENT"
198
+ )
199
+ current_dict = json.loads(current['SecretString'])
200
+
201
+ conn = psycopg2.connect(
202
+ host=current_dict['host'],
203
+ port=current_dict.get('port', 5432),
204
+ user=current_dict['username'],
205
+ password=current_dict['password'],
206
+ dbname=current_dict.get('dbname', 'postgres'),
207
+ )
208
+ conn.autocommit = True
209
+ with conn.cursor() as cur:
210
+ cur.execute(
211
+ "ALTER USER %s WITH PASSWORD %s",
212
+ (pending_dict['username'], pending_dict['password']),
213
+ )
214
+ conn.close()
215
+ logger.info(f"setSecret: Password updated in database for {secret_arn}")
216
+
217
+
218
+ def test_secret(client, secret_arn, token):
219
+ """Verify the new secret works."""
220
+ pending = client.get_secret_value(
221
+ SecretId=secret_arn, VersionId=token, VersionStage="AWSPENDING"
222
+ )
223
+ pending_dict = json.loads(pending['SecretString'])
224
+
225
+ conn = psycopg2.connect(
226
+ host=pending_dict['host'],
227
+ port=pending_dict.get('port', 5432),
228
+ user=pending_dict['username'],
229
+ password=pending_dict['password'],
230
+ dbname=pending_dict.get('dbname', 'postgres'),
231
+ )
232
+ conn.close()
233
+ logger.info(f"testSecret: New credentials verified for {secret_arn}")
234
+
235
+
236
+ def finish_secret(client, secret_arn, token):
237
+ """Finalize the rotation by updating version stages."""
238
+ metadata = client.describe_secret(SecretId=secret_arn)
239
+ versions = metadata.get('VersionIdsToStages', {})
240
+
241
+ current_version = None
242
+ for version_id, stages in versions.items():
243
+ if "AWSCURRENT" in stages:
244
+ if version_id == token:
245
+ logger.info("finishSecret: Version already marked AWSCURRENT")
246
+ return
247
+ current_version = version_id
248
+ break
249
+
250
+ client.update_secret_version_stage(
251
+ SecretId=secret_arn,
252
+ VersionStage="AWSCURRENT",
253
+ MoveToVersionId=token,
254
+ RemoveFromVersionId=current_version,
255
+ )
256
+ logger.info(f"finishSecret: Rotation complete for {secret_arn}")
257
+ ```
258
+
259
+ ### Rotation Lambda Terraform
260
+
261
+ ```hcl
262
+ resource "aws_lambda_function" "rotation" {
263
+ filename = "rotation_function.zip"
264
+ function_name = "secrets-rotation-postgresql"
265
+ role = aws_iam_role.rotation.arn
266
+ handler = "rotation_function.lambda_handler"
267
+ runtime = "python3.11"
268
+ timeout = 60
269
+
270
+ vpc_config {
271
+ subnet_ids = var.private_subnet_ids
272
+ security_group_ids = [aws_security_group.rotation.id]
273
+ }
274
+
275
+ environment {
276
+ variables = {
277
+ SECRETS_MANAGER_ENDPOINT = "https://secretsmanager.${var.region}.amazonaws.com"
278
+ }
279
+ }
280
+ }
281
+
282
+ resource "aws_lambda_permission" "secrets_manager" {
283
+ action = "lambda:InvokeFunction"
284
+ function_name = aws_lambda_function.rotation.function_name
285
+ principal = "secretsmanager.amazonaws.com"
286
+ statement_id = "AllowSecretsManager"
287
+ }
288
+
289
+ resource "aws_secretsmanager_secret_rotation" "db" {
290
+ secret_id = aws_secretsmanager_secret.db.id
291
+ rotation_lambda_arn = aws_lambda_function.rotation.arn
292
+ rotation_rules {
293
+ automatically_after_days = 30
294
+ }
295
+ }
296
+ ```
297
+
298
+ ## Application Integration
299
+
300
+ ### Python SDK
301
+
302
+ ```python
303
+ import boto3
304
+ import json
305
+ from functools import lru_cache
306
+
307
+ def get_secret(secret_name: str, region: str = "us-east-1") -> dict:
308
+ """Retrieve and parse a secret from AWS Secrets Manager."""
309
+ client = boto3.client("secretsmanager", region_name=region)
310
+ response = client.get_secret_value(SecretId=secret_name)
311
+ if "SecretString" in response:
312
+ return json.loads(response["SecretString"])
313
+ else:
314
+ import base64
315
+ return base64.b64decode(response["SecretBinary"])
316
+
317
+ @lru_cache(maxsize=32)
318
+ def get_cached_secret(secret_name: str) -> dict:
319
+ """Cached secret retrieval. Clear cache on rotation events."""
320
+ return get_secret(secret_name)
321
+
322
+ # Usage
323
+ creds = get_secret("myapp/production/database")
324
+ connection_string = (
325
+ f"postgresql://{creds['username']}:{creds['password']}"
326
+ f"@{creds['host']}:{creds['port']}/{creds['dbname']}"
327
+ )
328
+ ```
329
+
330
+ ### ECS Task Definition
331
+
332
+ ```json
333
+ {
334
+ "containerDefinitions": [
335
+ {
336
+ "name": "myapp",
337
+ "image": "ghcr.io/acme/myapp:v1.0.0",
338
+ "secrets": [
339
+ {
340
+ "name": "DB_USERNAME",
341
+ "valueFrom": "arn:aws:secretsmanager:us-east-1:123456789:secret:myapp/production/database:username::"
342
+ },
343
+ {
344
+ "name": "DB_PASSWORD",
345
+ "valueFrom": "arn:aws:secretsmanager:us-east-1:123456789:secret:myapp/production/database:password::"
346
+ },
347
+ {
348
+ "name": "API_KEY",
349
+ "valueFrom": "arn:aws:secretsmanager:us-east-1:123456789:secret:myapp/production/api-key"
350
+ }
351
+ ]
352
+ }
353
+ ],
354
+ "executionRoleArn": "arn:aws:iam::123456789:role/ecsTaskExecutionRole"
355
+ }
356
+ ```
357
+
358
+ ### EKS with External Secrets Operator
359
+
360
+ ```yaml
361
+ apiVersion: external-secrets.io/v1beta1
362
+ kind: SecretStore
363
+ metadata:
364
+ name: aws-secrets-manager
365
+ namespace: production
366
+ spec:
367
+ provider:
368
+ aws:
369
+ service: SecretsManager
370
+ region: us-east-1
371
+ auth:
372
+ jwt:
373
+ serviceAccountRef:
374
+ name: external-secrets-sa
375
+ ---
376
+ apiVersion: external-secrets.io/v1beta1
377
+ kind: ExternalSecret
378
+ metadata:
379
+ name: db-credentials
380
+ namespace: production
381
+ spec:
382
+ refreshInterval: 1h
383
+ secretStoreRef:
384
+ name: aws-secrets-manager
385
+ kind: SecretStore
386
+ target:
387
+ name: db-credentials
388
+ creationPolicy: Owner
389
+ data:
390
+ - secretKey: username
391
+ remoteRef:
392
+ key: myapp/production/database
393
+ property: username
394
+ - secretKey: password
395
+ remoteRef:
396
+ key: myapp/production/database
397
+ property: password
398
+ ```
399
+
400
+ ## Resource-Based Policy
401
+
402
+ ```bash
403
+ # Restrict secret access to specific roles
404
+ aws secretsmanager put-resource-policy \
405
+ --secret-id myapp/production/database \
406
+ --resource-policy '{
407
+ "Version": "2012-10-17",
408
+ "Statement": [
409
+ {
410
+ "Effect": "Allow",
411
+ "Principal": {
412
+ "AWS": [
413
+ "arn:aws:iam::123456789:role/myapp-ecs-task-role",
414
+ "arn:aws:iam::123456789:role/myapp-lambda-role"
415
+ ]
416
+ },
417
+ "Action": [
418
+ "secretsmanager:GetSecretValue"
419
+ ],
420
+ "Resource": "*",
421
+ "Condition": {
422
+ "StringEquals": {
423
+ "aws:RequestedRegion": "us-east-1"
424
+ }
425
+ }
426
+ },
427
+ {
428
+ "Effect": "Deny",
429
+ "Principal": "*",
430
+ "Action": "secretsmanager:GetSecretValue",
431
+ "Resource": "*",
432
+ "Condition": {
433
+ "StringNotEquals": {
434
+ "aws:PrincipalAccount": "123456789012"
435
+ }
436
+ }
437
+ }
438
+ ]
439
+ }'
440
+ ```
441
+
442
+ ## Troubleshooting
443
+
444
+ | Problem | Cause | Solution |
445
+ |---------|-------|----------|
446
+ | `AccessDeniedException` on GetSecretValue | IAM policy missing permission | Add `secretsmanager:GetSecretValue` to the role; check resource-based policy |
447
+ | Rotation fails with Lambda timeout | Lambda cannot reach database | Ensure Lambda is in same VPC with route to DB; check security groups |
448
+ | Secret value is empty after rotation | createSecret step failed | Check Lambda CloudWatch logs; verify random password generation works |
449
+ | ECS container fails to start | Secret ARN format incorrect | Use full ARN with `::` for JSON key extraction; verify secret exists |
450
+ | Application uses old credentials after rotation | Client caching stale values | Implement cache invalidation on rotation; reduce cache TTL |
451
+ | Rotation Lambda permission error | Missing `lambda:InvokeFunction` permission | Add `aws_lambda_permission` for secretsmanager.amazonaws.com principal |
452
+ | KMS decrypt fails | Secret KMS key policy missing role | Add the accessing role to the KMS key policy's `kms:Decrypt` principals |
453
+
454
+ ## Best Practices
455
+
456
+ - Enable automatic rotation with 30-day intervals minimum
457
+ - Use resource-based policies in addition to IAM policies (defense in depth)
458
+ - Encrypt secrets with customer-managed KMS keys (not default)
459
+ - Implement least-privilege access (only the roles that need each secret)
460
+ - Use secret versioning for safe rollback during rotation issues
461
+ - Monitor secret access with CloudTrail and alert on unusual patterns
462
+ - Structure secret names hierarchically: `{app}/{env}/{secret-type}`
463
+ - Never log secret values; log only secret ARNs and access metadata
464
+ - Test rotation in staging before enabling in production
465
+ - Set up CloudWatch alarms for rotation failures
466
+
467
+ ## Related Skills
468
+
469
+ - hashicorp-vault (`hashicorp-vault`) - Multi-cloud secrets
470
+ - aws-iam (`aws-iam`) - IAM policies
471
+ - azure-keyvault (`azure-keyvault`) - Azure secret management
472
+ - gcp-secret-manager (`gcp-secret-manager`) - GCP secret management
473
+
474
+ ## Limitations
475
+
476
+ - Apply guidance only within authorized scope; test destructive steps in non-production first.
477
+ - Docs-only import: upstream scripts and templates not bundled.
478
+
479
+ ### Example
480
+
481
+ ```bash
482
+ # Read-only first: inventory before any active step.
483
+ which <tool> && <tool> --help | head -n 20
484
+ ```
485
+
486
+ > Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.