WAF-OPS-120 – Feature flags MUST be available and documented for high-risk changes

Description

Risky or customer-visible feature rollouts MUST use feature flags with defined targeting and kill-switch capability. Feature flag configurations MUST be version-controlled and auditable. Flag lifecycle MUST be managed so temporary flags are removed after rollout completes. Critical paths MUST support immediate disablement without requiring a full deployment.

Rationale

Risk Description

Risk

Releases without feature flags force rollbacks for every production issue, increasing MTTR.

Risk

Orphaned feature flags create technical debt and unpredictable code paths.

Requirements

  • Risky or customer-visible feature rollouts MUST use feature flags with defined targeting and kill-switch capability.

  • Feature flag configurations MUST be version-controlled and auditable.

  • Flag lifecycle MUST be managed so temporary flags are removed after rollout completes.

  • Critical paths MUST support immediate disablement without requiring a full deployment.

Implementation Guidance

  1. Document the requirement in a version-controlled policy, ADR, or standard.

  2. Assign ownership and establish a review cadence (e.g., quarterly).

  3. Implement the required configuration as code in Terraform or equivalent IaC.

Maturity Levels

Level Name Criteria

L1

Ad hoc – control not consistently applied

* Die Anforderung ist nicht einheitlich umgesetzt; Nachweis existiert nur punktuell oder fehlt.

L2

Standardised – policy defined and communicated

* Eine dokumentierte Policy oder ein Standard beschreibt die Anforderung.

L3

Integrated – automated validation in CI/CD

* Terraform-Checks oder IaC-Gates prΓΌfen die Anforderung automatisch in CI/CD.

L4

Auditable – metrics and exceptions tracked

* Abdeckung, Ausnahmen und QualitΓ€tsmetriken werden quartalsweise berichtet.

L5

Optimised – continuous improvement based on data

* Die EffektivitΓ€t wird kontinuierlich gemessen und automatisch optimiert.

Checks

waf-ops-120.config.feature-flag-policy

Engine: config | Provider: any | Automated: No

Feature flag policy must exist

Feature flag policy must exist

Scope: file β€” docs/devops/feature-flag-policy.md

Assertions: * exists attribute_exists β€” Feature flag policy must define kill-switch and lifecycle.

Remediation: Feature flag policy must exist

Compliant
# Example compliant with waf-ops-120.config.feature-flag-policy
Non-Compliant
# Example non-compliant with waf-ops-120.config.feature-flag-policy

waf-ops-120.tf.aws.appconfig-flags

Engine: terraform | Provider: aws | Automated: Yes

AWS AppConfig feature flags should be used

AWS AppConfig feature flags should be used

Scope: resource β€” aws_appconfig_extension_association, aws_appconfig_configuration_profile

Assertions: * name attribute_exists β€” AppConfig resources must exist for feature flags.

Remediation: AWS AppConfig feature flags should be used

Compliant
# Example compliant with waf-ops-120.tf.aws.appconfig-flags
Non-Compliant
# Example non-compliant with waf-ops-120.tf.aws.appconfig-flags

Evidence

  • Terraform configuration implementing the requirement.

  • Policy, ADR, or standard documenting the requirement.

  • Optional cloud console or API output confirming runtime state.