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
-
Document the requirement in a version-controlled policy, ADR, or standard.
-
Assign ownership and establish a review cadence (e.g., quarterly).
-
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
# Example compliant with waf-ops-120.config.feature-flag-policy
# 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
# Example compliant with waf-ops-120.tf.aws.appconfig-flags
# 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.
Related Controls
-
WAF-REL-120 == Regulatory Mapping
-
SRE Book (Google): Chapter 16 β Debugging
-
AWS Well-Architected Framework: OPS 8 β Improve processes
-
Azure Well-Architected Framework: Operational Excellence β Safe deployment practices