Repository
aws-eks-protection
Automatically deploy Falcon Sensor against EKS Clusters in AWS
- Guide
- Description
- Deployment Guide
- Complete setup instructions, prerequisites, and deployment options for new installations
- Existing Cluster Guide
- Manual deployment instructions for protecting existing EKS clusters
- Customization Guide
- Advanced configuration options for modifying Falcon deployment manifests and scripts
Specs
- GuideDescription
- Deployment GuideComplete setup instructions, prerequisites, and deployment options for new installations
- Existing Cluster GuideManual deployment instructions for protecting existing EKS clusters
- Customization GuideAdvanced configuration options for modifying Falcon deployment manifests and scripts
- Deployment ConfigurationDeployment Configuration
- RegionsList\<String>
- OrganizationIdString
- PermissionsBoundaryString
- Network ConfigurationNetwork Configuration
- VpcCidrString
- Falcon API CredentialsFalcon API Credentials
- FalconClientIdString
- FalconClientSecretString
- Falcon Operator OptionsFalcon Operator Options
- KubectlVersionString
- Resource NamesResource Names
- ResourcePrefixString
- ResourceSuffixString
README


CrowdStrike Falcon EKS Protection
An automated solution for deploying CrowdStrike Falcon Operator, Sensor, KAC and ImageAnalyzer to EKS clusters across your AWS Organization using event-driven architecture.
Demo
Usage Guides
| Guide | Description |
|---|---|
| Deployment Guide | Complete setup instructions, prerequisites, and deployment options for new installations |
| Existing Cluster Guide | Manual deployment instructions for protecting existing EKS clusters |
| Customization Guide | Advanced configuration options for modifying Falcon deployment manifests and scripts |
✨ Features
- 🚀 Event-Driven Automation: Automatically installs Falcon components when EKS clusters are created
- 🎯 Intelligent Sensor Selection: Auto-detects cluster type and deploys appropriate sensors
- 🔒 Secure: API credentials stored in AWS Secrets Manager
- 📊 Observable: Complete CloudWatch logging with structured output
- 🌐 Self-Contained Infrastructure: Creates own VPC and networking
- 🏢 Organization Support: Deploy across AWS Organizations or single accounts
⚙️ How It Works
1. Infrastructure Setup
- Self-Contained: ECS Task runs in a dedicated VPC, subnets, NAT Gateway, and security groups
- Container Image: Uses public
amazon/aws-cli:2.15.30image- pre-installed tools: aws-cli
- installs dependencies and pulls latest scripts from GitHub at runtime
2. Script Details
- Event Handler: Retrieves event data and configures ECS Task environment with required variables such as Cluster name, AWS Account ID, AWS Region
- Setup Script: Adds the ECS Task ARN to the EKS Cluster Access entries and the ECS Task VPC NAT IP address to the inbound CIDR list
- Deploy Script: Determines sensor type and apply Falcon Operator and Falcon Deployment Components using kubectl
- Falcon Deployment: YAML manifest template with dynamic parameter substitution stored in Parameter Store
3. Enhanced Event-Driven Architecture
- EventBridge Rule: Triggers when EKS clusters are created
- Centralized Custom EventBus: EventBridge Rules across the AWS Organization target this to allow for a single, centralized ECS Cluster.
- ECS Fargate Task: Invoked via EventBridge rule to run EKS Protection Scripts
4. Intelligent Sensor Deployment
- Auto Mode: Set
SensorType=autoto automatically select appropriate sensors based on cluster type- Fargate-only clusters → Falcon Container sensor
- Node-based clusters → Falcon Node sensor
- Hybrid clusters → Falcon Node sensor & Falcon Container sensor
- Manual Override: Set
SensorTypetonode,containerorbothto force a sensor type and bypass cluster type detection
Container Sensor Injection Behavior
- Container sensor injection disabled by default
falcon-sidecar-injectorpods may run but only inject the container sensor if Fargate pods are labeled.- This prevents duplicative sensors when running hybrid clusters (EC2 and Fargate) and allows both
DEPLOY_FALCON_NODE_SENSOR = trueandDEPLOY_FALCON_CONTAINER = true.
NOTE: Use the following label to inject Falcon Container to your pods
falcon.crowdstrike.com/inject: "true"
📊 Event-Driven Architecture
EKS Cluster Creation → EventBridge → Centralized EventBus → ECS Fargate Task
↓ ↓
Get cluster name, amazon/aws-cli:2.15.30
region, account Id (in private VPC)
↓
Secrets Manager
(Falcon API credentials)
↓
GitHub Repository
(curl latest scripts)
↓
Parameter Store
(Falcon Deployment manifest)
↓
Apply Falcon Operator Deployment
(with auto-detection)
📋 CloudFormation Parameters
The following table describes all parameters available when deploying the CloudFormation template:
| Parameter | Type | Default | Description | Allowed Values |
|---|---|---|---|---|
| Deployment Configuration | ||||
Scope |
String | organization |
Whether to deploy across the organization or locally to the current AWS account | organization, local account |
Regions |
List\<String> | (empty) | Which regions to deploy EventBridge rules | |
OUs |
List\<String> | (empty) | Which OUs to onboard if Scope = organization. If onboarding the entire organization, use the root OU (r-**) | |
OrganizationId |
String | (empty) | Your AWS Organization Id if Scope = organization | |
DelegatedAdmin |
String | false |
Indicates whether this is a Delegated Administrator account | true, false |
PermissionsBoundary |
String | (empty) | The name of the policy used to set the permissions boundary for IAM roles | |
| Network Configuration | ||||
VpcCidr |
String | 10.0.0.0/22 |
CIDR block for the VPC | |
| Falcon API Credentials | ||||
FalconClientId |
String | (required) | CrowdStrike Falcon Client ID | |
FalconClientSecret |
String | (required) | CrowdStrike Falcon Client Secret | |
FalconCloud |
String | (required) | CrowdStrike Falcon Cloud | us-1, us-2, eu-1, us-gov-1, us-gov-2 |
| Falcon Operator Options | ||||
DeployFalconAdmission |
String | true |
Deploy Falcon Kubernetes Admission Controller | true, false |
DeployFalconImageAnalyzer |
String | true |
Deploy Falcon Image Analyzer (requires additional API permissions) | true, false |
Backend |
String | kernel |
Backend for Daemonset (node) sensor | kernel, bpf |
FalconSensorType |
String | auto |
Which Falcon Sensor to deploy. auto will determine sensor based on cluster type (Recommended) | auto, both, node, container |
KubectlVersion |
String | 1.33.0 |
Version of kubectl to install | |
| Resource Names | ||||
ResourcePrefix |
String | crowdstrike-eks-protection |
The prefix to be added to all resource names | |
ResourceSuffix |
String | (empty) | The suffix to be added to all resource names |
Parameter Notes
- Falcon API Credentials: All three Falcon parameters (
FalconClientId,FalconClientSecret,FalconCloud) are required for deployment - Organization Deployment: When
Scopeis set toorganization, you must also provideOrganizationIdandOUs - Sensor Type Auto-Detection: When
FalconSensorTypeis set toauto, the system automatically selects the appropriate sensor based on cluster configuration - kubectl Version Compatibility: kubectl version 1.33.0 is compatible with Kubernetes versions 1.31-1.34. Ensure kubectl version compatibility with your target Kubernetes cluster versions. Typically the kubectl version should be within 1 minor and 1 major version of your kubernetes cluster version.
- Secure Parameters:
FalconClientIdandFalconClientSecretare marked asNoEchoand will be stored securely in AWS Secrets Manager
📄 Support and License
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
This is a community-driven, open source project. While it is not an official CrowdStroke product, it is actively maintained by CrowdStrike and supported in collaboration with the open source developer community.
For more information, please see our SUPPORT file.
