Mitigation Strategy: Thoroughly Review and Customize values.yaml
-
Description:
- Download the
values.yaml
file from theairflow-helm/charts
repository or your local copy. - Carefully read through each section of the
values.yaml
, understanding the purpose of each configuration parameter provided by the chart. - Identify sections relevant to security, such as
securityContext
,ingress
,service
,rbac
, and component-specific settings offered by the chart. - Modify default values to align with your organization's security policies and production requirements, leveraging the configuration options exposed by the chart.
- Specifically disable example DAGs and connections using chart-provided settings like
defaultDagBag.includeExamples: false
anddefaultAirflowConnections: []
. - Document all changes made to
values.yaml
for future reference and auditing, ensuring you track customizations made to the chart's default configuration. - Test the deployment with the customized
values.yaml
in a non-production environment before applying to production to validate chart configuration changes.
-
List of Threats Mitigated:
- Exposure of Test/Example Configurations (Medium Severity): Default example DAGs and connections provided by the chart might contain vulnerabilities or insecure configurations not intended for production.
- Insecure Default Settings (High Severity): Default settings in the chart's
values.yaml
might prioritize ease of deployment over security, leading to vulnerabilities if defaults are used in production. - Misconfiguration Vulnerabilities (High Severity): Using default chart configurations without understanding them can lead to unintentional security gaps due to misconfiguration of chart parameters.
-
Impact:
- Exposure of Test/Example Configurations: High - Completely eliminates the risk by removing example configurations through chart settings.
- Insecure Default Settings: High - Significantly reduces risk by allowing users to enforce secure configurations using chart customization options.
- Misconfiguration Vulnerabilities: Medium - Reduces risk by prompting users to review and understand chart configurations, but relies on user diligence in customizing the chart.
-
Currently Implemented:
- The
airflow-helm/charts
project provides avalues.yaml
file with numerous configurable options. This is the fundamental mechanism for chart customization. - Default values are set in
values.yaml
within the chart, providing a starting point for configuration.
- The
-
Missing Implementation:
- The chart itself cannot enforce users to review and customize
values.yaml
. This is a user responsibility when deploying the chart. - Automated security checks or recommendations within the
values.yaml
are not provided by default by the chart.
- The chart itself cannot enforce users to review and customize
- Download the
Mitigation Strategy: Harden Container Security Contexts (via Chart Configuration)
-
Description:
- Within the
values.yaml
file provided by the chart, locate thesecurityContext
sections for each relevant component (e.g.,webserver.securityContext
,scheduler.securityContext
,workers.securityContext
,redis.securityContext
,postgresql.securityContext
). These sections are defined by the chart for user configuration. - For each component, set
runAsNonRoot: true
within the chart'ssecurityContext
settings to ensure containers run as a non-root user, leveraging the chart's configuration structure. - Set
readOnlyRootFilesystem: true
in the chart'ssecurityContext
to make the container's root filesystem read-only, limiting write access as configured by the chart. - Configure
allowPrivilegeEscalation: false
in the chart'ssecurityContext
to prevent processes from gaining more privileges than their parent process, using the chart's provided settings. - Use
capabilities.drop: ["ALL"]
within the chart'ssecurityContext
to drop all default Linux capabilities and then selectively add back only necessary capabilities usingcapabilities.add: [...]
if required, all configured through the chart. - Apply these
securityContext
settings consistently across all Airflow components using the chart's configuration options.
-
List of Threats Mitigated:
- Container Escape (High Severity): Running containers as root or with excessive capabilities (as potentially configured by default in the chart if not hardened) increases the risk of container escapes and host system compromise.
- Privilege Escalation (High Severity): Allowing privilege escalation within containers (which might be the default behavior if not explicitly disabled via chart configuration) can enable attackers to gain root privileges inside the container.
- Writable Root Filesystem Exploits (Medium Severity): A writable root filesystem (which might be the default if not configured otherwise in the chart) can be exploited to modify system binaries or configuration files within the container.
-
Impact:
- Container Escape: High - Significantly reduces the risk by limiting privileges and enforcing non-root execution through chart-provided settings.
- Privilege Escalation: High - Eliminates the risk of privilege escalation within the container by using chart configuration to disable it.
- Writable Root Filesystem Exploits: Medium - Reduces the impact of potential exploits by limiting write access to the root filesystem via chart settings.
-
Currently Implemented:
- The
airflow-helm/charts
providessecurityContext
sections invalues.yaml
for various components, explicitly designed to allow users to configure these settings via the chart. - Default
securityContext
settings might exist within the chart but are often basic and intended for user customization for hardening.
- The
-
Missing Implementation:
- The chart does not enforce specific
securityContext
settings. Users must actively configure these invalues.yaml
using the chart's provided structure. - Default
securityContext
settings within the chart could be more secure out-of-the-box, but this might impact compatibility or ease of initial setup for some users.
- The chart does not enforce specific
- Within the
Mitigation Strategy: Secure Ingress and Service Exposure (via Chart Configuration)
-
Description:
- Configure Ingress resources in
values.yaml
(underingress
section) as provided by the chart, instead of directly usingLoadBalancer
services for webserver exposure, leveraging the chart's ingress configuration. - Enable TLS termination at the Ingress controller using chart settings to enforce HTTPS for webserver access. Configure TLS certificates using Kubernetes Secrets or cert-manager as guided by the chart's documentation and configuration options.
- Implement authentication and authorization mechanisms at the Ingress level (e.g., OAuth2/OIDC, basic authentication) using annotations and configurations supported by the chart and your chosen Ingress controller to control access to the webserver.
- Consider deploying a Web Application Firewall (WAF) in front of the Ingress controller, integrating it with the Ingress configuration managed by the chart to protect against common web attacks (OWASP Top 10).
- For internal services like Redis and PostgreSQL, ensure their service types are configured within the chart's
values.yaml
to beClusterIP
and they are not exposed externally viaLoadBalancer
or NodePort, using the chart's service configuration options.
-
List of Threats Mitigated:
- Man-in-the-Middle Attacks (High Severity): Using HTTP instead of HTTPS (which might be the default if not configured in the chart) allows attackers to intercept and modify traffic.
- Unauthorized Webserver Access (High Severity): Exposing the webserver without authentication (which might be the default if not configured via the chart) allows anyone to access and potentially control Airflow.
- Web Application Attacks (High Severity): The webserver is vulnerable to common web attacks like SQL injection, XSS, and CSRF if not properly protected (and if the chart's default ingress configuration is not hardened).
- Exposure of Internal Services (High Severity): Exposing internal services like Redis or PostgreSQL externally (which could happen if chart service types are not correctly configured) creates direct attack vectors.
-
Impact:
- Man-in-the-Middle Attacks: High - Eliminates the risk by enforcing HTTPS through chart-provided ingress configuration.
- Unauthorized Webserver Access: High - Significantly reduces risk by implementing authentication using chart-configurable ingress settings.
- Web Application Attacks: Medium to High - WAF (if integrated with chart-managed ingress) can significantly reduce risk, but effectiveness depends on WAF configuration and attack sophistication.
- Exposure of Internal Services: High - Eliminates the risk by ensuring internal services are not externally accessible through correct chart service type configuration.
-
Currently Implemented:
- The
airflow-helm/charts
provides extensive configuration options for Ingress invalues.yaml
, designed for users to manage service exposure. - Options for enabling TLS, annotations for authentication, and service types are available within the chart's configuration structure.
- The
-
Missing Implementation:
- The chart does not enforce HTTPS or authentication by default. Users must configure these using the chart's provided options.
- WAF integration is not directly provided by the chart and needs to be implemented separately by users, although the chart provides ingress configuration points for such integration.
- Default service types for internal components within the chart might need to be explicitly reviewed and set to
ClusterIP
by users for security.
- Configure Ingress resources in
Mitigation Strategy: Strengthen Role-Based Access Control (RBAC) (via Chart Configuration)
-
Description:
- Review the default Kubernetes RBAC roles and role bindings created by the Helm chart (if any are created by default).
- Customize roles provided or configurable by the chart to grant only the minimum necessary permissions to each Airflow component (scheduler, workers, webserver), leveraging the chart's RBAC configuration options.
- Avoid granting cluster-admin roles to any Airflow components or service accounts, ensuring the chart's RBAC configuration does not inadvertently grant excessive permissions.
- Apply RBAC at the namespace level to isolate Airflow deployments and limit the scope of permissions, considering namespace-level RBAC configuration in conjunction with the chart's RBAC settings.
- If using Airflow's internal security features, configure Airflow RBAC in addition to Kubernetes RBAC for finer-grained access control within Airflow itself, complementing the Kubernetes RBAC managed by the chart.
-
List of Threats Mitigated:
- Privilege Escalation within Kubernetes (High Severity): Overly permissive RBAC roles (potentially configured by default in the chart if not reviewed) can allow compromised components to gain excessive privileges within the Kubernetes cluster.
- Unauthorized Actions within Kubernetes (High Severity): Insufficiently restricted RBAC (as configured by the chart) can allow components to perform actions they are not supposed to, potentially impacting other parts of the cluster.
- Lateral Movement within Kubernetes (Medium Severity): Broad RBAC permissions (configured via the chart) can facilitate lateral movement if a component is compromised.
-
Impact:
- Privilege Escalation within Kubernetes: High - Significantly reduces risk by limiting component privileges through chart-managed RBAC configuration.
- Unauthorized Actions within Kubernetes: High - Prevents unauthorized actions by enforcing least privilege via chart RBAC settings.
- Lateral Movement within Kubernetes: Medium - Reduces risk by limiting the scope of potential compromise within Kubernetes through chart RBAC configuration.
-
Currently Implemented:
- The
airflow-helm/charts
enables Kubernetes RBAC by default and provides configuration options for RBAC. - It creates default service accounts and potentially some basic roles and role bindings as part of the chart deployment.
- The
-
Missing Implementation:
- The default roles and role bindings created by the chart might be overly permissive or not finely tuned for production security.
- Users are responsible for reviewing and customizing RBAC roles and bindings using the chart's configuration to enforce least privilege.
- The chart might not provide extensive guidance or examples for highly restrictive RBAC configurations beyond basic enablement.
Mitigation Strategy: Secure Secrets Management (via Chart Integration)
-
Description:
- Avoid storing sensitive information directly in
values.yaml
or Kubernetes Secrets as plain text, even if the chart allows it as a basic option. - Integrate with external secret management solutions like HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, or Kubernetes Secrets Store CSI driver, leveraging any integration points or configuration options provided by the chart for external secret management.
- Configure Airflow connections and variables to retrieve secrets from these external secret managers instead of hardcoding them or relying on basic Kubernetes Secrets, utilizing chart features or extension mechanisms for external secret retrieval.
- Use Kubernetes Secrets only for storing encrypted secrets, ideally managed and injected by a secret management solution integrated with the chart deployment.
- Ensure proper access control and auditing for the secret management system, independent of the chart itself, but ensuring the chart's secret integration respects these controls.
-
List of Threats Mitigated:
- Exposure of Secrets in Configuration (High Severity): Storing secrets in
values.yaml
or unencrypted Kubernetes Secrets (even if the chart allows it) exposes them to anyone with access to these files or Kubernetes API. - Hardcoded Secrets in Code/Configuration (High Severity): Hardcoding secrets (which might be tempting if the chart doesn't strongly guide towards external secrets) makes them easily discoverable and difficult to manage and rotate.
- Secret Sprawl and Management Overhead (Medium Severity): Managing secrets across multiple configurations and deployments becomes complex without a centralized secret management system, which the chart should encourage integration with.
- Exposure of Secrets in Configuration (High Severity): Storing secrets in
-
Impact:
- Exposure of Secrets in Configuration: High - Eliminates the risk by removing secrets from chart configuration files and basic Kubernetes Secrets.
- Hardcoded Secrets in Code/Configuration: High - Eliminates hardcoded secrets by promoting centralized secret management integration with the chart.
- Secret Sprawl and Management Overhead: Medium - Reduces management overhead and improves secret lifecycle management by encouraging external secret management integration with the chart.
-
Currently Implemented:
- The
airflow-helm/charts
allows users to configure secrets using Kubernetes Secrets as a basic mechanism. - It might provide some configuration points or extension mechanisms for integrating with external secret management solutions, but direct, built-in integration might be limited.
- The
-
Missing Implementation:
- Deep integration with specific secret management solutions is often not built directly into the chart. Users typically need to configure this integration themselves, potentially requiring custom init containers or sidecar containers alongside the chart deployment.
- The chart could provide more comprehensive documentation, examples, or even built-in helpers for integrating with popular secret management solutions to guide users towards secure secret handling.
- Avoid storing sensitive information directly in
Mitigation Strategy: Regularly Update Chart and Dependencies
-
Description:
- Establish a process for regularly checking for updates to the
airflow-helm/charts
chart itself and its dependencies (container images specified within the chart). - Subscribe to security advisories for Airflow, Kubernetes, and related components that are relevant to the chart and its dependencies.
- Use tools to scan container images referenced by the chart for vulnerabilities (e.g., Trivy, Clair) and remediate identified vulnerabilities promptly by updating the chart or its image references.
- Update the Helm chart and container images to the latest patched versions as soon as security updates are released for the chart or its components.
- Test updates in a non-production environment before deploying to production, ensuring chart updates are validated.
-
List of Threats Mitigated:
- Vulnerability Exploitation (High Severity): Outdated charts and container images (as defined in the chart) may contain known vulnerabilities that attackers can exploit.
- Zero-Day Exploits (High Severity): While chart updates cannot prevent zero-day exploits, timely patching reduces the window of vulnerability after a public disclosure for vulnerabilities in the chart or its dependencies.
- Compliance Violations (Medium Severity): Using outdated software from the chart can lead to compliance violations with security standards and regulations.
-
Impact:
- Vulnerability Exploitation: High - Significantly reduces risk by patching known vulnerabilities in the chart and its dependencies.
- Zero-Day Exploits: Medium - Reduces the window of vulnerability and overall risk related to the chart and its components.
- Compliance Violations: High - Helps maintain compliance with security standards by keeping the chart and its dependencies up-to-date.
-
Currently Implemented:
- The
airflow-helm/charts
project is actively maintained and updated, providing newer chart versions. - The chart itself does not automatically update deployments; users are responsible for applying chart updates.
- The
-
Missing Implementation:
- Automated chart and image updates are not provided as a feature of the chart itself. Users need to implement their own update processes for the chart.
- Vulnerability scanning and reporting for images referenced by the chart are not integrated into the chart. Users need to implement these separately for the chart's images.
- Establish a process for regularly checking for updates to the
Mitigation Strategy: Disable Unnecessary Components and Features (via Chart Configuration)
-
Description:
- Review the components enabled by default in the
values.yaml
provided by the chart (e.g., Flower, StatsD exporter, example DAGs). - Disable components and features that are not required for your specific Airflow use case by setting their
enabled
flags tofalse
invalues.yaml
, utilizing the chart's component enablement configuration. - For example, disable Flower if not used for monitoring (
flower.enabled: false
in chart values), disable StatsD exporter if not needed for metrics (statsd.enabled: false
in chart values), and disable example DAGs (defaultDagBag.includeExamples: false
in chart values). - Regularly review enabled components and features defined in the chart's configuration and disable any that become unnecessary over time to minimize the deployed footprint of the chart.
-
List of Threats Mitigated:
- Reduced Attack Surface (Medium Severity): Disabling unnecessary components provided by the chart reduces the overall attack surface by eliminating potential entry points for attackers associated with those components.
- Resource Consumption (Low Severity): Disabling components from the chart reduces resource consumption and improves efficiency of the deployed Airflow instance.
- Complexity and Management Overhead (Low Severity): Simplifying the deployment by disabling unnecessary chart components reduces complexity and management overhead.
-
Impact:
- Reduced Attack Surface: Medium - Reduces the attack surface by disabling chart components, but the impact depends on the security posture of the disabled components themselves.
- Resource Consumption: Low - Minor impact on resource consumption by disabling chart components.
- Complexity and Management Overhead: Low - Minor impact on complexity and management by simplifying the chart deployment.
-
Currently Implemented:
- The
airflow-helm/charts
providesenabled
flags invalues.yaml
for various optional components, allowing users to control component enablement via chart configuration. - Some components within the chart might be enabled by default, while others are disabled, based on the chart's default configuration.
- The
-
Missing Implementation:
- The chart does not automatically determine which components are necessary for a specific use case. Users must manually review and disable unnecessary components using the chart's configuration options.
- Default component enablement in the chart could be more minimal out-of-the-box, requiring users to explicitly enable components they need, promoting a more secure-by-default approach.
- Review the components enabled by default in the
Mitigation Strategy: Verify Chart Integrity and Source
-
Description:
- Download the
airflow-helm/charts
chart from the official and trusted repository:https://github.com/airflow-helm/charts
, ensuring you are using the intended source for the chart. - Verify the chart's source and authenticity by checking the repository's commit history, maintainer reputation, and community feedback to assess the trustworthiness of the chart source.
- If available, verify the chart's signature or checksum provided by the maintainers to ensure it has not been tampered with since it was published by the official source.
- Consider hosting a private Helm chart repository to manage and control the charts used in your organization, allowing for internal review and approval processes for charts before deployment, adding a layer of control over chart sources.
- Regularly audit the sources of Helm charts used in your deployments to prevent supply chain attacks related to compromised or malicious charts.
-
List of Threats Mitigated:
- Supply Chain Attacks (High Severity): Using compromised or malicious Helm charts can introduce vulnerabilities or backdoors into your Airflow deployment, originating from the chart itself.
- Chart Tampering (High Severity): Using modified charts can lead to unexpected behavior, security vulnerabilities, or malicious actions introduced through chart modifications.
- Untrusted Chart Sources (Medium Severity): Downloading charts from untrusted sources increases the risk of using malicious or vulnerable charts, impacting the security of the chart deployment.
-
Impact:
- Supply Chain Attacks: High - Significantly reduces the risk by ensuring chart integrity and using trusted sources for the chart.
- Chart Tampering: High - Prevents the use of tampered charts by verifying chart integrity.
- Untrusted Chart Sources: Medium - Reduces risk by promoting the use of trusted sources for obtaining the chart.
-
Currently Implemented:
- The
airflow-helm/charts
project is hosted on GitHub, providing a publicly accessible and version-controlled source for the chart. - The project relies on GitHub's security features and community review for source integrity of the chart.
- The
-
Missing Implementation:
- The chart itself does not provide built-in mechanisms for verifying its integrity or source. Users must rely on external verification methods for the chart file.
- Chart signing or checksum verification is not consistently implemented or documented for all chart versions, limiting readily available integrity verification methods for the chart.
- Integration with private Helm chart repositories is not directly provided by the chart itself but is a user-level configuration for managing chart sources.
- Download the