@raishin/vanguard-frontier-agentic 1.2.0 → 1.3.0
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/README.md +231 -113
- package/agents/AGENTS.md +263 -21
- package/agents/argocd/README.md +46 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/AGENT.md +55 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/codex.toml +29 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/metadata.json +31 -0
- package/agents/argocd/argocd-gitops-review-agent/AGENT.md +55 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/codex.toml +32 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/argocd/argocd-gitops-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/argocd/argocd-gitops-review-agent/metadata.json +30 -0
- package/agents/aws/aws-live-deployment-guarded-operator-agent/metadata.json +10 -1
- package/agents/aws/aws-live-ecs-rollout-guard-agent/metadata.json +10 -1
- package/agents/aws/aws-live-iac-change-guard-agent/metadata.json +10 -1
- package/agents/aws/aws-live-pipeline-approval-operator-agent/metadata.json +10 -1
- package/agents/aws/aws-live-serverless-release-guard-agent/metadata.json +10 -1
- package/agents/aws/aws-private-ca-issuer-review-agent/AGENT.md +53 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/codex.toml +27 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/aws/aws-private-ca-issuer-review-agent/metadata.json +37 -0
- package/agents/azure/README.md +45 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/AGENT.md +53 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/codex.toml +27 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/azure/azure-keyvault-certificate-issuer-review-agent/metadata.json +36 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/metadata.json +10 -1
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/metadata.json +10 -1
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/metadata.json +10 -1
- package/agents/azure/azure-live-cost-budget-action-guard-agent/metadata.json +10 -1
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/AGENT.md +59 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/codex.toml +34 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/copilot.agent.md +55 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/cursor.agent.md +44 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/gemini.agent.md +43 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/azure/azure-live-entra-role-assignment-guard-agent/metadata.json +37 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/metadata.json +10 -1
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/metadata.json +11 -2
- package/agents/backstage/README.md +36 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/AGENT.md +54 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/codex.toml +31 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/backstage/backstage-scaffolder-template-review-agent/metadata.json +30 -0
- package/agents/cert-manager/README.md +46 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/AGENT.md +55 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/codex.toml +29 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/cert-manager/cert-manager-issuer-trust-review-agent/metadata.json +31 -0
- package/agents/cilium/README.md +46 -0
- package/agents/cilium/cilium-network-policy-review-agent/AGENT.md +55 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/codex.toml +32 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/cilium/cilium-network-policy-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/cilium/cilium-network-policy-review-agent/metadata.json +37 -0
- package/agents/falco/README.md +36 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/AGENT.md +49 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/codex.toml +31 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/falco/falco-runtime-threat-rules-review-agent/metadata.json +31 -0
- package/agents/finops/README.md +27 -0
- package/agents/finops/finops-cloud-price-advisor-agent/metadata.json +10 -1
- package/agents/fluxcd/README.md +39 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/AGENT.md +55 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/codex.toml +32 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/metadata.json +31 -0
- package/agents/istio/README.md +46 -0
- package/agents/istio/istio-ambient-mesh-review-agent/AGENT.md +55 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/codex.toml +32 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/istio/istio-ambient-mesh-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/istio/istio-ambient-mesh-review-agent/metadata.json +30 -0
- package/agents/kubernetes/README.md +143 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/AGENT.md +49 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/codex.toml +31 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/kubernetes/external-secrets-operator-review-agent/metadata.json +31 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/AGENT.md +56 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/claude-code.agent.md +39 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/codex.toml +34 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/copilot.agent.md +39 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/cursor.agent.md +39 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/gemini.agent.md +39 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/kiro-ide.agent.md +39 -0
- package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/metadata.json +31 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/AGENT.md +59 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/codex.toml +33 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/copilot.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/cursor.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/gemini.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/AGENT.md +59 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/codex.toml +33 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/copilot.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/cursor.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/gemini.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/AGENT.md +59 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/codex.toml +33 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/copilot.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/cursor.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/gemini.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/AGENT.md +59 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/codex.toml +33 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/copilot.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/cursor.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/gemini.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/AGENT.md +59 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/codex.toml +34 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/copilot.agent.md +55 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/cursor.agent.md +44 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/gemini.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/AGENT.md +62 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/claude-code.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/codex.toml +35 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/copilot.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/cursor.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/gemini.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-ide.agent.md +43 -0
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/metadata.json +37 -0
- package/agents/kubernetes/kubernetes-maestro-agent/AGENT.md +55 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/codex.toml +34 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/copilot.agent.md +38 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/cursor.agent.md +38 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/gemini.agent.md +38 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-maestro-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/kubernetes/kubernetes-maestro-agent/metadata.json +40 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/AGENT.md +54 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/codex.toml +27 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/kubernetes/kubernetes-pod-spec-review-agent/metadata.json +38 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/AGENT.md +55 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/codex.toml +29 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/kubernetes/kubernetes-psa-review-agent/metadata.json +37 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/AGENT.md +55 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/codex.toml +32 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/copilot.agent.md +51 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/cursor.agent.md +40 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/gemini.agent.md +39 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/kubernetes/kubernetes-rbac-review-agent/metadata.json +36 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/AGENT.md +55 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/codex.toml +29 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/kubernetes/kubernetes-workload-identity-review-agent/metadata.json +37 -0
- package/agents/kyverno/README.md +46 -0
- package/agents/kyverno/kyverno-policy-review-agent/AGENT.md +55 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/codex.toml +32 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/kyverno/kyverno-policy-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/kyverno/kyverno-policy-review-agent/metadata.json +30 -0
- package/agents/oci/README.md +45 -0
- package/agents/oci/oci-certificates-issuer-review-agent/AGENT.md +53 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/codex.toml +27 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/oci/oci-certificates-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/oci/oci-certificates-issuer-review-agent/metadata.json +36 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/metadata.json +11 -2
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/metadata.json +11 -2
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/metadata.json +10 -1
- package/agents/oci/oci-live-network-security-rule-guard-agent/AGENT.md +59 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/claude-code.agent.md +42 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/codex.toml +34 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/copilot.agent.md +55 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/cursor.agent.md +44 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/gemini.agent.md +43 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/kiro-ide.agent.md +42 -0
- package/agents/oci/oci-live-network-security-rule-guard-agent/metadata.json +37 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/metadata.json +11 -2
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/metadata.json +10 -1
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/metadata.json +10 -1
- package/agents/opentelemetry/README.md +37 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/AGENT.md +55 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/codex.toml +32 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/copilot.agent.md +38 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/cursor.agent.md +38 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/gemini.agent.md +38 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/opentelemetry/opentelemetry-collector-config-review-agent/metadata.json +37 -0
- package/agents/prometheus/README.md +36 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/AGENT.md +48 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/claude-code.agent.md +32 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/codex.toml +31 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/copilot.agent.md +32 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/cursor.agent.md +32 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/gemini.agent.md +32 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/kiro-ide.agent.md +32 -0
- package/agents/prometheus/prometheus-alerting-cardinality-review-agent/metadata.json +31 -0
- package/agents/sigstore/README.md +38 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/AGENT.md +55 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/codex.toml +29 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/metadata.json +31 -0
- package/agents/terraform/README.md +29 -0
- package/agents/terraform/terraform-reviewer/harnesses/claude-code.agent.md +29 -0
- package/agents/terraform/terraform-reviewer/harnesses/codex.toml +29 -0
- package/agents/terraform/terraform-reviewer/harnesses/copilot.agent.md +42 -0
- package/agents/terraform/terraform-reviewer/harnesses/cursor.agent.md +31 -0
- package/agents/terraform/terraform-reviewer/harnesses/gemini.agent.md +30 -0
- package/agents/terraform/terraform-reviewer/harnesses/kiro-cli.agent.json +5 -0
- package/agents/terraform/terraform-reviewer/harnesses/kiro-ide.agent.md +29 -0
- package/agents/terraform/terraform-reviewer/metadata.json +10 -1
- package/agents/velero/README.md +41 -0
- package/assets/logos/vanguard-frontier-agentic-logo.png +0 -0
- package/catalog/agents.json +1452 -634
- package/catalog/install-roles.json +455 -0
- package/catalog/skill-manifest.json +757 -3
- package/catalog/skills.json +1298 -528
- package/package.json +11 -1
- package/scripts/export-marketplace-agents.mjs +100 -9
- package/scripts/update-catalog-new-agents.py +88 -0
- package/skills/argocd/README.md +30 -0
- package/skills/argocd/argo-rollouts-progressive-delivery-review/SKILL.md +40 -0
- package/skills/argocd/argo-rollouts-progressive-delivery-review/metadata.json +22 -0
- package/skills/argocd/argo-rollouts-progressive-delivery-review/references/workflow-and-output.md +248 -0
- package/skills/argocd/argocd-gitops-review/SKILL.md +43 -0
- package/skills/argocd/argocd-gitops-review/metadata.json +30 -0
- package/skills/argocd/argocd-gitops-review/references/mcp-and-evidence.md +53 -0
- package/skills/argocd/argocd-gitops-review/references/official-sources.md +32 -0
- package/skills/argocd/argocd-gitops-review/references/workflow-and-output.md +120 -0
- package/skills/aws/README.md +3 -1
- package/skills/aws/aws-maestro/references/workflow-and-output.md +2 -0
- package/skills/aws/aws-private-ca-issuer-review/SKILL.md +39 -0
- package/skills/aws/aws-private-ca-issuer-review/metadata.json +21 -0
- package/skills/aws/aws-private-ca-issuer-review/references/official-sources.md +22 -0
- package/skills/aws/aws-private-ca-issuer-review/references/safety-checklist.md +30 -0
- package/skills/aws/aws-private-ca-issuer-review/references/workflow-and-output.md +214 -0
- package/skills/azure/README.md +3 -1
- package/skills/azure/azure-keyvault-certificate-issuer-review/SKILL.md +37 -0
- package/skills/azure/azure-keyvault-certificate-issuer-review/metadata.json +20 -0
- package/skills/azure/azure-keyvault-certificate-issuer-review/references/workflow-and-output.md +190 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/SKILL.md +56 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/metadata.json +28 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/references/official-sources.md +21 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/references/permission-model.md +70 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/references/preflight-commands.md +69 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/references/rollback-playbook.md +51 -0
- package/skills/backstage/backstage-scaffolder-template-review/SKILL.md +39 -0
- package/skills/backstage/backstage-scaffolder-template-review/metadata.json +21 -0
- package/skills/backstage/backstage-scaffolder-template-review/references/workflow-and-output.md +179 -0
- package/skills/cert-manager/cert-manager-issuer-trust-review/SKILL.md +40 -0
- package/skills/cert-manager/cert-manager-issuer-trust-review/metadata.json +22 -0
- package/skills/cert-manager/cert-manager-issuer-trust-review/references/workflow-and-output.md +222 -0
- package/skills/cilium/README.md +30 -0
- package/skills/cilium/cilium-network-policy-review/SKILL.md +43 -0
- package/skills/cilium/cilium-network-policy-review/metadata.json +30 -0
- package/skills/cilium/cilium-network-policy-review/references/mcp-and-evidence.md +52 -0
- package/skills/cilium/cilium-network-policy-review/references/official-sources.md +30 -0
- package/skills/cilium/cilium-network-policy-review/references/workflow-and-output.md +130 -0
- package/skills/falco/falco-runtime-threat-rules-review/SKILL.md +37 -0
- package/skills/falco/falco-runtime-threat-rules-review/metadata.json +22 -0
- package/skills/falco/falco-runtime-threat-rules-review/references/workflow-and-output.md +249 -0
- package/skills/finops/README.md +30 -0
- package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/SKILL.md +40 -0
- package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/metadata.json +22 -0
- package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/references/workflow-and-output.md +243 -0
- package/skills/istio/README.md +28 -0
- package/skills/istio/istio-ambient-mesh-review/SKILL.md +43 -0
- package/skills/istio/istio-ambient-mesh-review/metadata.json +30 -0
- package/skills/istio/istio-ambient-mesh-review/references/mcp-and-evidence.md +59 -0
- package/skills/istio/istio-ambient-mesh-review/references/official-sources.md +32 -0
- package/skills/istio/istio-ambient-mesh-review/references/workflow-and-output.md +128 -0
- package/skills/kubernetes/README.md +30 -0
- package/skills/kubernetes/external-secrets-operator-review/SKILL.md +37 -0
- package/skills/kubernetes/external-secrets-operator-review/metadata.json +22 -0
- package/skills/kubernetes/external-secrets-operator-review/references/workflow-and-output.md +280 -0
- package/skills/kubernetes/kubecost-chargeback-allocation-review/SKILL.md +40 -0
- package/skills/kubernetes/kubecost-chargeback-allocation-review/metadata.json +22 -0
- package/skills/kubernetes/kubecost-chargeback-allocation-review/references/workflow-and-output.md +215 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/SKILL.md +57 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/metadata.json +27 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/official-sources.md +18 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/permission-model.md +78 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/preflight-commands.md +81 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/rollback-playbook.md +61 -0
- package/skills/kubernetes/kubernetes-maestro/SKILL.md +45 -0
- package/skills/kubernetes/kubernetes-maestro/metadata.json +24 -0
- package/skills/kubernetes/kubernetes-maestro/references/safety-checklist.md +78 -0
- package/skills/kubernetes/kubernetes-maestro/references/workflow-and-output.md +206 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/SKILL.md +43 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/metadata.json +28 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/references/mcp-and-evidence.md +49 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/references/official-sources.md +26 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/references/workflow-and-output.md +129 -0
- package/skills/kubernetes/kubernetes-pod-spec-review/SKILL.md +38 -0
- package/skills/kubernetes/kubernetes-pod-spec-review/metadata.json +22 -0
- package/skills/kubernetes/kubernetes-pod-spec-review/references/workflow-and-output.md +229 -0
- package/skills/kubernetes/kubernetes-rbac-review/SKILL.md +38 -0
- package/skills/kubernetes/kubernetes-rbac-review/metadata.json +27 -0
- package/skills/kubernetes/kubernetes-rbac-review/references/mcp-and-evidence.md +34 -0
- package/skills/kubernetes/kubernetes-rbac-review/references/official-sources.md +22 -0
- package/skills/kubernetes/kubernetes-rbac-review/references/workflow-and-output.md +44 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/SKILL.md +43 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/metadata.json +29 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/references/mcp-and-evidence.md +57 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/references/official-sources.md +47 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/references/workflow-and-output.md +166 -0
- package/skills/kyverno/README.md +30 -0
- package/skills/kyverno/kyverno-policy-review/SKILL.md +43 -0
- package/skills/kyverno/kyverno-policy-review/metadata.json +30 -0
- package/skills/kyverno/kyverno-policy-review/references/mcp-and-evidence.md +49 -0
- package/skills/kyverno/kyverno-policy-review/references/official-sources.md +31 -0
- package/skills/kyverno/kyverno-policy-review/references/workflow-and-output.md +106 -0
- package/skills/oci/README.md +63 -0
- package/skills/oci/oci-certificates-issuer-review/SKILL.md +37 -0
- package/skills/oci/oci-certificates-issuer-review/metadata.json +20 -0
- package/skills/oci/oci-certificates-issuer-review/references/workflow-and-output.md +207 -0
- package/skills/oci/oci-live-network-security-rule-guard/SKILL.md +57 -0
- package/skills/oci/oci-live-network-security-rule-guard/metadata.json +28 -0
- package/skills/oci/oci-live-network-security-rule-guard/references/official-sources.md +21 -0
- package/skills/oci/oci-live-network-security-rule-guard/references/permission-model.md +65 -0
- package/skills/oci/oci-live-network-security-rule-guard/references/preflight-commands.md +69 -0
- package/skills/oci/oci-live-network-security-rule-guard/references/rollback-playbook.md +79 -0
- package/skills/opentelemetry/README.md +31 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/SKILL.md +44 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/metadata.json +30 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/references/mcp-and-evidence.md +49 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/references/official-sources.md +31 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/references/workflow-and-output.md +155 -0
- package/skills/prometheus/prometheus-alerting-cardinality-review/SKILL.md +38 -0
- package/skills/prometheus/prometheus-alerting-cardinality-review/metadata.json +22 -0
- package/skills/prometheus/prometheus-alerting-cardinality-review/references/workflow-and-output.md +221 -0
- package/skills/sigstore/sigstore-cosign-supply-chain-review/SKILL.md +39 -0
- package/skills/sigstore/sigstore-cosign-supply-chain-review/metadata.json +22 -0
- package/skills/sigstore/sigstore-cosign-supply-chain-review/references/workflow-and-output.md +196 -0
- package/skills/terraform/README.md +29 -0
- package/skills/velero/velero-backup-restore-guard/SKILL.md +41 -0
- package/skills/velero/velero-backup-restore-guard/metadata.json +21 -0
- package/skills/velero/velero-backup-restore-guard/references/safety-checklist.md +40 -0
- package/skills/velero/velero-backup-restore-guard/references/workflow-and-output.md +202 -0
package/skills/azure/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Azure skills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="../../assets/logos/cloud/azure/azure.png" alt="Azure logo" width="140" />
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
7
|
This folder contains Azure-focused skills curated for this marketplace.
|
|
6
8
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-keyvault-certificate-issuer-review
|
|
3
|
+
description: Use this skill when reviewing Azure Key Vault certificate issuer configurations for cert-manager on AKS. Trigger on any request to audit Key Vault certificate policies, Managed Identity role assignments, exportability settings, private endpoint connectivity, integrated CA credentials, or rotation policy alignment.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Azure Key Vault Certificate Issuer Review
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Review Azure Key Vault configurations used as certificate issuers for cert-manager on AKS. Identify Managed Identity role assignment gaps (data plane vs management plane confusion), certificate policy misalignment, exportability risks, network connectivity issues, integrated CA credential over-scoping, and rotation race conditions between cert-manager and Key Vault auto-rotation. Output severity-labeled findings with evidence and remediation steps.
|
|
14
|
+
|
|
15
|
+
## Lean operating rules
|
|
16
|
+
|
|
17
|
+
- Check the Managed Identity (or Service Principal) role assignment on the Key Vault: the correct role is `Key Vault Certificate Officer` (data plane). Flag `Key Vault Contributor` as HIGH — it grants management plane access including vault deletion. Flag `Key Vault Administrator` as HIGH (full data plane + management).
|
|
18
|
+
- Verify whether Key Vault RBAC mode is enabled (`enableRbacAuthorization: true`). If legacy access policies are used instead of RBAC, flag as MEDIUM (harder to audit, no Azure AD Conditional Access integration).
|
|
19
|
+
- Review `exportable` in the Key Vault certificate policy. Flag `exportable: true` on certs used for cluster-internal mTLS as MEDIUM (private key unnecessarily extractable from Key Vault).
|
|
20
|
+
- Check Key Vault network access configuration: if `publicNetworkAccess: Disabled`, verify the AKS cluster has private endpoint access to the Key Vault and DNS resolution via private DNS zone. Flag missing private endpoint as MEDIUM.
|
|
21
|
+
- For integrated CAs (DigiCert, GlobalSign): verify the Key Vault has the CA integration configured and the credential secret is scoped to a minimum (single certificate profile, not account-wide).
|
|
22
|
+
- Review cert-manager `renewBefore` against the Key Vault certificate's auto-rotation policy to detect overlapping rotation windows. Flag simultaneous rotation triggers as MEDIUM.
|
|
23
|
+
- Label all findings as live evidence, documentation-based, or inference.
|
|
24
|
+
|
|
25
|
+
## References
|
|
26
|
+
|
|
27
|
+
Load these only when needed:
|
|
28
|
+
|
|
29
|
+
- [Workflow and output contract](references/workflow-and-output.md)
|
|
30
|
+
|
|
31
|
+
## Response minimum
|
|
32
|
+
|
|
33
|
+
- Severity-labeled findings list (CRITICAL / HIGH / MEDIUM / LOW)
|
|
34
|
+
- Evidence source for each finding
|
|
35
|
+
- Specific resource name or field that caused the finding
|
|
36
|
+
- Recommended remediation with example Azure CLI command or policy snippet
|
|
37
|
+
- Overall Key Vault certificate issuer posture verdict
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "azure-keyvault-certificate-issuer-review",
|
|
3
|
+
"name": "Azure Key Vault Certificate Issuer Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "azure",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review Azure Key Vault certificate issuer configurations for cert-manager, covering certificate policy alignment, Managed Identity authorization scope, exportability posture, private endpoint connectivity, integrated CA credential scoping, and cert-manager vs Key Vault auto-rotation race conditions.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://learn.microsoft.com/en-us/azure/key-vault/certificates/about-certificates",
|
|
11
|
+
"https://learn.microsoft.com/en-us/azure/key-vault/certificates/certificate-scenarios",
|
|
12
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/security",
|
|
13
|
+
"https://learn.microsoft.com/en-us/azure/key-vault/general/network-security"
|
|
14
|
+
],
|
|
15
|
+
"security_notes": "Key Vault Contributor role assigned to cert-manager allows deletion of the Key Vault, management policy changes, and purge of soft-deleted certs — a full management plane compromise. Use Key Vault Certificate Officer (data plane RBAC) instead. Exportable certificates allow private key extraction from Key Vault; use non-exportable certs for cluster-internal mTLS.",
|
|
16
|
+
"last_verified": "2026-05-02",
|
|
17
|
+
"path": "skills/azure/azure-keyvault-certificate-issuer-review",
|
|
18
|
+
"author": "github: Raishin",
|
|
19
|
+
"version": "0.1.0"
|
|
20
|
+
}
|
package/skills/azure/azure-keyvault-certificate-issuer-review/references/workflow-and-output.md
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Review Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Identify the cert-manager issuer configuration
|
|
6
|
+
|
|
7
|
+
Locate the cert-manager issuer resource that references Azure Key Vault:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
kubectl get issuer -A -o yaml | grep -A10 "azureKeyVault\|keyVault"
|
|
11
|
+
kubectl get clusterissuer -o yaml | grep -A10 "azureKeyVault\|keyVault"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Extract the Key Vault name and vault URI from the issuer spec. The exact fields depend on the cert-manager Azure issuer plugin in use (e.g., `cert-manager-webhook-azure` or CAPZ-style issuers).
|
|
15
|
+
|
|
16
|
+
### Step 2 — Check Managed Identity role assignment
|
|
17
|
+
|
|
18
|
+
Identify the Managed Identity or Service Principal used by cert-manager on AKS:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Get the cert-manager pod's managed identity annotation
|
|
22
|
+
kubectl get pod -n cert-manager -l app=cert-manager -o jsonpath='{.items[0].metadata.annotations}'
|
|
23
|
+
|
|
24
|
+
# Or check the ServiceAccount for workload identity annotation
|
|
25
|
+
kubectl get serviceaccount cert-manager -n cert-manager -o jsonpath='{.metadata.annotations}'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Retrieve role assignments on the Key Vault:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
KV_ID=$(az keyvault show --name <vault-name> --query id -o tsv)
|
|
32
|
+
az role assignment list --scope "$KV_ID" --output table
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Correct role:** `Key Vault Certificate Officer` (data plane only)
|
|
36
|
+
|
|
37
|
+
Role comparison:
|
|
38
|
+
|
|
39
|
+
| Role | Plane | Grants | Risk |
|
|
40
|
+
|------|-------|--------|------|
|
|
41
|
+
| `Key Vault Certificate Officer` | Data | Create, update, import, delete certificates | Correct |
|
|
42
|
+
| `Key Vault Certificates Officer` | Data | Same as above (alias) | Correct |
|
|
43
|
+
| `Key Vault Contributor` | Management | Manage vault config, delete vault, change policies | HIGH — management plane access |
|
|
44
|
+
| `Key Vault Administrator` | Data + Management | Full control including purge | HIGH |
|
|
45
|
+
| `Owner` / `Contributor` at subscription | All | Everything | CRITICAL |
|
|
46
|
+
|
|
47
|
+
### Step 3 — Check RBAC mode vs legacy access policies
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
az keyvault show --name <vault-name> --query properties.enableRbacAuthorization
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- `true` — RBAC mode (preferred, auditable via Azure RBAC)
|
|
54
|
+
- `false` or `null` — legacy access policies (harder to audit)
|
|
55
|
+
|
|
56
|
+
If legacy access policies are in use, check the policy:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
az keyvault show --name <vault-name> --query properties.accessPolicies
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The cert-manager identity should only have `certificates: ["get", "create", "import", "update", "list"]` — not `all` and not management operations.
|
|
63
|
+
|
|
64
|
+
### Step 4 — Review certificate policy and exportability
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
az keyvault certificate get-default-policy
|
|
68
|
+
az keyvault certificate show --vault-name <vault-name> --name <cert-name>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Key fields in the certificate policy:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"x509CertificateProperties": {
|
|
76
|
+
"subject": "CN=myapp.internal",
|
|
77
|
+
"validityInMonths": 3,
|
|
78
|
+
"keyUsage": ["digitalSignature", "keyEncipherment"]
|
|
79
|
+
},
|
|
80
|
+
"keyProperties": {
|
|
81
|
+
"exportable": false,
|
|
82
|
+
"keyType": "RSA",
|
|
83
|
+
"keySize": 2048,
|
|
84
|
+
"reuseKey": false
|
|
85
|
+
},
|
|
86
|
+
"issuerParameters": {
|
|
87
|
+
"name": "Self"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Flags:**
|
|
93
|
+
- `exportable: true` on a cert used for cluster-internal mTLS — MEDIUM (private key extractable)
|
|
94
|
+
- `keySize < 2048` for RSA or `keySize < 256` for EC — HIGH (weak key)
|
|
95
|
+
- `validityInMonths > 12` for workload certs — MEDIUM (excessive validity)
|
|
96
|
+
|
|
97
|
+
Note: Non-exportable certs require the application to use Key Vault SDK or CSI driver for key operations, not just cert retrieval. Confirm application capability before enforcing non-exportable.
|
|
98
|
+
|
|
99
|
+
### Step 5 — Review Key Vault network access
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
az keyvault show --name <vault-name> --query properties.networkAcls
|
|
103
|
+
az keyvault show --name <vault-name> --query properties.publicNetworkAccess
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
If `publicNetworkAccess: Disabled`:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Check for private endpoint
|
|
110
|
+
az network private-endpoint list \
|
|
111
|
+
--query "[?privateLinkServiceConnections[?groupIds[0]=='vault']].{name:name,subnet:subnet.id}" \
|
|
112
|
+
--output table
|
|
113
|
+
|
|
114
|
+
# Check for private DNS zone
|
|
115
|
+
az network private-dns zone list --query "[?contains(name,'vaultcore')]" --output table
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For AKS access to Key Vault:
|
|
119
|
+
- AKS cluster VNet must be peered with or the same as the VNet hosting the private endpoint
|
|
120
|
+
- Private DNS zone `privatelink.vaultcore.azure.net` must be linked to the AKS cluster VNet
|
|
121
|
+
- Outbound traffic from cert-manager pod must route through the private endpoint
|
|
122
|
+
|
|
123
|
+
**Flags:**
|
|
124
|
+
- Key Vault with public access from internet and no firewall restrictions — MEDIUM
|
|
125
|
+
- Key Vault with `publicNetworkAccess: Disabled` but missing private endpoint — HIGH (cert issuance will fail)
|
|
126
|
+
- No private DNS zone link to AKS VNet (DNS resolution fails for private endpoint) — HIGH
|
|
127
|
+
|
|
128
|
+
### Step 6 — Review integrated CA configuration (if applicable)
|
|
129
|
+
|
|
130
|
+
For DigiCert or GlobalSign integrated CAs:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
az keyvault certificate issuer show --vault-name <vault-name> --issuer-name DigiCert
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Check that the issuer credential secret is stored in Key Vault and scoped to a minimum profile:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
az keyvault secret show --vault-name <vault-name> --name DigiCert-issuer-creds
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Flags:**
|
|
143
|
+
- Integrated CA credentials that have account-wide issuance scope (not single profile) — MEDIUM
|
|
144
|
+
- Integrated CA credentials stored outside Key Vault (e.g., in a Kubernetes Secret) — MEDIUM
|
|
145
|
+
|
|
146
|
+
### Step 7 — Review rotation race condition
|
|
147
|
+
|
|
148
|
+
cert-manager rotation schedule:
|
|
149
|
+
```bash
|
|
150
|
+
kubectl get certificate <name> -n <namespace> -o jsonpath='{.spec.duration} {.spec.renewBefore}'
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Key Vault auto-rotation policy:
|
|
154
|
+
```bash
|
|
155
|
+
az keyvault certificate get-default-policy | jq '.lifetimeActions'
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
A `lifetimeAction` of type `AutoRenew` triggers Key Vault to request a new cert from the issuer. If cert-manager's `renewBefore` window overlaps with the Key Vault auto-renewal trigger (both fire within the same rotation window), both may attempt to renew simultaneously, causing a temporary version mismatch.
|
|
159
|
+
|
|
160
|
+
**Mitigation:** Disable Key Vault auto-rotation for certs managed by cert-manager, or ensure the Key Vault auto-renewal threshold is set beyond the cert-manager `renewBefore` window.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Output Format
|
|
165
|
+
|
|
166
|
+
### Finding: `<short title>`
|
|
167
|
+
|
|
168
|
+
| Field | Value |
|
|
169
|
+
|-------|-------|
|
|
170
|
+
| Severity | CRITICAL / HIGH / MEDIUM / LOW |
|
|
171
|
+
| Resource | Key Vault name, role assignment, cert name, or policy field |
|
|
172
|
+
| Evidence | documentation-based / live evidence / inference |
|
|
173
|
+
| Description | What is wrong and its impact |
|
|
174
|
+
| Remediation | Azure CLI command, policy JSON, or configuration change |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### Overall Posture
|
|
179
|
+
|
|
180
|
+
| Category | Status |
|
|
181
|
+
|----------|--------|
|
|
182
|
+
| Managed Identity role (data plane only) | PASS / FAIL |
|
|
183
|
+
| RBAC mode (not legacy policies) | PASS / FAIL |
|
|
184
|
+
| Certificate exportability | PASS / FAIL |
|
|
185
|
+
| Key Vault network access | PASS / FAIL |
|
|
186
|
+
| Certificate validity periods | PASS / FAIL |
|
|
187
|
+
| Integrated CA credential scope | PASS / N/A / FAIL |
|
|
188
|
+
| Rotation policy alignment | PASS / FAIL |
|
|
189
|
+
|
|
190
|
+
**Verdict:** TRUSTED / UNTRUSTED / CONDITIONAL (list conditions)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-live-entra-role-assignment-guard
|
|
3
|
+
description: Guard live permanent Microsoft Entra ID and Azure RBAC role assignments with scope audit, principal-type risk classification, dangerous-role detection, and explicit approval gates before write. Use only when a direct (non-PIM) role assignment is intentionally requested against a confirmed target.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Azure Live Entra Role Assignment Guard
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Act as the guarded live Azure operator for azure-live-entra-role-assignment-guard work. Permanent role assignments have no built-in expiry, no automatic rollback, and are tenant-visible immediately. Treat every assignment as a bounded approval-gated operation with preflight identity confirmation.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
|
|
19
|
+
- a direct (non-PIM) Entra ID or Azure RBAC role assignment must be created against a confirmed principal and scope
|
|
20
|
+
- an existing assignment must be removed and the downstream access impact must be assessed before deletion
|
|
21
|
+
- a role assignment audit finds over-broad, stale, or guest assignments that must be remediated with least-privilege alternatives
|
|
22
|
+
|
|
23
|
+
## Lean operating rules
|
|
24
|
+
|
|
25
|
+
- Prefer Azure CLI (`az`) and Microsoft Learn docs when available; fall back to sanitized user evidence.
|
|
26
|
+
- Do not create or delete any role assignment until subscription or tenant, active principal, target scope, role, and assignee identity are all explicit.
|
|
27
|
+
- Prefer read-only inspection (`az role assignment list`, `az ad user show`) before any write.
|
|
28
|
+
- Flag the following as high-severity and require explicit justification with business case before proceeding:
|
|
29
|
+
- Owner, Contributor, or User Access Administrator at subscription or management-group scope
|
|
30
|
+
- Any role assignment to a Guest principal (external account, highest breach risk)
|
|
31
|
+
- Any Entra ID directory role (Global Administrator, Privileged Role Administrator, Application Administrator)
|
|
32
|
+
- Permanent assignments where PIM eligible assignment would satisfy the requirement
|
|
33
|
+
- If the request skips scope confirmation, assignee type verification, or rollback awareness, push back.
|
|
34
|
+
- Never print access tokens, client secrets, tenant IDs, Object IDs without context, or raw environment dumps. Summarize sanitized evidence only.
|
|
35
|
+
- Load references only when needed.
|
|
36
|
+
|
|
37
|
+
## References
|
|
38
|
+
|
|
39
|
+
Load these only when needed:
|
|
40
|
+
|
|
41
|
+
- [Preflight commands](references/preflight-commands.md) — Azure CLI commands to inspect current assignments, identity, and scope before any write.
|
|
42
|
+
- [Rollback playbook](references/rollback-playbook.md) — how to remove an assignment and verify access is revoked.
|
|
43
|
+
- [Permission model](references/permission-model.md) — least-privilege role alternatives, dangerous role IDs, and PIM vs permanent guidance.
|
|
44
|
+
- [Official sources](references/official-sources.md) — authoritative Microsoft documentation links.
|
|
45
|
+
|
|
46
|
+
## Response minimum
|
|
47
|
+
|
|
48
|
+
Return, at minimum:
|
|
49
|
+
|
|
50
|
+
- confirmed tenant, subscription (if applicable), target scope, and active caller identity
|
|
51
|
+
- preflight evidence: existing assignments on the target scope and current assignee roles
|
|
52
|
+
- principal-type risk classification (member user / guest / service principal / managed identity / group)
|
|
53
|
+
- role risk classification (Owner / Contributor / UAA / custom / narrow built-in)
|
|
54
|
+
- approval status and explicit justification for the assignment
|
|
55
|
+
- rollback posture: the exact `az role assignment delete` command to undo
|
|
56
|
+
- post-assignment verification steps or refusal reason
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "azure-live-entra-role-assignment-guard",
|
|
3
|
+
"name": "Azure Live Entra Role Assignment Guard",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "azure",
|
|
6
|
+
"harnesses": [
|
|
7
|
+
"codex",
|
|
8
|
+
"claude-code",
|
|
9
|
+
"cursor",
|
|
10
|
+
"gemini",
|
|
11
|
+
"kiro",
|
|
12
|
+
"other"
|
|
13
|
+
],
|
|
14
|
+
"summary": "Guard live permanent Microsoft Entra ID and Azure RBAC role assignments with scope audit, principal-type risk classification, dangerous-role detection, and explicit approval gates before write.",
|
|
15
|
+
"source_type": "original",
|
|
16
|
+
"official_docs": [
|
|
17
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/overview",
|
|
18
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/best-practices",
|
|
19
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles",
|
|
20
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-alert",
|
|
21
|
+
"https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure"
|
|
22
|
+
],
|
|
23
|
+
"security_notes": "Never create Owner, Contributor, or User Access Administrator assignments at subscription or management-group scope without explicit CISO-level justification. Always prefer PIM eligible assignment over permanent. Block any assignment to Guest principals without Director-level sign-off. Token caching means deletion may take up to 5 minutes to propagate.",
|
|
24
|
+
"last_verified": "2026-05-01",
|
|
25
|
+
"path": "skills/azure/azure-live-entra-role-assignment-guard",
|
|
26
|
+
"author": "github: Raishin",
|
|
27
|
+
"version": "0.1.0"
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Official Sources
|
|
2
|
+
|
|
3
|
+
Load these only when needed:
|
|
4
|
+
|
|
5
|
+
- [Azure RBAC overview](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) — use for role assignment model, scope hierarchy (management group → subscription → resource group → resource), and security principal types.
|
|
6
|
+
- [Best practices for Azure RBAC](https://learn.microsoft.com/en-us/azure/role-based-access-control/best-practices) — use for least privilege, group-based assignment, PIM preference, limiting Owner and UAA, and stable role ID usage.
|
|
7
|
+
- [Azure built-in roles](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) — use when checking whether a narrow built-in role satisfies the requirement before recommending Contributor or Owner.
|
|
8
|
+
- [Alert on privileged role assignments](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-alert) — use for the Kusto query pattern to detect Owner / Contributor / UAA assignment events in Activity Log.
|
|
9
|
+
- [Entra ID PIM overview](https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure) — use when the permanent assignment request should instead use PIM eligible assignment with JIT activation.
|
|
10
|
+
- [az role assignment CLI reference](https://learn.microsoft.com/en-us/cli/azure/role/assignment) — use for exact `az role assignment create`, `list`, `delete` syntax and parameter options.
|
|
11
|
+
- [Understand role assignments](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments) — use for role assignment object structure (name, roleDefinitionId, principalId, principalType, scope, condition).
|
|
12
|
+
|
|
13
|
+
## Grounded insights worth carrying into the skill
|
|
14
|
+
|
|
15
|
+
- The Azure RBAC API version for role assignments is `2022-04-01` (`Microsoft.Authorization/roleAssignments`).
|
|
16
|
+
- Dangerous role definition IDs (stable — never rename): Owner `8e3af657-a8ff-443c-a75c-2fe8c4bcb635`, Contributor `b24988ac-6180-42a0-ab88-20f7382dd24c`, User Access Administrator `18d7d88d-d35e-4fb5-a5c3-7773c20a72d9`.
|
|
17
|
+
- A permanent role assignment at subscription scope granted to a Guest user is one of the most common post-breach persistence techniques in Azure tenants — always block without explicit CISO-level sign-off.
|
|
18
|
+
- Azure AD token caching means a deleted assignment may still be honored for up to 5 minutes after deletion; do not declare rollback complete immediately.
|
|
19
|
+
- `Microsoft.Authorization/roleAssignments/write` at subscription scope is the permission that enables all downstream privilege escalation — any principal with it can assign themselves Owner.
|
|
20
|
+
- Prefer `az role assignment list --include-inherited` to find assignments at parent scopes that affect the target resource.
|
|
21
|
+
- Microsoft recommends group-based role assignment over direct user assignment to simplify access reviews and offboarding.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Permission Model: Azure Live Entra Role Assignment Guard
|
|
2
|
+
|
|
3
|
+
## Risk classification by role
|
|
4
|
+
|
|
5
|
+
| Role | Risk | Reason |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Owner | Critical | Full resource control + can reassign access |
|
|
8
|
+
| User Access Administrator | Critical | Can assign any role to any principal at scope |
|
|
9
|
+
| Contributor | High | Full resource read/write, no access management |
|
|
10
|
+
| Global Administrator | Critical | Tenant-wide Entra ID control, bypasses RBAC |
|
|
11
|
+
| Privileged Role Administrator | Critical | Can assign Entra directory roles including Global Admin |
|
|
12
|
+
| Application Administrator | High | Can create service principals and grant Graph API permissions |
|
|
13
|
+
| Custom roles with `*/write` | High | Broad mutation rights — review assignable scopes |
|
|
14
|
+
| Reader | Low | Read-only — acceptable for most principals |
|
|
15
|
+
| Narrow built-in roles | Low | e.g. Storage Blob Data Reader, Key Vault Secrets User |
|
|
16
|
+
|
|
17
|
+
## Risk classification by scope
|
|
18
|
+
|
|
19
|
+
| Scope | Risk |
|
|
20
|
+
|---|---|
|
|
21
|
+
| Management group | Critical — affects all child subscriptions and resource groups |
|
|
22
|
+
| Subscription | High — affects all resources in the subscription |
|
|
23
|
+
| Resource group | Medium — contained to group members |
|
|
24
|
+
| Individual resource | Low — minimal blast radius |
|
|
25
|
+
|
|
26
|
+
## Risk classification by principal type
|
|
27
|
+
|
|
28
|
+
| Principal type | Risk | Notes |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| Guest user (`userType: Guest`) | Critical | External identity, not governed by corporate IdP; highest breach risk |
|
|
31
|
+
| Member user | Medium | Internal — verify employment status and team ownership |
|
|
32
|
+
| Service principal (application) | High | Non-human identity; verify application ownership and client secret rotation policy |
|
|
33
|
+
| Managed identity (system-assigned) | Low-Medium | Scoped to a resource lifecycle; verify the resource owner |
|
|
34
|
+
| Managed identity (user-assigned) | Medium | Shared across resources; verify all attached resources |
|
|
35
|
+
| Group | Medium | Verify group membership is actively governed; avoid open groups |
|
|
36
|
+
|
|
37
|
+
## Least-privilege guidance
|
|
38
|
+
|
|
39
|
+
1. **Prefer PIM eligible assignments over permanent.** If the role is needed periodically, PIM with time-bounded activation + MFA + justification is always the correct approach.
|
|
40
|
+
2. **Prefer narrow built-in roles over Contributor/Owner.** Azure has 200+ built-in roles; check whether a service-specific role (e.g. `Monitoring Contributor`, `Key Vault Secrets Officer`) satisfies the requirement.
|
|
41
|
+
3. **Prefer resource-group scope over subscription scope.** Subscription scope is justified only for infrastructure, platform, or governance roles.
|
|
42
|
+
4. **Prefer group-based assignment over direct user assignment.** Groups enable consistent access reviews and offboarding.
|
|
43
|
+
|
|
44
|
+
## Minimum caller permissions for role assignment operations
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"Name": "Role Assignment Operator (Guarded)",
|
|
49
|
+
"IsCustom": true,
|
|
50
|
+
"Description": "Read role assignments and create new ones at resource-group or lower scope only.",
|
|
51
|
+
"Actions": [
|
|
52
|
+
"Microsoft.Authorization/roleAssignments/read",
|
|
53
|
+
"Microsoft.Authorization/roleAssignments/write",
|
|
54
|
+
"Microsoft.Authorization/roleAssignments/delete",
|
|
55
|
+
"Microsoft.Authorization/roleDefinitions/read"
|
|
56
|
+
],
|
|
57
|
+
"AssignableScopes": [
|
|
58
|
+
"/subscriptions/<SUBSCRIPTION_ID>"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Restrict `AssignableScopes` to resource-group scope for operators who should not assign at subscription level.
|
|
64
|
+
|
|
65
|
+
## Dangerous combinations — always block
|
|
66
|
+
|
|
67
|
+
- Owner at management-group scope assigned to a Guest principal
|
|
68
|
+
- User Access Administrator at subscription scope (allows re-elevating to Owner)
|
|
69
|
+
- Any Entra directory role (Global Admin, Privileged Role Admin) assigned outside of PIM
|
|
70
|
+
- Service principal with Owner and no owner/contact defined in application registration
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Preflight Commands: Azure Live Entra Role Assignment Guard
|
|
2
|
+
|
|
3
|
+
Run all of these before creating or deleting any role assignment.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm caller identity and active subscription
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
az account show --query "{subscription:id, name:name, tenantId:tenantId, caller:user.name}"
|
|
9
|
+
az ad signed-in-user show --query "{displayName:displayName, id:id, userPrincipalName:userPrincipalName}"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 2. Inspect existing role assignments on the target scope
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Subscription scope
|
|
16
|
+
az role assignment list \
|
|
17
|
+
--scope "/subscriptions/<SUBSCRIPTION_ID>" \
|
|
18
|
+
--include-inherited \
|
|
19
|
+
--query "[].{role:roleDefinitionName, principal:principalName, principalType:principalType, scope:scope}"
|
|
20
|
+
|
|
21
|
+
# Management group scope
|
|
22
|
+
az role assignment list \
|
|
23
|
+
--scope "/providers/Microsoft.Management/managementGroups/<MG_ID>" \
|
|
24
|
+
--include-inherited \
|
|
25
|
+
--query "[].{role:roleDefinitionName, principal:principalName, principalType:principalType, scope:scope}"
|
|
26
|
+
|
|
27
|
+
# Resource group scope
|
|
28
|
+
az role assignment list \
|
|
29
|
+
--resource-group <RESOURCE_GROUP> \
|
|
30
|
+
--include-inherited \
|
|
31
|
+
--query "[].{role:roleDefinitionName, principal:principalName, principalType:principalType, scope:scope}"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 3. Verify the assignee identity and principal type
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# For a user
|
|
38
|
+
az ad user show --id <UPN_OR_OBJECT_ID> \
|
|
39
|
+
--query "{displayName:displayName, userPrincipalName:userPrincipalName, userType:userType, accountEnabled:accountEnabled}"
|
|
40
|
+
|
|
41
|
+
# userType: "Guest" = external account, elevated risk. Always flag.
|
|
42
|
+
|
|
43
|
+
# For a service principal
|
|
44
|
+
az ad sp show --id <APP_ID_OR_OBJECT_ID> \
|
|
45
|
+
--query "{displayName:displayName, appId:appId, servicePrincipalType:servicePrincipalType}"
|
|
46
|
+
|
|
47
|
+
# For a managed identity
|
|
48
|
+
az identity show --name <IDENTITY_NAME> --resource-group <RG> \
|
|
49
|
+
--query "{name:name, principalId:principalId, tenantId:tenantId}"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 4. Check for existing dangerous standing assignments (audit)
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Find Owner and UAA at subscription scope (Kusto alternative via activity log)
|
|
56
|
+
az role assignment list \
|
|
57
|
+
--scope "/subscriptions/<SUBSCRIPTION_ID>" \
|
|
58
|
+
--query "[?roleDefinitionName=='Owner' || roleDefinitionName=='User Access Administrator'].{role:roleDefinitionName, principal:principalName, principalType:principalType}"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 5. Check whether a PIM eligible assignment already exists (prefer PIM over permanent)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
az role eligibility-schedule list \
|
|
65
|
+
--scope "/subscriptions/<SUBSCRIPTION_ID>" \
|
|
66
|
+
--query "[?principalId=='<PRINCIPAL_OBJECT_ID>'].{role:roleDefinitionDisplayName, endDateTime:endDateTime, status:status}"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
If an eligible assignment already exists, the correct action is PIM activation, not a new permanent assignment.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Rollback Playbook: Azure Live Entra Role Assignment Guard
|
|
2
|
+
|
|
3
|
+
Permanent role assignments do not expire automatically. Rollback means explicit deletion. Always capture the assignment details before write so deletion is unambiguous.
|
|
4
|
+
|
|
5
|
+
## Before any assignment write — capture the full assignment for rollback
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Save the exact object ID, role definition ID, and scope
|
|
9
|
+
az role assignment list \
|
|
10
|
+
--assignee <PRINCIPAL_OBJECT_ID_OR_UPN> \
|
|
11
|
+
--scope <SCOPE> \
|
|
12
|
+
--query "[].{name:name, roleDefinitionId:roleDefinitionId, principalId:principalId, scope:scope}"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Remove a role assignment by name (most precise)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
az role assignment delete \
|
|
19
|
+
--ids /subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Authorization/roleAssignments/<ASSIGNMENT_NAME>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Remove by role + assignee + scope (if name not captured)
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
az role assignment delete \
|
|
26
|
+
--assignee <PRINCIPAL_OBJECT_ID_OR_UPN> \
|
|
27
|
+
--role "<ROLE_NAME_OR_ID>" \
|
|
28
|
+
--scope <SCOPE>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Verify deletion took effect
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
az role assignment list \
|
|
35
|
+
--assignee <PRINCIPAL_OBJECT_ID_OR_UPN> \
|
|
36
|
+
--scope <SCOPE> \
|
|
37
|
+
--query "[].{role:roleDefinitionName, scope:scope}"
|
|
38
|
+
# Should return empty or not include the deleted assignment
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Caveats
|
|
42
|
+
|
|
43
|
+
- Token caching: deleted assignments may still appear valid for up to 5 minutes due to Azure AD token caching. Wait before declaring rollback complete.
|
|
44
|
+
- Inherited assignments: if the assignment was at a parent scope (subscription or management group), removing it at the child scope is not possible — you must delete from the parent scope where it was created.
|
|
45
|
+
- Guest accounts: if the principal is a guest and the assignment was their only entitlement, removal may trigger MFA re-enrollment on next access. Communicate with the affected user.
|
|
46
|
+
- Audit log: the deletion will appear in Azure Activity Log under `Microsoft.Authorization/roleAssignments/delete`. Retain the activity log entry as evidence.
|
|
47
|
+
|
|
48
|
+
## What cannot be rolled back automatically
|
|
49
|
+
|
|
50
|
+
- Access exercised during the window the assignment was active (data accessed, operations performed) cannot be undone via role removal.
|
|
51
|
+
- Any resources created or deleted by the principal during the assignment window must be remediated separately.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backstage-scaffolder-template-review
|
|
3
|
+
description: Use this skill when reviewing Backstage Scaffolder software templates. Trigger when the user asks whether a template is safe for developer self-service, whether template RBAC gates are in place, whether input parameters are validated, whether a step action has excessive blast radius, or whether template outputs expose secrets.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Backstage Scaffolder Template Review
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Review Backstage Scaffolder `Template` kind resources for action blast-radius, input parameter injection risk, RBAC permission gate coverage, integration secret scope, catalog entity poisoning via `catalog:register`, and plaintext secret exposure in `output:` stanzas. Backstage Scaffolder gives developers a curated UI to trigger powerful backend actions — without RBAC gates and input validation, every authenticated developer effectively has write access to whatever the Scaffolder integration credentials can reach.
|
|
14
|
+
|
|
15
|
+
## Lean operating rules
|
|
16
|
+
|
|
17
|
+
- Prefer user-provided sanitized Template YAML as primary evidence; official Backstage docs are the authoritative fallback.
|
|
18
|
+
- Treat any `steps:` action that provisions real cloud infrastructure (Terraform, Crossplane CRD apply, CloudFormation deploy, `kubectl apply`) with no RBAC permission gate as a CRITICAL finding.
|
|
19
|
+
- Treat input parameters flowing unsanitized into `publish:github.repoUrl`, file-path actions, or shell-exec actions as a HIGH finding — path traversal and injection are realistic.
|
|
20
|
+
- Treat `publish:github` with `visibility: public` as the default or without an `allowedHosts` constraint as a HIGH finding.
|
|
21
|
+
- Treat `output:` stanzas exposing plaintext generated credentials, connection strings, or API keys in the Backstage UI as a HIGH finding.
|
|
22
|
+
- Treat the absence of `@backstage/plugin-permission-backend` policies for infrastructure-provisioning templates as a HIGH finding — any authenticated Backstage user can trigger them.
|
|
23
|
+
- Treat `catalog:register` accepting arbitrary user-supplied YAML without server-side entity schema validation as a MEDIUM finding — catalog poisoning overwrites ownership and lifecycle metadata.
|
|
24
|
+
- Keep the answer scoped: report what was reviewed, the evidence level, and exactly which steps or fields triggered each finding.
|
|
25
|
+
|
|
26
|
+
## References
|
|
27
|
+
|
|
28
|
+
Load these only when needed:
|
|
29
|
+
- [Workflow and output contract](references/workflow-and-output.md)
|
|
30
|
+
|
|
31
|
+
## Response minimum
|
|
32
|
+
|
|
33
|
+
- Scoped target (Template `metadata.name`) and evidence level
|
|
34
|
+
- Each `steps:` action type and its provisioning blast radius
|
|
35
|
+
- Input parameter validation gaps (missing `maxLength`, `pattern`, `enum`)
|
|
36
|
+
- RBAC permission gate verdict (present / absent / partial)
|
|
37
|
+
- Integration secret scope assessment
|
|
38
|
+
- `output:` stanza exposure assessment
|
|
39
|
+
- Safe next actions and open questions
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "backstage-scaffolder-template-review",
|
|
3
|
+
"name": "Backstage Scaffolder Template Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "backstage",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review Backstage Scaffolder software templates for action blast-radius, input parameter injection, RBAC gate coverage, secret scope, catalog entity poisoning, and output exposure.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://backstage.io/docs/features/software-templates/",
|
|
11
|
+
"https://backstage.io/docs/features/software-templates/writing-templates",
|
|
12
|
+
"https://backstage.io/docs/features/software-templates/builtin-actions",
|
|
13
|
+
"https://backstage.io/docs/permissions/overview",
|
|
14
|
+
"https://backstage.io/docs/integrations/github/github-apps"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "Backstage Scaffolder templates without RBAC gate and without input validation allow any developer to trigger infrastructure provisioning actions. Templates that provision cloud resources via Terraform or Crossplane CRDs effectively grant cloud-write to all Backstage users.",
|
|
17
|
+
"last_verified": "2026-05-02",
|
|
18
|
+
"path": "skills/backstage/backstage-scaffolder-template-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0"
|
|
21
|
+
}
|