Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Assess and enforce Azure compliance requirements including policies, regulatory standards, and security baselines
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/azure-keyvault-expiration-audit.md
1# Key Vault Expiration Audit & Compliance23Automated auditing of Azure Key Vault resources to identify expired or expiring keys, secrets, and certificates before they cause service disruptions.45## Overview67This skill monitors Azure Key Vault resources (keys, secrets, certificates) for expiration issues. It helps prevent service disruptions by identifying:8- **Expired resources** causing active problems9- **Expiring soon** (within customizable days threshold)10- **Missing expiration dates** (security risk)11- **Disabled resources** needing cleanup1213## Core Workflow14151. **List Resources**: Enumerate keys, secrets, and certificates in target vault(s)162. **Get Details**: Retrieve expiration metadata for each resource173. **Analyze Status**: Compare expiration dates against current date and threshold184. **Generate Report**: Organize findings by priority with actionable recommendations1920## Audit Patterns2122### Pattern 1: Single Vault Quick Scan23Check one Key Vault for all expiration issues with configurable day threshold (default: 30 days).2425**Tools**: `keyvault_key_list`, `keyvault_key_get`, `keyvault_secret_list`, `keyvault_secret_get`, `keyvault_certificate_list`, `keyvault_certificate_get`2627### Pattern 2: Multi-Vault Compliance Report28Scan multiple vaults across subscription for comprehensive security review.2930**Use for**: Quarterly audits, organization-wide compliance checks3132### Pattern 3: Resource Type Focus33Audit only keys, secrets, OR certificates when specific resource type is mentioned.3435**Use for**: Certificate renewal planning, secret rotation tracking3637### Pattern 4: Emergency Expired Finder38Quick scan for already-expired resources (negative days) to troubleshoot active incidents.3940**Use for**: Production issues, authentication failures4142## Key Data Fields4344When retrieving resource details, analyze these fields:45- **expiresOn**: Expiration timestamp (null = no expiration set - security risk!)46- **enabled**: Resource is active (false = disabled/inactive)47- **notBefore**: When resource becomes valid48- **createdOn/updatedOn**: For tracking resource age and last rotation49- **subject/issuer**: Certificate-specific metadata5051## Report Format5253Organize findings into:54- **Summary Statistics**: Total count, expired count, expiring count, no-expiration count per resource type55- **Critical Issues**: Expired resources requiring immediate action56- **Warnings**: Expiring within threshold (e.g., 30 days)57- **Risks**: Resources without expiration dates58- **Recommendations**: Set expiration policies, rotate credentials, remove disabled items5960## Remediation Priority6162**๐ด Critical** - Expired (< 0 days): Rotate immediately63**๐ High** - Expiring 0-7 days: Schedule rotation within 24 hours64**๐ก Medium** - Expiring 8-30 days: Plan rotation within 1 week65**๐ก Medium** - No expiration set: Apply expiration policy66**๐ข Low** - Active (> 30 days): Monitor on regular schedule6768## Best Practices6970- Run weekly audits to catch issues early71- All resources should have expiration dates (Azure Policy recommendation)72- Configure Azure Event Grid for 30-day advance notifications73- Rotation schedule: Secrets every 60-90 days, Keys annually, Certificates per CA requirements (max 1 year)74- Prioritize production Key Vaults over dev/test75- Automate rotation with Azure Functions or Logic Apps7677## MCP Tools Used7879| Tool | Purpose |80|------|---------|81| `keyvault_key_list` | List all keys in a vault |82| `keyvault_key_get` | Get key details including expiration |83| `keyvault_secret_list` | List all secrets in a vault |84| `keyvault_secret_get` | Get secret details including expiration |85| `keyvault_certificate_list` | List all certificates in a vault |86| `keyvault_certificate_get` | Get certificate details including expiration |8788**Required**: `vault` (Key Vault name)89**Optional**: `subscription`, `tenant`9091## Fallback Strategy: Azure CLI Commands9293If Azure MCP Key Vault tools fail, timeout, or are unavailable, use Azure CLI commands as fallback.9495### CLI Command Reference9697| Operation | Azure CLI Command |98|-----------|-------------------|99| List secrets | `az keyvault secret list --vault-name <vault-name>` |100| Get secret details | `az keyvault secret show --vault-name <vault-name> --name <secret-name>` |101| List keys | `az keyvault key list --vault-name <vault-name>` |102| Get key details | `az keyvault key show --vault-name <vault-name> --name <key-name>` |103| List certificates | `az keyvault certificate list --vault-name <vault-name>` |104| Get certificate details | `az keyvault certificate show --vault-name <vault-name> --name <cert-name>` |105106### When to Fallback107108Switch to Azure CLI when:109- MCP tool returns timeout error110- MCP tool returns "service unavailable" or connection errors111- MCP tool takes longer than 30 seconds to respond112- Empty response when vault is known to have resources113114## Common Issues115116- **Access Denied**: Verify RBAC permissions (Key Vault Reader + data plane access)117- **Vault Not Found**: Check vault name and subscription context118- **Null expiresOn**: Resource has no expiration (security risk - requires policy)119- **Time zones**: All timestamps are UTC