Skip to content

Commit 47590ac

Browse files
Pin GitHub Actions by SHA and Docker images by digest
Address OSSF Scorecard pinned-dependencies findings: Workflows: - Pin actions/checkout to v4.3.1 SHA - Pin docker/setup-buildx-action to v3.9.0 SHA - Pin azure/login to v2.3.0 SHA - Pin docker/metadata-action to v5.9.0 SHA - Pin docker/build-push-action to v5.4.0 SHA - Pin actions/github-script to v7.1.0 SHA - Add top-level permissions (contents: read) to docker-build-push.yml Docker: - Pin mcr.microsoft.com/azurelinux/base/python:3.12 by digest in both stages Scripts: - Replace curl-pipe-bash with download-then-run for Azure CLI install Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent e0cc422 commit 47590ac

4 files changed

Lines changed: 22 additions & 11 deletions

File tree

.github/workflows/docker-build-push.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ on:
1414
- 'development-*'
1515
workflow_dispatch:
1616

17+
permissions:
18+
contents: read
19+
1720
env:
1821
IMAGE_NAME: sap-automation-qa
1922

@@ -26,10 +29,10 @@ jobs:
2629

2730
steps:
2831
- name: Checkout repository
29-
uses: actions/checkout@v4
32+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
3033

3134
- name: Set up Docker Buildx
32-
uses: docker/setup-buildx-action@v3
35+
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0
3336

3437
- name: Check ACR configuration
3538
id: acr-check
@@ -47,7 +50,7 @@ jobs:
4750
4851
- name: Azure Login (MSI/OIDC)
4952
if: steps.acr-check.outputs.acr_configured == 'true'
50-
uses: azure/login@v2
53+
uses: azure/login@eec3c95657c1536435858eda1f3ff5437fee8474 # v2.3.0
5154
with:
5255
client-id: ${{ secrets.AZURE_CLIENT_ID }}
5356
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
@@ -60,7 +63,7 @@ jobs:
6063
6164
- name: Extract metadata for Docker
6265
id: meta
63-
uses: docker/metadata-action@v5
66+
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
6467
with:
6568
images: ${{ secrets.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}
6669
tags: |
@@ -71,7 +74,7 @@ jobs:
7174
7275
- name: Build Docker image (validation only)
7376
if: steps.acr-check.outputs.acr_configured == 'false'
74-
uses: docker/build-push-action@v5
77+
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
7578
with:
7679
context: .
7780
file: ./deploy/Dockerfile
@@ -91,7 +94,7 @@ jobs:
9194
9295
- name: Build and push Docker image to ACR
9396
if: steps.acr-check.outputs.acr_configured == 'true'
94-
uses: docker/build-push-action@v5
97+
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
9598
with:
9699
context: .
97100
file: ./deploy/Dockerfile

.github/workflows/traffic-stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
runs-on: ubuntu-latest
1919
steps:
2020
- name: Collect traffic stats
21-
uses: actions/github-script@v7
21+
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
2222
with:
2323
github-token: ${{ secrets.GITHUB_TOKEN }}
2424
script: |

deploy/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Licensed under the MIT License.
33

44
# Stage 1: Build stage — resolve and install deps for Python 3.12
5-
FROM mcr.microsoft.com/azurelinux/base/python:3.12 AS builder
5+
FROM mcr.microsoft.com/azurelinux/base/python:3.12@sha256:8300706a0e644a7e260b6a464a1ae3967181ee9057a4accceaaf0ecdedb1d4a2 AS builder
66
WORKDIR /build
77
RUN tdnf update -y && tdnf install -y \
88
gcc \
@@ -17,7 +17,7 @@ RUN python3 -m venv /opt/venv \
1717
&& pip install --no-cache-dir -r requirements.lock
1818

1919
# Stage 2: Startup stage
20-
FROM mcr.microsoft.com/azurelinux/base/python:3.12
20+
FROM mcr.microsoft.com/azurelinux/base/python:3.12@sha256:8300706a0e644a7e260b6a464a1ae3967181ee9057a4accceaaf0ecdedb1d4a2
2121

2222
RUN tdnf update -y && tdnf install -y \
2323
openssh-clients \

scripts/setup.sh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,17 @@ _setup_local_env() {
2828
if ! command_exists az; then
2929
log "INFO" "Azure CLI not found. Installing Azure CLI..."
3030
if [[ "${DISTRO_FAMILY:-}" == "debian" ]]; then
31-
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
31+
local az_install_script
32+
az_install_script="$(mktemp)"
33+
curl -sL https://aka.ms/InstallAzureCLIDeb -o "$az_install_script"
34+
sudo bash "$az_install_script"
35+
rm -f "$az_install_script"
3236
else
33-
curl -sL https://aka.ms/InstallAzureCli | bash
37+
local az_install_script
38+
az_install_script="$(mktemp)"
39+
curl -sL https://aka.ms/InstallAzureCli -o "$az_install_script"
40+
bash "$az_install_script"
41+
rm -f "$az_install_script"
3442
fi
3543
if command_exists az; then
3644
log "INFO" "Azure CLI installed successfully."

0 commit comments

Comments
 (0)