Skip to content

Commit dfa95d6

Browse files
Ti8m-BigAAdrianAulbach
authored andcommitted
fix(owasp):
- fixes owasp cache - put unit tests after owasp dependency check to use cached build from there and cache override specify owasp dependency check cache key - change secret with role arn fix: add regex check for AWS_DEPLOYMENT_ROLE_ARN
1 parent 04419f4 commit dfa95d6

4 files changed

Lines changed: 79 additions & 30 deletions

File tree

.github/workflows/backend_build_push_image.yml

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,30 @@ on:
3030
value: ${{ jobs.build-push-image.outputs.image }}
3131

3232
jobs:
33+
validate-secret-values:
34+
runs-on: ubuntu-latest
35+
environment: ${{ inputs.environment }}
36+
steps:
37+
- name: Validate secret values
38+
env:
39+
AWS_DEPLOYMENT_ROLE_ARN: ${{ secrets.AWS_DEPLOYMENT_ROLE_ARN }}
40+
AWS_OIDC_ROLE_ARN: ${{ secrets.AWS_OIDC_ROLE_ARN }}
41+
run: |
42+
echo "Validating secret values for environment ${{ inputs.environment }}"
43+
AWS_ROLE_PATTERN='^arn:aws:iam::[0-9]{12}:role\/[A-Za-z0-9+=,.@_-]+$'
44+
echo "Roles should match pattern: $AWS_ROLE_PATTERN"
45+
if [[ ! "$AWS_DEPLOYMENT_ROLE_ARN" =~ $AWS_ROLE_PATTERN ]]; then
46+
echo "Invalid AWS_DEPLOYMENT_ROLE_ARN, does not match pattern $AWS_ROLE_PATTERN"
47+
echo "Secret value length: ${#AWS_DEPLOYMENT_ROLE_ARN}"
48+
exit 1
49+
fi
50+
if [[ ! "$AWS_OIDC_ROLE_ARN" =~ $AWS_ROLE_PATTERN ]]; then
51+
echo "Invalid AWS_OIDC_ROLE_ARN, does not match pattern $AWS_ROLE_PATTERN"
52+
echo "Secret value length: ${#AWS_OIDC_ROLE_ARN}"
53+
exit 1
54+
fi
55+
echo "All secret values are valid"
56+
3357
build-push-image:
3458
name: "Build and push docker image to ECR ${{ inputs.environment }} - ${{ inputs.version }}"
3559
runs-on: ubuntu-latest
@@ -57,6 +81,7 @@ jobs:
5781
set -euo pipefail
5882
[[ "$VERSION" =~ ^[0-9]+(\.[0-9]+){2}([.-][0-9A-Za-z]+)*$ ]] || { echo "Invalid version"; exit 1; }
5983
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
84+
[[ "${{ secrets.AWS_DEPLOYMENT_ROLE_ARN }}" =~ ^arn:aws:iam::[0-9]{12}:role\/[A-Za-z0-9+=,.@_-]+$ ]] || { echo "Invalid AWS_DEPLOYMENT_ROLE_ARN, does not match pattern ^arn:aws:iam::\d+:role\/[\w-]+$"; exit 1; }
6085
- name: Checkout
6186
uses: actions/checkout@v6
6287
with:
@@ -85,17 +110,9 @@ jobs:
85110
- name: Configure AWS credentials
86111
uses: aws-actions/configure-aws-credentials@v6
87112
with:
88-
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
113+
role-to-assume: ${{ secrets.AWS_DEPLOYMENT_ROLE_ARN }}
89114
aws-region: ${{ env.AWS_REGION }}
90-
91-
# activate once blueprint is ready
92-
# - name: Assume deployment role
93-
# uses: aws-actions/configure-aws-credentials@v4
94-
# with:
95-
# role-to-assume: ${{ secrets.AWS_DEPLOYMENT_ROLE_ARN }}
96-
# aws-region: ${{ env.AWS_REGION }}
97-
# role-chaining: true
98-
# role-skip-session-tagging: true
115+
# role-skip-session-tagging: true
99116

100117
- name: Login to AWS ECR
101118
id: login-ecr

.github/workflows/backend_owasp_dependency_check.yml

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,44 +23,51 @@ jobs:
2323
java-version: '25'
2424
distribution: 'corretto'
2525

26-
- name: Get Date for OWASP Cache
27-
id: get-cache-date
28-
run: |
29-
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
30-
shell: bash
31-
32-
- name: check NIST key length
33-
env:
34-
NIST_OWASP_API_KEY: ${{ secrets.NIST_OWASP_API_KEY }}
35-
run: |
36-
echo "Key length: ${#NIST_OWASP_API_KEY}"
37-
3826
- name: Restore Maven Cache
3927
uses: actions/cache/restore@v5
4028
with:
4129
path: ~/.m2/repository
42-
# Using date in cache key as OWASP database may change, without the pom changing
43-
key: ${{ runner.os }}-owasp-${{ steps.get-cache-date.outputs.date }}-${{ hashFiles('**/pom.xml') }}
30+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
4431
restore-keys: |
45-
${{ runner.os }}-owasp-${{ steps.get-cache-date.outputs.date }}
46-
${{ runner.os }}-owasp-
32+
${{ runner.os }}-maven-
4733
4834
- name: Maven install
4935
run: mvn -B install -DskipTests -T 1C
5036

37+
- name: Get Date for OWASP Cache
38+
id: get-cache-date
39+
run: |
40+
echo "date=$(/bin/date -u "+%Y%m%d%H")" >> $GITHUB_OUTPUT
41+
shell: bash
42+
43+
- name: Restore Dependency-Check Cache
44+
uses: actions/cache/restore@v5
45+
with:
46+
path: ${{ github.workspace }}/.dependency-check
47+
key: ${{ runner.os }}-dependency-check-${{ steps.get-cache-date.outputs.date }}
48+
restore-keys: |
49+
${{ runner.os }}-dependency-check-
50+
5151
- name: Run OWASP Dependency Check
5252
run: |
5353
mvn org.owasp:dependency-check-maven:check \
54+
-DdataDirectory="${{ github.workspace }}/.dependency-check" \
5455
-DossindexAnalyzerEnabled=false \
5556
-DnvdApiKey=${{ secrets.NIST_OWASP_API_KEY }} \
56-
-DossindexAnalyzerEnabled=false \
5757
-DpnpmAuditAnalyzerEnabled=false \
5858
-DnodeAuditAnalyzerEnabled=false \
5959
-DyarnAuditAnalyzerEnabled=false
6060
61-
- name: Save Maven Cache
61+
- name: Save Dependency-Check Cache
6262
uses: actions/cache/save@v5
6363
if: always()
64+
with:
65+
path: ${{ github.workspace }}/.dependency-check
66+
key: ${{ runner.os }}-dependency-check-${{ steps.get-cache-date.outputs.date }}
67+
68+
- name: Save Maven Cache
69+
uses: actions/cache/save@v5
70+
if: success()
6471
with:
6572
path: ~/.m2/repository
66-
key: ${{ runner.os }}-owasp-${{ steps.get-cache-date.outputs.date }}-${{ hashFiles('**/pom.xml') }}
73+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}

.github/workflows/backend_workflow.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,30 @@ on:
7575
description: "GitHub App private key matching the deployment-app-id input, used for deployment authentication and creating PRs on the infrastructure repository"
7676
required: true
7777
jobs:
78+
validate-secret-values:
79+
runs-on: ubuntu-latest
80+
environment: ${{ inputs.environment }}
81+
steps:
82+
- name: Validate secret values
83+
env:
84+
AWS_DEPLOYMENT_ROLE_ARN: ${{ secrets.AWS_DEPLOYMENT_ROLE_ARN }}
85+
AWS_OIDC_ROLE_ARN: ${{ secrets.AWS_OIDC_ROLE_ARN }}
86+
run: |
87+
echo "Validating secret values for environment ${{ inputs.environment }}"
88+
AWS_ROLE_PATTERN='^arn:aws:iam::[0-9]{12}:role\/[A-Za-z0-9+=,.@_-]+$'
89+
echo "Roles should match pattern: $AWS_ROLE_PATTERN"
90+
if [[ ! "$AWS_DEPLOYMENT_ROLE_ARN" =~ $AWS_ROLE_PATTERN ]]; then
91+
echo "Invalid AWS_DEPLOYMENT_ROLE_ARN, does not match pattern $AWS_ROLE_PATTERN"
92+
echo "Secret value length: ${#AWS_DEPLOYMENT_ROLE_ARN}"
93+
exit 1
94+
fi
95+
if [[ ! "$AWS_OIDC_ROLE_ARN" =~ $AWS_ROLE_PATTERN ]]; then
96+
echo "Invalid AWS_OIDC_ROLE_ARN, does not match pattern $AWS_ROLE_PATTERN"
97+
echo "Secret value length: ${#AWS_OIDC_ROLE_ARN}"
98+
exit 1
99+
fi
100+
echo "All secret values are valid"
101+
78102
checkstyle:
79103
name: "."
80104
uses: ./.github/workflows/backend_checkstyle.yml
@@ -98,7 +122,7 @@ jobs:
98122
unit-test-sonarqube:
99123
name: "."
100124
uses: ./.github/workflows/backend_unit_test_sonarqube.yml
101-
needs: [ checkstyle, gitleaks ]
125+
needs: [ checkstyle, gitleaks, owasp-dependency-check ]
102126
secrets:
103127
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
104128

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
/.idea/
2+
/*.iml

0 commit comments

Comments
 (0)