https://github.com/crowdstrike/fcs-action
CrowdStrike FCS CLI GitHub action
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.2%) to scientific vocabulary
Keywords from Contributors
Repository
CrowdStrike FCS CLI GitHub action
Basic Info
- Host: GitHub
- Owner: CrowdStrike
- License: unlicense
- Language: Python
- Default Branch: main
- Size: 84 KB
Statistics
- Stars: 5
- Watchers: 6
- Forks: 3
- Open Issues: 0
- Releases: 9
Metadata Files
README.md
FCS CLI GitHub Action
This GitHub Action allows you to run the CrowdStrike Falcon Cloud Security (FCS) CLI tool directly in your CI/CD pipeline. The action supports both Infrastructure as Code (IaC) scanning for misconfigurations and security vulnerabilities, as well as container image scanning for vulnerabilities and security issues.
Features
- IaC Scanning: Run FCS IaC scans on local files, directories, or Git repositories
- Image Scanning: Scan container images for vulnerabilities, malware, and security issues
- SBOM Generation: Generate Software Bill of Materials (SBOM) in CycloneDX format
- Customize scan parameters such as categories, platforms, severities, and filtering options
- Generate scan reports in various formats (JSON, SARIF, SBOM)
- Upload scan results to the CrowdStrike Falcon Console
- Flexible configuration options for tailoring scans to your needs
- Support for vulnerability-only and SBOM-only scanning modes
Prerequisites
Create a CrowdStrike API Client
[!NOTE] API clients are granted one or more API scopes. Scopes allow access to specific CrowdStrike APIs and describe the actions that an API client can perform. To create an API client, see API Clients and Keys.
Ensure the following API scopes are assigned to the client:
| Scope | Permission | |---------|-------------| | Infrastructure as Code | READ & WRITE | | Falcon Container CLI | READ & WRITE | | Falcon Container Image | READ & WRITE |
Create a GitHub Secret
This action relies on the environment variable FALCON_CLIENT_SECRET to authenticate with the CrowdStrike API.
Create a GitHub secret in your repository to store the CrowdStrike API Client secret created from the step above. For more information, see Creating secrets for a repository.
FCS Action Support for FCS CLI Versions
| FCS CLI Version | FCS Action Version |
| ------------------- | ---------------------- |
| >= 2.0.0 | >= 2.0.0 |
| >= 1.0.0 and < 2.0.0 | >= 1.1.0 and < 2.0.0 |
| < 1.0.0 | < 1.1.0 |
Usage
To use this action in your workflow, add the following step:
<!-- x-release-please-start-version -->
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: 'abcdefghijk123456789'
falcon_region: 'us-1'
path: './my-iac-directory'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Environment Variables
| Variable | Description | Required | Default | Example |
| -------- | ----------- | -------- | ------- | ------- |
| FALCON_CLIENT_SECRET | CrowdStrike API Client Secret | Yes | - | ${{ secrets.FALCON_CLIENT_SECRET }} |
Inputs
Core Configuration
| Input | Description | Required | Default | Example/Values |
| ----- | ----------- | -------- | ------- | -------------- |
| falcon_client_id | CrowdStrike API Client ID | Yes | - | ${{ vars.FALCON_CLIENT_ID }} |
| falcon_region | CrowdStrike API region | Yes | us-1| Allowed values:us-1us-2eu-1us-gov-1us-gov-2 |
| version | FCS CLI tool version to use | No | uses the latest | 2.0.2 |
| scan_type | Type of scan to perform | No | iac | Allowed values:iacimage |
Common Parameters
| Input | Description | Required | Default | Example/Values |
| ----- | ----------- | -------- | ------- | -------------- |
| output_path | Path to save scan results | No | ./ | ./scan-results |
| report_formats | Report output formats | No | json | Allowed values:IaC: json, csv, junit, sarif
Image: json, sarif, sbom-cylconedx |
| upload_results | Upload to Falcon Console | No | false | Allowed values:truefalse |
🛠️ IaC Scanning Parameters (Click to expand)
| Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `path` | Path to scan (file/dir/git repo) | No | - | `./dir``git::repo``file.tf` | | `config` | Path to configuration file | No | - | `./fcs-config.json` | | `policy_rule` | IaC scanning policy rule | No | `local` | **Allowed values**:localdefault-iac-alert-rule | | `timeout` | Scan timeout in seconds | No | `500` | `900` | | `disable_secrets_scan` | Disable secrets scanning | No | `false` | **Allowed values**:truefalse | | `project_owners` | Project owners to notify (max 5) | No | - | `john@example.com,jane@example.com` | #### Filtering & Categorization | Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `categories` | Include specified categories | No | - | See [Categories](#reference-categories) | | `exclude_categories` | Exclude specified categories | No | - | See [Categories](#reference-categories) | | `platforms` | Include specified platforms | No | - | See [Platforms](#reference-platforms) | | `exclude_platforms` | Exclude specified platforms | No | - | See [Platforms](#reference-platforms) | | `severities` | Include specified severities | No | - | **Allowed values**:criticalhighmediuminformational | | `exclude_severities` | Exclude specified severities | No | - | **Allowed values**:criticalhighmediuminformational | | `exclude_paths` | Exclude paths from scan | No | - | `./test/*,file.tf` | | `fail_on` | Exit codes for severity levels | No | critical=1,high=1,medium=1,informational=1 | `critical=5,high=10` |🐳 Image Scanning Parameters (Click to expand)
#### Basic Image Settings | Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `image` | Container image to scan | **Yes*** | - | `nginx:latest``quay.io/org/app:v1.0` | | `socket` | Custom container engine socket | No | - | `unix:///var/run/docker.sock` | | `platform` | Target platform (os/arch/variant) | No | `linux/amd64` | `linux/amd64``linux/arm64``windows/amd64` | | `temp_dir` | Custom temp directory | No | - | `/local/tmp` | #### Scan Mode Options | Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `vulnerability_only` | Scan vulnerabilities only | No | `false` | **Allowed values**:truefalse | | `sbom_only` | Generate SBOM only | No | `false` | **Allowed values**:truefalse | #### Vulnerability Filtering | Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `minimum_score` | Min CVSS score threshold | No | - | `0.0-10.0` | | `minimum_severity` | Min vulnerability severity | No | - | **Allowed values**:lowmediumhighcritical | | `minimum_exprt` | Min ExPRT rating | No | - | **Allowed values**:lowmediumhighcritical | | `exclude_vulnerabilities` | Exclude vulnerability IDs | No | - | `CVE-2023-1234,CVE-2023-5678` | | `vuln_fixable_only` | Exclude unfixable vulnerabilities | No | `false` | **Allowed values**:truefalse | #### Detection & Display Options | Input | Description | Required | Default | Example/Values | | ----- | ----------- | -------- | ------- | -------------- | | `minimum_detection_severity` | Min detection severity | No | - | **Allowed values**:lowmediumhighcritical | | `report_sort_by` | Sort report by criteria | No | - | `severity/asc``score/desc``vulnerability/asc` | | `show_full_description` | Show full vuln descriptions | No | `false` | **Allowed values**:truefalse | | `show_full_detection_details` | Show full detection details | No | `false` | **Allowed values**:truefalse | | `no_color` | Disable colored output | No | `false` | **Allowed values**:truefalse | > **Note**: *Required only when `scan_type` is `image`Reference Values
📋 Available Categories (Click to expand)
For use with `categories` and `exclude_categories` parameters: - **Access Control** - Authentication, authorization, and access management - **Availability** - High availability and disaster recovery configurations - **Backup** - Data backup and recovery configurations - **Best Practices** - General security and operational best practices - **Build Process** - CI/CD and build pipeline security - **Encryption** - Data encryption at rest and in transit - **Insecure Configurations** - Misconfigurations that create security risks - **Insecure Defaults** - Default settings that should be changed - **Networking and Firewall** - Network security and firewall rules - **Observability** - Logging, monitoring, and auditing - **Resource Management** - Resource allocation and management - **Secret Management** - Secrets, keys, and credential management - **Supply-Chain** - Supply chain security concerns - **Structure and Semantics** - Code structure and syntax issues✅ Supported Platforms (Click to expand)
For use with `platforms` and `exclude_platforms` parameters: - **Ansible** - Ansible playbooks and configurations - **AzureResourceManager** - Azure ARM templates - **CloudFormation** - AWS CloudFormation templates - **Crossplane** - Crossplane configurations - **DockerCompose** - Docker Compose files - **Dockerfile** - Docker container definitions - **GoogleDeploymentManager** - Google Cloud Deployment Manager - **Kubernetes** - Kubernetes manifests and configurations - **OpenAPI** - OpenAPI/Swagger specifications - **Pulumi** - Pulumi infrastructure code - **ServerlessFW** - Serverless Framework configurations - **Terraform** - Terraform infrastructure codeOutputs
| Output | Description |
| ------ | ----------- |
| exit-code | Exit code of the FCS CLI tool |
Examples
Basic scan of a local file
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-1'
path: './sample-file.tf'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Specifying severity levels
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-2'
path: './kubernetes'
severities: 'critical,high,medium'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Using the policy rule parameter
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-2'
path: './kubernetes'
policy_rule: 'default-iac-alert-rule'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Upload SARIF report to GitHub Code scanning on non-zero exit code
```yaml - name: Run FCS IaC Scan uses: crowdstrike/fcs-action@v2.0.0 id: fcs with: falconclientid: ${{ vars.FALCONCLIENTID }} falconregion: 'eu-1' path: './cloudformation' reportformats: 'sarif' outputpath: './scan-results' env: FALCONCLIENTSECRET: ${{ secrets.FALCONCLIENT_SECRET }}
- name: Upload SARIF report to GitHub Code scanning uses: github/codeql-action/upload-sarif@v3 if: steps.fcs.outputs.exit-code != 0 with: sarif_file: ./scan-results ``` <!-- x-release-please-end -->
Scan with exclusions and severity filtering
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-2'
path: './kubernetes'
exclude_paths: './test/*,./deprecated/*'
severities: 'high,medium'
fail_on: 'high=10,medium=70'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Image Scanning Examples
Basic container image scan
yaml
- name: Scan Container Image
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-1'
scan_type: image
image: nginx:latest
output_path: './image-scan-results/'
report_formats: json
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Vulnerability-only image scan with filtering
yaml
- name: Scan Image for Vulnerabilities Only
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-2'
scan_type: image
image: alpine:latest
vulnerability_only: true
minimum_severity: high
minimum_score: 7.0
vuln_fixable_only: true
report_formats: json,sarif
output_path: './vuln-results/'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Generate SBOM for container image
yaml
- name: Generate SBOM
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'eu-1'
scan_type: image
image: python:3.9-slim
sbom_only: true
report_formats: sbom-cylconedx
output_path: './sbom-results/'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Advanced image scan with comprehensive filtering
yaml
- name: Advanced Image Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-1'
scan_type: image
image: node:16-alpine
minimum_severity: medium
minimum_exprt: medium
exclude_vulnerabilities: 'CVE-2023-1234,CVE-2023-5678'
show_full_description: true
show_full_detection_details: true
report_sort_by: severity/desc
no_color: true
platform: linux/amd64
output_path: './detailed-scan-results/'
report_formats: json
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Upload image scan results to Falcon Console
yaml
- name: Scan and Upload to Falcon
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-1'
scan_type: image
image: myapp:latest
upload_results: true
minimum_severity: low
output_path: './upload-results/'
report_formats: json
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Multi-platform image scan
yaml
- name: Scan Multi-Platform Image
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-2'
scan_type: image
image: nginx:latest
platform: linux/arm64
minimum_detection_severity: medium
temp_dir: './custom-temp'
output_path: './multi-platform-results/'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
You can also use configuration files to customize the scan parameters. For more information, see the FCS CLI documentation
Run scan with configuration file
yaml
- name: Run FCS IaC Scan
uses: crowdstrike/fcs-action@v2.0.0
with:
falcon_client_id: ${{ vars.FALCON_CLIENT_ID }}
falcon_region: 'us-1'
config: './fcs-config.json'
env:
FALCON_CLIENT_SECRET: ${{ secrets.FALCON_CLIENT_SECRET }}
<!-- x-release-please-end -->
Example configuration file:
./fcs-config.json
json
{
"path": "./scan-dir",
"fail-on": [
"critical=1",
"high=1",
"medium=1",
"informational=1"
],
"output-path": "./results",
"report-formats": [
"json",
"sarif"
],
"timeout": 300
}
SARIF Output Transformation
When SARIF format reports are generated, the action automatically applies transformations to ensure compatibility with GitHub's SARIF 2.1.0 parsing requirements:
Transformations Applied
- Tool Information: Sets empty
informationUrifields tohttps://crowdstrike.com - Result Levels: Normalizes severity levels to standard SARIF values (
error,warning,note,none) - Result Types: Removes unsupported
typeproperties from results - Location Structure: Ensures every result has a standardized locations array with URI set to
"unknown"
Why These Transformations Are Needed
These transformations resolve common GitHub SARIF parsing issues by:
- Ensuring all required fields meet GitHub's validation requirements
- Standardizing location structures to prevent parsing errors
- Normalizing severity levels for consistent GitHub Code Scanning integration
The transformations are applied automatically when SARIF format is requested and do not affect the scan results' accuracy or completeness.
Support
This project is a community-driven, open source project designed to provide a simple way to run CrowdStrike Falcon Cloud Security (FCS) CLI in a GitHub Action.
While not a formal CrowdStrike product, this project is maintained by CrowdStrike and supported in partnership with the open source developer community.
For additional support, please see the SUPPORT file.
License
See LICENSE
Owner
- Name: CrowdStrike
- Login: CrowdStrike
- Kind: organization
- Email: github@crowdstrike.com
- Location: United States of America
- Website: https://www.crowdstrike.com
- Repositories: 183
- Profile: https://github.com/CrowdStrike
GitHub Events
Total
- Create event: 16
- Release event: 2
- Issues event: 5
- Watch event: 3
- Delete event: 15
- Issue comment event: 12
- Push event: 63
- Pull request review comment event: 13
- Pull request review event: 12
- Pull request event: 19
- Fork event: 1
Last Year
- Create event: 16
- Release event: 2
- Issues event: 5
- Watch event: 3
- Delete event: 15
- Issue comment event: 12
- Push event: 63
- Pull request review comment event: 13
- Pull request review event: 12
- Pull request event: 19
- Fork event: 1
Committers
Last synced: about 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Carlos Matos | c****s@c****m | 28 |
| github-actions[bot] | 4****] | 4 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: about 1 year ago
All Time
- Total issues: 2
- Total pull requests: 26
- Average time to close issues: about 1 month
- Average time to close pull requests: about 18 hours
- Total issue authors: 2
- Total pull request authors: 3
- Average comments per issue: 4.0
- Average comments per pull request: 0.35
- Merged pull requests: 25
- Bot issues: 0
- Bot pull requests: 4
Past Year
- Issues: 2
- Pull requests: 26
- Average time to close issues: about 1 month
- Average time to close pull requests: about 18 hours
- Issue authors: 2
- Pull request authors: 3
- Average comments per issue: 4.0
- Average comments per pull request: 0.35
- Merged pull requests: 25
- Bot issues: 0
- Bot pull requests: 4
Top Authors
Issue Authors
- cotton5parrot (1)
- joverman-collective (1)
- razorsk8jz (1)
- carlosmmatos (1)
Pull Request Authors
- carlosmmatos (33)
- github-actions[bot] (6)
- cotton5parrot (2)
- ryanjpayne (2)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v4 composite
- googleapis/release-please-action v4 composite
- ./ * composite
- actions/checkout v4 composite
- ./ * composite
- actions/checkout v4 composite