mirror of
https://github.com/prowler-cloud/prowler.git
synced 2025-12-18 21:07:48 +00:00
85 lines
3.2 KiB
Docker
85 lines
3.2 KiB
Docker
FROM python:3.12.11-slim-bookworm AS build
|
|
|
|
LABEL maintainer="https://github.com/prowler-cloud/prowler"
|
|
LABEL org.opencontainers.image.source="https://github.com/prowler-cloud/prowler"
|
|
|
|
ARG POWERSHELL_VERSION=7.5.0
|
|
ENV POWERSHELL_VERSION=${POWERSHELL_VERSION}
|
|
|
|
ARG TRIVY_VERSION=0.66.0
|
|
ENV TRIVY_VERSION=${TRIVY_VERSION}
|
|
|
|
# hadolint ignore=DL3008
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
wget libicu72 libunwind8 libssl3 libcurl4 ca-certificates apt-transport-https gnupg \
|
|
build-essential pkg-config libzstd-dev zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install PowerShell
|
|
RUN ARCH=$(uname -m) && \
|
|
if [ "$ARCH" = "x86_64" ]; then \
|
|
wget --progress=dot:giga https://github.com/PowerShell/PowerShell/releases/download/v${POWERSHELL_VERSION}/powershell-${POWERSHELL_VERSION}-linux-x64.tar.gz -O /tmp/powershell.tar.gz ; \
|
|
elif [ "$ARCH" = "aarch64" ]; then \
|
|
wget --progress=dot:giga https://github.com/PowerShell/PowerShell/releases/download/v${POWERSHELL_VERSION}/powershell-${POWERSHELL_VERSION}-linux-arm64.tar.gz -O /tmp/powershell.tar.gz ; \
|
|
else \
|
|
echo "Unsupported architecture: $ARCH" && exit 1 ; \
|
|
fi && \
|
|
mkdir -p /opt/microsoft/powershell/7 && \
|
|
tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7 && \
|
|
chmod +x /opt/microsoft/powershell/7/pwsh && \
|
|
ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh && \
|
|
rm /tmp/powershell.tar.gz
|
|
|
|
# Install Trivy for IaC scanning
|
|
RUN ARCH=$(uname -m) && \
|
|
if [ "$ARCH" = "x86_64" ]; then \
|
|
TRIVY_ARCH="Linux-64bit" ; \
|
|
elif [ "$ARCH" = "aarch64" ]; then \
|
|
TRIVY_ARCH="Linux-ARM64" ; \
|
|
else \
|
|
echo "Unsupported architecture for Trivy: $ARCH" && exit 1 ; \
|
|
fi && \
|
|
wget --progress=dot:giga "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_${TRIVY_ARCH}.tar.gz" -O /tmp/trivy.tar.gz && \
|
|
tar zxf /tmp/trivy.tar.gz -C /tmp && \
|
|
mv /tmp/trivy /usr/local/bin/trivy && \
|
|
chmod +x /usr/local/bin/trivy && \
|
|
rm /tmp/trivy.tar.gz && \
|
|
# Create trivy cache directory with proper permissions
|
|
mkdir -p /tmp/.cache/trivy && \
|
|
chmod 777 /tmp/.cache/trivy
|
|
|
|
# Add prowler user
|
|
RUN addgroup --gid 1000 prowler && \
|
|
adduser --uid 1000 --gid 1000 --disabled-password --gecos "" prowler
|
|
|
|
USER prowler
|
|
|
|
WORKDIR /home/prowler
|
|
|
|
# Copy necessary files
|
|
COPY prowler/ /home/prowler/prowler/
|
|
COPY dashboard/ /home/prowler/dashboard/
|
|
COPY pyproject.toml /home/prowler
|
|
COPY README.md /home/prowler/
|
|
COPY prowler/providers/m365/lib/powershell/m365_powershell.py /home/prowler/prowler/providers/m365/lib/powershell/m365_powershell.py
|
|
|
|
# Install Python dependencies
|
|
ENV HOME='/home/prowler'
|
|
ENV PATH="${HOME}/.local/bin:${PATH}"
|
|
#hadolint ignore=DL3013
|
|
RUN pip install --no-cache-dir --upgrade pip && \
|
|
pip install --no-cache-dir poetry
|
|
|
|
RUN poetry install --compile && \
|
|
rm -rf ~/.cache/pip
|
|
|
|
# Install PowerShell modules
|
|
RUN poetry run python prowler/providers/m365/lib/powershell/m365_powershell.py
|
|
|
|
# Remove deprecated dash dependencies
|
|
RUN pip uninstall dash-html-components -y && \
|
|
pip uninstall dash-core-components -y
|
|
|
|
USER prowler
|
|
ENTRYPOINT ["poetry", "run", "prowler"]
|