opencode-skills-collection 4.0.67 → 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.
- package/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-keyvault
|
|
3
|
+
description: Manage secrets and certificates in Azure Key Vault. Configure access
|
|
4
|
+
policies, integrate with Azure services, and implement secure secret management.
|
|
5
|
+
Use when managing secrets in Azure environments.
|
|
6
|
+
category: security
|
|
7
|
+
risk: critical
|
|
8
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
10
|
+
source_type: community
|
|
11
|
+
date_added: '2026-09-20'
|
|
12
|
+
license: MIT
|
|
13
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
14
|
+
compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
|
|
15
|
+
authorized scope for any active assessment. Docs-only; helper scripts and templates
|
|
16
|
+
not bundled.
|
|
17
|
+
metadata:
|
|
18
|
+
author: devops-skills
|
|
19
|
+
version: '1.0'
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Azure Key Vault
|
|
23
|
+
|
|
24
|
+
Securely store and manage secrets, keys, and certificates in Azure.
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
- Azure subscription with appropriate permissions
|
|
29
|
+
- Azure CLI installed (`az` command)
|
|
30
|
+
- Contributor or Key Vault Administrator role for vault management
|
|
31
|
+
- Managed identity configured for application access
|
|
32
|
+
- Understanding of Azure RBAC vs. Key Vault access policies
|
|
33
|
+
|
|
34
|
+
## Vault Creation and Configuration
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Create a resource group
|
|
38
|
+
az group create --name rg-secrets --location eastus
|
|
39
|
+
|
|
40
|
+
# Create Key Vault with RBAC authorization (recommended)
|
|
41
|
+
az keyvault create \
|
|
42
|
+
--name myapp-vault-prod \
|
|
43
|
+
--resource-group rg-secrets \
|
|
44
|
+
--location eastus \
|
|
45
|
+
--enable-rbac-authorization true \
|
|
46
|
+
--enable-soft-delete true \
|
|
47
|
+
--retention-days 90 \
|
|
48
|
+
--enable-purge-protection true \
|
|
49
|
+
--sku premium # Use premium for HSM-backed keys
|
|
50
|
+
|
|
51
|
+
# Create Key Vault with access policies (legacy)
|
|
52
|
+
az keyvault create \
|
|
53
|
+
--name myapp-vault-dev \
|
|
54
|
+
--resource-group rg-secrets \
|
|
55
|
+
--location eastus \
|
|
56
|
+
--enable-soft-delete true \
|
|
57
|
+
--retention-days 30
|
|
58
|
+
|
|
59
|
+
# Enable private endpoint (no public access)
|
|
60
|
+
az keyvault update \
|
|
61
|
+
--name myapp-vault-prod \
|
|
62
|
+
--resource-group rg-secrets \
|
|
63
|
+
--public-network-access Disabled
|
|
64
|
+
|
|
65
|
+
# Enable diagnostics logging
|
|
66
|
+
az monitor diagnostic-settings create \
|
|
67
|
+
--name kv-diagnostics \
|
|
68
|
+
--resource "/subscriptions/{sub}/resourceGroups/rg-secrets/providers/Microsoft.KeyVault/vaults/myapp-vault-prod" \
|
|
69
|
+
--workspace "/subscriptions/{sub}/resourceGroups/rg-monitor/providers/Microsoft.OperationalInsights/workspaces/security-logs" \
|
|
70
|
+
--logs '[{"category":"AuditEvent","enabled":true,"retentionPolicy":{"enabled":true,"days":365}}]'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Secret Management
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Set a secret
|
|
77
|
+
az keyvault secret set \
|
|
78
|
+
--vault-name myapp-vault-prod \
|
|
79
|
+
--name db-password \
|
|
80
|
+
--value "S3cur3P@ssw0rd!" \
|
|
81
|
+
--content-type "text/plain" \
|
|
82
|
+
--tags Environment=production Team=platform
|
|
83
|
+
|
|
84
|
+
# Set a multi-line secret (JSON credentials)
|
|
85
|
+
az keyvault secret set \
|
|
86
|
+
--vault-name myapp-vault-prod \
|
|
87
|
+
--name db-credentials \
|
|
88
|
+
--value '{"username":"dbadmin","password":"S3cur3P@ss!","host":"db.postgres.database.azure.com","port":5432}'
|
|
89
|
+
|
|
90
|
+
# Get secret value
|
|
91
|
+
az keyvault secret show \
|
|
92
|
+
--vault-name myapp-vault-prod \
|
|
93
|
+
--name db-password \
|
|
94
|
+
--query value -o tsv
|
|
95
|
+
|
|
96
|
+
# Get specific version
|
|
97
|
+
az keyvault secret show \
|
|
98
|
+
--vault-name myapp-vault-prod \
|
|
99
|
+
--name db-password \
|
|
100
|
+
--version abc123def456
|
|
101
|
+
|
|
102
|
+
# List all secrets
|
|
103
|
+
az keyvault secret list --vault-name myapp-vault-prod -o table
|
|
104
|
+
|
|
105
|
+
# List secret versions
|
|
106
|
+
az keyvault secret list-versions \
|
|
107
|
+
--vault-name myapp-vault-prod \
|
|
108
|
+
--name db-password -o table
|
|
109
|
+
|
|
110
|
+
# Set expiration date
|
|
111
|
+
az keyvault secret set-attributes \
|
|
112
|
+
--vault-name myapp-vault-prod \
|
|
113
|
+
--name api-key \
|
|
114
|
+
--expires "2026-01-01T00:00:00Z"
|
|
115
|
+
|
|
116
|
+
# Disable a secret (without deleting)
|
|
117
|
+
az keyvault secret set-attributes \
|
|
118
|
+
--vault-name myapp-vault-prod \
|
|
119
|
+
--name old-api-key \
|
|
120
|
+
--enabled false
|
|
121
|
+
|
|
122
|
+
# Delete a secret (soft-delete)
|
|
123
|
+
az keyvault secret delete \
|
|
124
|
+
--vault-name myapp-vault-prod \
|
|
125
|
+
--name old-api-key
|
|
126
|
+
|
|
127
|
+
# Recover a deleted secret
|
|
128
|
+
az keyvault secret recover \
|
|
129
|
+
--vault-name myapp-vault-prod \
|
|
130
|
+
--name old-api-key
|
|
131
|
+
|
|
132
|
+
# Purge a deleted secret (permanent, requires purge protection to be off)
|
|
133
|
+
az keyvault secret purge \
|
|
134
|
+
--vault-name myapp-vault-prod \
|
|
135
|
+
--name old-api-key
|
|
136
|
+
|
|
137
|
+
# Backup and restore
|
|
138
|
+
az keyvault secret backup \
|
|
139
|
+
--vault-name myapp-vault-prod \
|
|
140
|
+
--name db-password \
|
|
141
|
+
--file db-password.backup
|
|
142
|
+
|
|
143
|
+
az keyvault secret restore \
|
|
144
|
+
--vault-name myapp-vault-prod \
|
|
145
|
+
--file db-password.backup
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Key Management
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Create an RSA key for encryption
|
|
152
|
+
az keyvault key create \
|
|
153
|
+
--vault-name myapp-vault-prod \
|
|
154
|
+
--name data-encryption-key \
|
|
155
|
+
--kty RSA \
|
|
156
|
+
--size 4096 \
|
|
157
|
+
--ops encrypt decrypt wrapKey unwrapKey
|
|
158
|
+
|
|
159
|
+
# Create an EC key for signing
|
|
160
|
+
az keyvault key create \
|
|
161
|
+
--vault-name myapp-vault-prod \
|
|
162
|
+
--name signing-key \
|
|
163
|
+
--kty EC \
|
|
164
|
+
--curve P-256 \
|
|
165
|
+
--ops sign verify
|
|
166
|
+
|
|
167
|
+
# Import an existing key
|
|
168
|
+
az keyvault key import \
|
|
169
|
+
--vault-name myapp-vault-prod \
|
|
170
|
+
--name imported-key \
|
|
171
|
+
--pem-file key.pem
|
|
172
|
+
|
|
173
|
+
# Encrypt data
|
|
174
|
+
az keyvault key encrypt \
|
|
175
|
+
--vault-name myapp-vault-prod \
|
|
176
|
+
--name data-encryption-key \
|
|
177
|
+
--algorithm RSA-OAEP-256 \
|
|
178
|
+
--value "base64-encoded-plaintext"
|
|
179
|
+
|
|
180
|
+
# Rotate a key
|
|
181
|
+
az keyvault key rotate \
|
|
182
|
+
--vault-name myapp-vault-prod \
|
|
183
|
+
--name data-encryption-key
|
|
184
|
+
|
|
185
|
+
# Set key rotation policy
|
|
186
|
+
az keyvault key rotation-policy update \
|
|
187
|
+
--vault-name myapp-vault-prod \
|
|
188
|
+
--name data-encryption-key \
|
|
189
|
+
--value '{
|
|
190
|
+
"lifetimeActions": [
|
|
191
|
+
{
|
|
192
|
+
"trigger": {"timeBeforeExpiry": "P30D"},
|
|
193
|
+
"action": {"type": "Notify"}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"trigger": {"timeAfterCreate": "P90D"},
|
|
197
|
+
"action": {"type": "Rotate"}
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"attributes": {"expiryTime": "P180D"}
|
|
201
|
+
}'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Certificate Management
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# Create a self-signed certificate
|
|
208
|
+
az keyvault certificate create \
|
|
209
|
+
--vault-name myapp-vault-prod \
|
|
210
|
+
--name app-tls-cert \
|
|
211
|
+
--policy '{
|
|
212
|
+
"issuerParameters": {"name": "Self"},
|
|
213
|
+
"keyProperties": {"exportable": true, "keySize": 4096, "keyType": "RSA"},
|
|
214
|
+
"secretProperties": {"contentType": "application/x-pkcs12"},
|
|
215
|
+
"x509CertificateProperties": {
|
|
216
|
+
"subject": "CN=app.example.com",
|
|
217
|
+
"subjectAlternativeNames": {"dnsNames": ["app.example.com", "*.app.example.com"]},
|
|
218
|
+
"validityInMonths": 12,
|
|
219
|
+
"keyUsage": ["digitalSignature", "keyEncipherment"],
|
|
220
|
+
"ekus": ["1.3.6.1.5.5.7.3.1"]
|
|
221
|
+
},
|
|
222
|
+
"lifetimeActions": [
|
|
223
|
+
{"trigger": {"daysBeforeExpiry": 30}, "action": {"actionType": "AutoRenew"}}
|
|
224
|
+
]
|
|
225
|
+
}'
|
|
226
|
+
|
|
227
|
+
# Import a certificate
|
|
228
|
+
az keyvault certificate import \
|
|
229
|
+
--vault-name myapp-vault-prod \
|
|
230
|
+
--name imported-cert \
|
|
231
|
+
--file certificate.pfx \
|
|
232
|
+
--password "pfx-password"
|
|
233
|
+
|
|
234
|
+
# Download certificate
|
|
235
|
+
az keyvault certificate download \
|
|
236
|
+
--vault-name myapp-vault-prod \
|
|
237
|
+
--name app-tls-cert \
|
|
238
|
+
--file cert.pem \
|
|
239
|
+
--encoding PEM
|
|
240
|
+
|
|
241
|
+
# List certificates
|
|
242
|
+
az keyvault certificate list --vault-name myapp-vault-prod -o table
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Access Policies and RBAC
|
|
246
|
+
|
|
247
|
+
### RBAC (Recommended)
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Grant secret reader access to a managed identity
|
|
251
|
+
az role assignment create \
|
|
252
|
+
--role "Key Vault Secrets User" \
|
|
253
|
+
--assignee-object-id "$(az identity show -g rg-app -n myapp-identity --query principalId -o tsv)" \
|
|
254
|
+
--scope "/subscriptions/{sub}/resourceGroups/rg-secrets/providers/Microsoft.KeyVault/vaults/myapp-vault-prod"
|
|
255
|
+
|
|
256
|
+
# Grant admin access to security team
|
|
257
|
+
az role assignment create \
|
|
258
|
+
--role "Key Vault Administrator" \
|
|
259
|
+
--assignee "security-team@example.com" \
|
|
260
|
+
--scope "/subscriptions/{sub}/resourceGroups/rg-secrets/providers/Microsoft.KeyVault/vaults/myapp-vault-prod"
|
|
261
|
+
|
|
262
|
+
# Available Key Vault RBAC roles:
|
|
263
|
+
# - Key Vault Administrator (full management)
|
|
264
|
+
# - Key Vault Secrets Officer (manage secrets)
|
|
265
|
+
# - Key Vault Secrets User (read secrets)
|
|
266
|
+
# - Key Vault Certificates Officer (manage certs)
|
|
267
|
+
# - Key Vault Crypto Officer (manage keys)
|
|
268
|
+
# - Key Vault Crypto User (use keys for encrypt/decrypt)
|
|
269
|
+
# - Key Vault Reader (read metadata only)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Access Policies (Legacy)
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
# Grant secret access via access policy
|
|
276
|
+
az keyvault set-policy \
|
|
277
|
+
--name myapp-vault-prod \
|
|
278
|
+
--object-id "$(az identity show -g rg-app -n myapp-identity --query principalId -o tsv)" \
|
|
279
|
+
--secret-permissions get list
|
|
280
|
+
|
|
281
|
+
# Grant key access
|
|
282
|
+
az keyvault set-policy \
|
|
283
|
+
--name myapp-vault-prod \
|
|
284
|
+
--object-id "$OBJECT_ID" \
|
|
285
|
+
--key-permissions get unwrapKey wrapKey
|
|
286
|
+
|
|
287
|
+
# Grant certificate access
|
|
288
|
+
az keyvault set-policy \
|
|
289
|
+
--name myapp-vault-prod \
|
|
290
|
+
--object-id "$OBJECT_ID" \
|
|
291
|
+
--certificate-permissions get list
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Application Integration
|
|
295
|
+
|
|
296
|
+
### Python SDK
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
|
|
300
|
+
from azure.keyvault.secrets import SecretClient
|
|
301
|
+
from azure.keyvault.keys import KeyClient
|
|
302
|
+
from azure.keyvault.certificates import CertificateClient
|
|
303
|
+
|
|
304
|
+
# Use DefaultAzureCredential (works locally and in Azure)
|
|
305
|
+
credential = DefaultAzureCredential()
|
|
306
|
+
|
|
307
|
+
vault_url = "https://myapp-vault-prod.vault.azure.net/"
|
|
308
|
+
|
|
309
|
+
# Secrets
|
|
310
|
+
secret_client = SecretClient(vault_url=vault_url, credential=credential)
|
|
311
|
+
db_password = secret_client.get_secret("db-password")
|
|
312
|
+
print(f"Secret value: {db_password.value}")
|
|
313
|
+
|
|
314
|
+
# Get specific version
|
|
315
|
+
specific = secret_client.get_secret("db-password", version="abc123")
|
|
316
|
+
|
|
317
|
+
# List secrets
|
|
318
|
+
for secret_properties in secret_client.list_properties_of_secrets():
|
|
319
|
+
print(f"Secret: {secret_properties.name}, Enabled: {secret_properties.enabled}")
|
|
320
|
+
|
|
321
|
+
# Keys
|
|
322
|
+
key_client = KeyClient(vault_url=vault_url, credential=credential)
|
|
323
|
+
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithm
|
|
324
|
+
|
|
325
|
+
key = key_client.get_key("data-encryption-key")
|
|
326
|
+
crypto_client = CryptographyClient(key, credential=credential)
|
|
327
|
+
|
|
328
|
+
# Encrypt data
|
|
329
|
+
plaintext = b"sensitive data"
|
|
330
|
+
result = crypto_client.encrypt(EncryptionAlgorithm.rsa_oaep_256, plaintext)
|
|
331
|
+
ciphertext = result.ciphertext
|
|
332
|
+
|
|
333
|
+
# Decrypt data
|
|
334
|
+
decrypted = crypto_client.decrypt(EncryptionAlgorithm.rsa_oaep_256, ciphertext)
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### .NET SDK
|
|
338
|
+
|
|
339
|
+
```csharp
|
|
340
|
+
using Azure.Identity;
|
|
341
|
+
using Azure.Security.KeyVault.Secrets;
|
|
342
|
+
|
|
343
|
+
var credential = new DefaultAzureCredential();
|
|
344
|
+
var client = new SecretClient(new Uri("https://myapp-vault-prod.vault.azure.net/"), credential);
|
|
345
|
+
|
|
346
|
+
KeyVaultSecret secret = await client.GetSecretAsync("db-password");
|
|
347
|
+
string password = secret.Value;
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Kubernetes Integration (AKS)
|
|
351
|
+
|
|
352
|
+
### Secrets Store CSI Driver
|
|
353
|
+
|
|
354
|
+
```yaml
|
|
355
|
+
# SecretProviderClass for AKS with managed identity
|
|
356
|
+
apiVersion: secrets-store.csi.x-k8s.io/v1
|
|
357
|
+
kind: SecretProviderClass
|
|
358
|
+
metadata:
|
|
359
|
+
name: azure-keyvault-secrets
|
|
360
|
+
namespace: production
|
|
361
|
+
spec:
|
|
362
|
+
provider: azure
|
|
363
|
+
parameters:
|
|
364
|
+
usePodIdentity: "false"
|
|
365
|
+
useVMManagedIdentity: "true"
|
|
366
|
+
userAssignedIdentityID: "<managed-identity-client-id>"
|
|
367
|
+
keyvaultName: "myapp-vault-prod"
|
|
368
|
+
cloudName: ""
|
|
369
|
+
objects: |
|
|
370
|
+
array:
|
|
371
|
+
- |
|
|
372
|
+
objectName: db-password
|
|
373
|
+
objectType: secret
|
|
374
|
+
objectVersion: ""
|
|
375
|
+
- |
|
|
376
|
+
objectName: api-key
|
|
377
|
+
objectType: secret
|
|
378
|
+
- |
|
|
379
|
+
objectName: app-tls-cert
|
|
380
|
+
objectType: secret
|
|
381
|
+
tenantId: "<azure-tenant-id>"
|
|
382
|
+
secretObjects:
|
|
383
|
+
- secretName: db-secrets
|
|
384
|
+
type: Opaque
|
|
385
|
+
data:
|
|
386
|
+
- objectName: db-password
|
|
387
|
+
key: password
|
|
388
|
+
- objectName: api-key
|
|
389
|
+
key: api-key
|
|
390
|
+
- secretName: tls-secret
|
|
391
|
+
type: kubernetes.io/tls
|
|
392
|
+
data:
|
|
393
|
+
- objectName: app-tls-cert
|
|
394
|
+
key: tls.crt
|
|
395
|
+
---
|
|
396
|
+
# Pod using the secrets
|
|
397
|
+
apiVersion: v1
|
|
398
|
+
kind: Pod
|
|
399
|
+
metadata:
|
|
400
|
+
name: myapp
|
|
401
|
+
namespace: production
|
|
402
|
+
spec:
|
|
403
|
+
serviceAccountName: myapp-sa
|
|
404
|
+
containers:
|
|
405
|
+
- name: myapp
|
|
406
|
+
image: ghcr.io/acme/myapp:v1.0.0
|
|
407
|
+
env:
|
|
408
|
+
- name: DB_PASSWORD
|
|
409
|
+
valueFrom:
|
|
410
|
+
secretKeyRef:
|
|
411
|
+
name: db-secrets
|
|
412
|
+
key: password
|
|
413
|
+
volumeMounts:
|
|
414
|
+
- name: secrets-store
|
|
415
|
+
mountPath: "/mnt/secrets-store"
|
|
416
|
+
readOnly: true
|
|
417
|
+
volumes:
|
|
418
|
+
- name: secrets-store
|
|
419
|
+
csi:
|
|
420
|
+
driver: secrets-store.csi.k8s.io
|
|
421
|
+
readOnly: true
|
|
422
|
+
volumeAttributes:
|
|
423
|
+
secretProviderClass: "azure-keyvault-secrets"
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
## Contents
|
|
428
|
+
|
|
429
|
+
- [Terraform Configuration](references/details.md)
|
|
430
|
+
- [Troubleshooting](references/details.md)
|
|
431
|
+
- [Best Practices](references/details.md)
|
|
432
|
+
- [Related Skills](references/details.md)
|
|
433
|
+
|
|
434
|
+
## When to Use This Skill
|
|
435
|
+
|
|
436
|
+
Use this skill when:
|
|
437
|
+
- Managing secrets, encryption keys, or certificates in Azure
|
|
438
|
+
- Implementing centralized secret management for Azure services
|
|
439
|
+
- Integrating secrets into AKS, App Service, or Azure Functions
|
|
440
|
+
- Encrypting data with customer-managed keys (CMK)
|
|
441
|
+
- Meeting compliance requirements for key management (FIPS 140-2)
|
|
442
|
+
|
|
443
|
+
## Limitations
|
|
444
|
+
|
|
445
|
+
- Apply guidance only within authorized scope; test destructive steps in non-production first.
|
|
446
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
447
|
+
|
|
448
|
+
### Example
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
# Read-only first: inventory before any active step.
|
|
452
|
+
which <tool> && <tool> --help | head -n 20
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
> 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.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `azure-keyvault`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Terraform Configuration
|
|
6
|
+
|
|
7
|
+
```hcl
|
|
8
|
+
resource "azurerm_key_vault" "main" {
|
|
9
|
+
name = "myapp-vault-prod"
|
|
10
|
+
location = azurerm_resource_group.main.location
|
|
11
|
+
resource_group_name = azurerm_resource_group.main.name
|
|
12
|
+
tenant_id = data.azurerm_client_config.current.tenant_id
|
|
13
|
+
sku_name = "premium"
|
|
14
|
+
|
|
15
|
+
enable_rbac_authorization = true
|
|
16
|
+
purge_protection_enabled = true
|
|
17
|
+
soft_delete_retention_days = 90
|
|
18
|
+
public_network_access_enabled = false
|
|
19
|
+
|
|
20
|
+
network_acls {
|
|
21
|
+
bypass = "AzureServices"
|
|
22
|
+
default_action = "Deny"
|
|
23
|
+
ip_rules = ["203.0.113.0/24"]
|
|
24
|
+
virtual_network_subnet_ids = [azurerm_subnet.app.id]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
resource "azurerm_key_vault_secret" "db_password" {
|
|
29
|
+
name = "db-password"
|
|
30
|
+
value = var.db_password
|
|
31
|
+
key_vault_id = azurerm_key_vault.main.id
|
|
32
|
+
content_type = "text/plain"
|
|
33
|
+
|
|
34
|
+
expiration_date = "2026-01-01T00:00:00Z"
|
|
35
|
+
|
|
36
|
+
tags = {
|
|
37
|
+
environment = "production"
|
|
38
|
+
rotation = "enabled"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
resource "azurerm_role_assignment" "app_secrets_user" {
|
|
43
|
+
scope = azurerm_key_vault.main.id
|
|
44
|
+
role_definition_name = "Key Vault Secrets User"
|
|
45
|
+
principal_id = azurerm_user_assigned_identity.app.principal_id
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Troubleshooting
|
|
51
|
+
|
|
52
|
+
| Problem | Cause | Solution |
|
|
53
|
+
|---------|-------|----------|
|
|
54
|
+
| "Access denied" when reading secrets | Missing RBAC role or access policy | Assign `Key Vault Secrets User` role; or add access policy with `get` permission |
|
|
55
|
+
| "Vault not found" | Network access restricted | Check firewall rules; enable private endpoint; add IP to allow list |
|
|
56
|
+
| Soft-deleted secret blocks creation | Name collision with deleted secret | Recover and update, or purge the deleted secret first |
|
|
57
|
+
| Managed identity cannot access vault | Identity not in correct scope | Verify identity principal ID; check role assignment scope matches vault |
|
|
58
|
+
| Certificate renewal fails | Auto-renew policy not configured | Set `lifetimeActions` with `AutoRenew` action in certificate policy |
|
|
59
|
+
| CSI driver fails to mount secrets | Wrong provider configuration | Verify `tenantId`, `userAssignedIdentityID`, and object names match exactly |
|
|
60
|
+
| High latency on secret retrieval | No client-side caching | Implement caching in application; use CSI driver for K8s (syncs on interval) |
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Best Practices
|
|
64
|
+
|
|
65
|
+
- Use RBAC authorization over access policies for granular control
|
|
66
|
+
- Enable soft-delete and purge protection (required for compliance)
|
|
67
|
+
- Use managed identities for all service access (no credentials to manage)
|
|
68
|
+
- Enable private endpoints to eliminate public network exposure
|
|
69
|
+
- Set expiration dates on all secrets and certificates
|
|
70
|
+
- Enable diagnostic logging and forward to SIEM
|
|
71
|
+
- Use premium SKU for HSM-backed key operations
|
|
72
|
+
- Implement key rotation policies for all encryption keys
|
|
73
|
+
- Regularly audit access with Azure Activity logs
|
|
74
|
+
- Tag all vault resources for cost and ownership tracking
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Related Skills
|
|
78
|
+
|
|
79
|
+
- hashicorp-vault (`hashicorp-vault`) - Multi-cloud secrets
|
|
80
|
+
- azure-networking (`azure-networking`) - Network security
|
|
81
|
+
- aws-secrets-manager (`aws-secrets-manager`) - AWS secret management
|
|
82
|
+
- gcp-secret-manager (`gcp-secret-manager`) - GCP secret management
|
|
83
|
+
|