Block Egress Traffic
You can configure Harden-Runner to block traffic to remote endpoints that have not been explicitly authorized. The runtime CI/CD behavior is highly predictable as CI/CD jobs tend to do the same thing across everyone, we highly recommend you enable Block
mode on Harden-Runner.
Audit Suspicious Outgoing Network Calls
When you run Harden-Runner in Audit
mode, you can observe all outgoing network calls by looking for the network call icon under Operations
.
Access Recommended Block Policy
Harden-Runner recommends a network egress block policy based on the runtime insights is captures in CI/CD. You can view the recommended policy on at the bottom of the insights page.
After Harden-Runner is executed a few times for a workflow, you should checkout the insight page for workflow executions. If you see the same policy being recommended, it provides high confidence that Harden-Runner won't have any unintentional side effect when deployed in Block
mode.
Enable Block Mode
There are two ways to set a policy to enable block mode.
1. Add the policy to the workflow file
Update the Harden-Runner section in your GitHub Actions workflow files based on the recommended policy provided on the insights page. The following image describes a sample pull request for enabling Block
mode.
Once the workflow file has been updated, Harden-Runner will start blocking outbound requests to unauthorized endpoints. For the workflow jobs with unauthorized outbound network calls, Harden-Runner would add error annotations on the GitHub Actions workflow run page.
You can also see details about blocked network calls on the insights page for the workflow run.
2. Add the policy using the Policy Store
The Policy Store helps you manage Harden Runner policies without altering your workflow files.
To access it, visit this link: https://app.stepsecurity.io/github/your-org/actions/policies, and replace your-org
with your GitHub organization's name. Make sure you have the StepSecurity Actions Security GitHub App installed.
You can create a new policy using the easy-to-use interface. Copy and paste the allowed endpoints from the insights page into the policy, and set the egress-policy
to block
.
Link the policy to a job by using the policy attribute.
To let Harden Runner authenticate the job with the StepSecurity API and retrieve policy details, you must set the id-token: write
permission.
Now, the job will fetch the policy and apply it during the job run. If you need to modify the allowed endpoints or other policy attributes, you can do so in the Policy Store without updating the workflow file.
Support for wildcard domains
Wildcard domains are supported in block
mode, e.g. you can add *.data.mcr.microsoft.com:443
to the allowed list, and egress traffic will be allowed to eastus.data.mcr.microsoft.com:443
and westus.data.mcr.microsoft.com:443
.
Here is an example of how to use wildcard domains in the egress policy
name: Harden Runner
uses: step-security/harden-runner@v2
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
github.com:443
*.data.mcr.microsoft.com:443