Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add IaC sysdig alerts #725

Merged
merged 27 commits into from
Oct 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1696a1b
Update gitignore for terraform
jon-funk Oct 25, 2024
865cc23
hcl config for sysdig
jon-funk Oct 25, 2024
5b50846
workflow scripts
jon-funk Oct 25, 2024
350fda6
github action for sysdig alert deploy
jon-funk Oct 25, 2024
4c963fa
scopeless alert
jon-funk Oct 25, 2024
c16650c
test commit
jon-funk Oct 25, 2024
68e10e0
fix flag check
jon-funk Oct 25, 2024
d3abf10
update params
jon-funk Oct 25, 2024
0ad1300
add backend skips
jon-funk Oct 25, 2024
e06fccb
update workflow config
jon-funk Oct 25, 2024
4747edb
enable apply
jon-funk Oct 25, 2024
f4fa74c
disable aws sha check
jon-funk Oct 25, 2024
91e0726
skip checksum
jon-funk Oct 26, 2024
314427b
Add backend alerts
jon-funk Oct 28, 2024
b2140bb
Add frontend alerts
jon-funk Oct 28, 2024
fa04f32
dedicated environment channels
jon-funk Oct 28, 2024
e1f4243
Add database alerts
jon-funk Oct 28, 2024
7deba15
split out test and prod alerts
jon-funk Oct 28, 2024
56fdc23
tweak alert sensitivity
jon-funk Oct 28, 2024
278cc4a
Uniqueify alert names
jon-funk Oct 28, 2024
7017dda
Merge branch 'release/noble-sea-lemon' into CE-314
jon-funk Oct 28, 2024
ce476f2
Merge branch 'release/noble-sea-lemon' into CE-314
afwilcox Oct 29, 2024
3d42c67
tweak sysdig health score alert
jon-funk Oct 29, 2024
dab893a
enable main branch deploy check
jon-funk Oct 29, 2024
2645120
Merge branch 'CE-314' of https://github.com/bcgov/nr-compliance-enfor…
jon-funk Oct 29, 2024
cca778d
Merge branch 'release/noble-sea-lemon' into CE-314
afwilcox Oct 29, 2024
a44ea22
Merge branch 'release/noble-sea-lemon' into CE-314
afwilcox Oct 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/scripts/sysdig_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash
# Handles sysdig terraform validation and apply

set -e # failfast
# ENV:
# APPLY: determines if plan is applied, lease as false for dry-run

cd terraform || exit 1
terraform -v
terraform init \
-backend-config="bucket=${STATE_BACKEND_BUCKET}" \
-backend-config="key=${STATE_BACKEND_FILEPATH}" \
-backend-config="access_key=${STATE_BACKEND_ACCESS_KEY}" \
-backend-config="secret_key=${STATE_BACKEND_SECRET_KEY}" \
-backend-config="endpoint=${STATE_BACKEND_ENDPOINT}"

# validate and lint check
terraform validate
terraform plan

if [ "$APPLY" = "true" ]; then
echo "APPLY=true flag provided, attempting to apply changes"
# deploy
terraform apply -auto-approve
else
echo "Dry-run, skipping apply"
fi
34 changes: 34 additions & 0 deletions .github/scripts/sysdig_installed.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
# Fetches the sysdig team crd and checks at least 1 user is present in the config
# IMPORTANT NOTE: requires a serviceaccount with get/list on sysdig-team
# ENV:
# OC_NAMESPACE
# OC_SERVER
# OC_TOKEN
set -e # failfast
if [ -z "$OC_NAMESPACE" ]; then
echo "OC_NAMESPACE not set"
exit 1
fi
if [ -z "$OC_SERVER" ]; then
echo "OC_SERVER not set"
exit 1
fi
if [ -z "$OC_TOKEN" ]; then
echo "OC_TOKEN not set"
exit 1
fi

OC_TEMP_TOKEN=$(curl -k -X POST $OC_SERVER/api/v1/namespaces/$OC_NAMESPACE/serviceaccounts/pipeline/token --header "Authorization: Bearer $OC_TOKEN" -d '{"spec": {"expirationSeconds": 600}}' -H 'Content-Type: application/json; charset=utf-8' | jq -r '.status.token' )
oc login --token=$OC_TEMP_TOKEN --server=$OC_SERVER
oc project $OC_NAMESPACE # Safeguard!


sysdig_config=$(oc get sysdig-team -n $OC_NAMESPACE -ojson)
num_users=$(echo $sysdig_config | jq -r '.items[0].spec.team.users | length')
if [ $num_users -eq 0 ]; then
echo "No users found in sysdig-team"
exit 1
fi
echo "Found $num_users users in sysdig-team"
exit 0
64 changes: 64 additions & 0 deletions .github/workflows/deploy-sysdig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Deploy Sysdig Alerts

on:
push:
paths:
- "terraform/**"

concurrency:
# Do not interrupt previous workflows
# avoid state corruption from cancels
group: ${{ github.workflow }}
cancel-in-progress: false

jobs:
installed:
environment: tools
name: Check Sysdig Installed
runs-on: ubuntu-22.04
timeout-minutes: 1
steps:
- uses: actions/checkout@v4
- run: ./.github/scripts/sysdig_installed.sh
env:
OC_NAMESPACE: ${{ secrets.OC_NAMESPACE }}
OC_SERVER: ${{ secrets.OC_SERVER }}
OC_TOKEN: ${{ secrets.OC_TOKEN }}

validate:
environment: tools
needs: installed
name: Validate Sysdig Terraform
runs-on: ubuntu-22.04
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- name: Validate Sysdig Terraform
run: APPLY=false ./.github/scripts/sysdig_deploy.sh
env:
STATE_BACKEND_BUCKET: ${{ secrets.STATE_BACKEND_BUCKET }}
STATE_BACKEND_ACCESS_KEY: ${{ secrets.STATE_BACKEND_ACCESS_KEY }}
STATE_BACKEND_SECRET_KEY: ${{ secrets.STATE_BACKEND_SECRET_KEY }}
STATE_BACKEND_FILEPATH: ${{ secrets.STATE_BACKEND_FILEPATH }}
STATE_BACKEND_ENDPOINT: ${{ secrets.STATE_BACKEND_ENDPOINT }}
TF_VAR_sysdig_api_token: ${{ secrets.TF_VAR_SYSDIG_API_TOKEN }}
AWS_NO_SIGN_REQUEST: 1
deploy:
if: github.ref == 'refs/heads/main'
needs: validate
environment: tools
name: Deploy Sysdig Terraform
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Apply Sysdig Terraform
run: APPLY=true ./.github/scripts/sysdig_deploy.sh
env:
STATE_BACKEND_BUCKET: ${{ secrets.STATE_BACKEND_BUCKET }}
STATE_BACKEND_ACCESS_KEY: ${{ secrets.STATE_BACKEND_ACCESS_KEY }}
STATE_BACKEND_SECRET_KEY: ${{ secrets.STATE_BACKEND_SECRET_KEY }}
STATE_BACKEND_FILEPATH: ${{ secrets.STATE_BACKEND_FILEPATH }}
STATE_BACKEND_ENDPOINT: ${{ secrets.STATE_BACKEND_ENDPOINT }}
TF_VAR_sysdig_api_token: ${{ secrets.TF_VAR_SYSDIG_API_TOKEN }}
AWS_NO_SIGN_REQUEST: 1
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,23 @@ frontend/cypress/screenshots/allegation-details-edit.cy.ts/Complaint Edit Page s
frontend/cypress/screenshots/hwcr-details-edit.cy.ts/Complaint Edit Page spec - Edit View -- Navigate to the Complaint Edit page & check inputs (failed).png
frontend/cypress/screenshots/hwcr-details-edit.cy.ts/Complaint Edit Page spec - Edit View -- it has a map on screen with a marker at the correct location (failed).png
nr-compliance-enforcement.code-workspace

# Terraform
*.tfstate
*.tfstate.*
crash.log
crash.*.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json
.terraform/
.terraform.lock.hcl
**/.terraform/*
*.tfvars
*.tfvars.json
# Ignore transient lock info files created by terraform apply
.terraform.tfstate.lock.info
# Ignore CLI configuration files
.terraformrc
terraform.rc
Loading
Loading