Skip to content

Compliance

Compliance is continuous evidence, not a quarterly scramble. Policy, scans, dependency remediation, release records, and monitoring findings are committed, executed, exported, and reviewed through the same Git-based delivery path.

The practical version is simple: when a tool finds risk, we route that risk into GitHub, fix or accept it in writing, and keep the record with the release or monitoring packet. A finding that only lives in a dashboard is easy to lose. A finding tied to a PR, release, or POA&M item can be reviewed later.

Compliance loop

flowchart TD
subgraph AutomationPhase["Automation"]
Policy["Policy as code"]
Deploy["ArgoCD sync"]
Scan["Scans and findings"]
end
subgraph HumanWork["Human work"]
Triage["GitHub triage"]
Fix["Remediation PR"]
Evidence["ConMon evidence"]
end
Policy -->|on sync| Deploy
Deploy -->|on deploy| Scan
Scan -->|on finding| Triage
Triage -->|if actionable| Fix
Fix -->|on merge| Evidence
Evidence -->|feeds| Policy
style Evidence fill:#dcfce7,stroke:#16a34a,color:#14532d

The control is strongest when the evidence is a by-product of normal work. A Kyverno policy in Git, a Trivy SARIF export, a Renovate PR, an ArgoCD sync record, and a release record are better than a spreadsheet assembled after the fact.

Vocabulary

TermMeaning
FindingA scanner, policy, or reviewer identified a risk to investigate
SARIFA standard format for security and code-analysis results that GitHub can display
SBOMA software bill of materials: the dependency and component list for an artifact
POA&MA tracked plan for an open weakness, owner, and remediation date
ConMonContinuous monitoring evidence collected on a recurring cadence
False positiveA finding that is not exploitable or not applicable, with written justification

What to notice: these are not separate workflows. They are the names of records that attach to the normal PR and release path.

Toolchain

ToolLayerProduces
KyvernoKubernetes admissionPolicy manifests, admission decisions, policy drift evidence
FalcoRuntimeRuntime anomaly alerts and finding records
TrivyImage and IaCVulnerability scan results and SARIF exports
DependabotGitHub dependency visibilityAlerts, advisories, security update context
RenovateDependency remediationUpdate PRs, dashboard decisions, grouped changes
Cloud CustodianAWS resourcesDrift correction, policy records, compliance findings
GitHub Advanced SecurityFindings hubSARIF triage, false-positive annotations, audit trail
ArgoCDDelivery control planeSync history, drift state, deployed commit and values

What to notice: each tool owns a layer and produces a durable artifact that can be reviewed later.

Finding response path

When a finding appears, do not treat it as a dashboard cleanup task. Route it into the same engineering workflow as any other change.

  1. Identify the affected repo, image, manifest, dependency, or policy.
  2. Confirm severity and whether the finding is real.
  3. Open or link a PR if code, config, dependency, or policy must change.
  4. Add a POA&M item when remediation cannot happen immediately.
  5. Annotate a false positive with the reason and reviewer.
  6. Keep the SARIF export, PR, review, release, and monitoring record together.

The goal is not to make the dashboard quiet. The goal is to make the risk decision reviewable.

Dependency and supply-chain rules

Dependabot stays enabled for GitHub-native alerts. Renovate is the default update workflow because it can run from a controlled automation repo, apply shared policy, and still open normal PRs.

ControlExpectation
IdentityGitHub App or bot identity with least-privilege repo access
ScopeAutodiscovery filters limit which repos are managed
ConfigurationCentral config reviewed like code
UpdatesPR-only; no direct writes to main
ExceptionsLocal config only narrows behavior and explains why
EvidenceDashboard, PRs, checks, reviews, labels, audit log, dependency inventory, SBOM

Review every dependency PR as a real code change. Check the lockfile, release notes, CI, tests, scans, security-sensitive approvals, migration notes, and deployment-manifest impact before merge. GitHub Actions, Helm, Kubernetes, Docker, Terraform, and authentication libraries are supply-chain sensitive even when the version bump looks small.

Dependency PR checklist

Use this checklist before approving dependency updates:

  • the package name and ecosystem match what the PR says
  • the lockfile change is expected
  • release notes do not mention a breaking behavior change
  • tests, build, lint, and security checks pass where relevant
  • container, Helm, Terraform, GitHub Actions, and auth-related updates get extra review
  • major versions include migration notes or an explicit hold decision
  • the PR does not change unrelated code

Automated dependency PRs are proposals. The bot can open the PR, but a human still accepts the risk.

Findings flow back to Git

Every scanner should export results into GitHub Advanced Security using SARIF where supported. Developers fix, discuss, or dismiss findings through auditable PRs, and false positives are annotated instead of discarded.

This matters for ATO because the finding, the decision, the remediation, and the release are connected:

  • the finding points to a repo, file, dependency, image, or policy
  • the remediation lands as a PR with review and checks
  • the release record shows which image and commit reached each environment
  • the monitoring record shows whether the deployed system stayed healthy
  • the POA&M item captures accepted risk or unfinished remediation

False positives and accepted risk

Do not silently ignore findings. If a finding is not real, record why. If a finding is real but cannot be fixed immediately, record the owner, severity, compensating control, and target date.

SituationCorrect record
Scanner flags generated code that is not shippedFalse-positive annotation with reviewer
Dependency has no fixed version yetPOA&M item with monitoring and target review date
Risk is accepted for a releaseRelease note, approver, and POA&M link
Finding is fixedRemediation PR, checks, and release record

An accepted risk is still a risk. The difference is that the owner and next review date are visible.

Release evidence

Release evidence is compliance evidence when it proves controlled change. For each release, retain the commit range, PR list, required checks, scan results, image digest, SBOM or dependency inventory, environment approvals, ArgoCD sync result, and monitoring outcome.

ArtifactWhy it matters
Commit range and PR listShows what changed and who reviewed it
Workflow run and required checksShows verification before promotion
SARIF export and scan reportShows vulnerability and policy status
Image digest and SBOMShows the artifact and its supply-chain contents
Environment approvalShows production movement was authorized
ArgoCD sync resultShows the declared state reached the cluster
POA&M itemShows open risk is tracked and assigned

Continuous monitoring packet

Monthly continuous monitoring should be collectible from the systems above without manual archaeology.

Packet itemSource
Audit-log samplesGitHub, ArgoCD, CloudTrail, application logs
SARIF exportsGitHub Advanced Security and scanner outputs
Vulnerability scan reportsTrivy, Dependabot, Renovate, cloud posture tools
POA&M statusFinding records, remediation PRs, accepted-risk decisions
Flow-log samplesVPC Flow Logs, Network Firewall logs, Security Hub
Reviewer sign-offPR approvals, release approvals, monthly review record

What good evidence looks like

Good evidence answers five questions without relying on memory:

QuestionEvidence that answers it
What changed?PR list, commit range, release notes
Who reviewed it?PR approval, CODEOWNERS review, release approval
What artifact shipped?Image digest, tag, SBOM
What did scanners find?SARIF export, scan report, false-positive notes
What happened after deploy?ArgoCD sync, monitoring result, incident or finding record

If the answer is “someone knows in chat,” the evidence is not durable enough.

Enforcement

  • Policy-as-code changes go through PR review and ArgoCD reconciliation.
  • Trivy and dependency checks run before deployment where configured.
  • Renovate opens remediation PRs instead of writing directly to protected branches.
  • SARIF findings are triaged in GitHub Advanced Security.
  • Production promotion is blocked when required checks, scans, or approvals are missing.
  • Compliance drift routes back to issues, PRs, or POA&M items.

ATO evidence

Compliance evidence should make continuous monitoring visible without a quarterly scramble. Retain SARIF exports, vulnerability scan reports, policy-as-code PRs, false-positive annotations, remediation PRs, dependency inventory or SBOM, release evidence, and POA&M items tied to the finding or control.

EvidenceSupports
Monthly vulnerability scan and SARIF exportRA-5, SI-2
Policy-as-code repository recordCM-6, CA-7
Remediation PR or POA&M itemSA-11, SI-2
Central Renovate workflow and dependency inventorySR-3, SR-4, RA-5
Release evidence with image digest and SBOMSR-3, SR-4, CM-3

See also