Security/Container/Cosign: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(10 intermediate revisions by the same user not shown)
Line 6: Line 6:
cosign version
cosign version
cosign --help
cosign --help
EXE
</syntaxhighlight>
==Cosign » Generate » Keys==
<syntaxhighlight lang="bash">
echo -n 'Password: ';read -s COSIGN_PASSWORD;export COSIGN_PASSWORD;echo
# Password: sadaqah!
cosign generate-key-pair
mkdir -p ${HOME}/.config/cosign
rsync -avz ./cosign.{key,pub} ${HOME}/.config/cosign/
    rm -rf ./cosign.{key,pub}
ls -lah  ${HOME}/.config/cosign/
</syntaxhighlight>
==Cosign » Sign & Push==
<syntaxhighlight lang="bash">
echo -n 'Password: ';read -s COSIGN_PASSWORD;export COSIGN_PASSWORD;echo
# Password: sadaqah!
cat << EXE | bash
DOCKER_IMAGE_TAG='1.27'
DOCKER_IMAGE_NAME='nginx'
DOCKER_QUERY_PATH='.[0].RepoDigests[0]'
DOCKER_IMAGE_REPO='harbor.chorke.org/academia'
DOCKER_IMAGE_PATH="${DOCKER_IMAGE_REPO}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}"
docker push ${DOCKER_IMAGE_PATH} 2>&1 | tail -n 1
# docker » image » extract digest » sign by digest » push signature
DOCKER_IMAGE_HASH="$(docker inspect ${DOCKER_IMAGE_PATH}|jq -r ${DOCKER_QUERY_PATH})"
cosign sign -a 'signed-by=info@chorke.org' -y --key ${HOME}/.config/cosign/cosign.key ${DOCKER_IMAGE_REPO}/${DOCKER_IMAGE_HASH} 2>&1 | tail -n 1
EXE
EXE
</syntaxhighlight>
</syntaxhighlight>
Line 34: Line 65:
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:alpine
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:alpine
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:1.27
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:1.27
</syntaxhighlight>
|-
|colspan='3'|
----
|-
|valign='top' colspan='3'|
<syntaxhighlight lang="bash">
docker inspect harbor.chorke.org/academia/nginx:1.27-alpine-slim|jq -r '.[0].RepoDigests[0]'
docker inspect harbor.chorke.org/academia/nginx:1.27-alpine-slim|jq -r '.[0].RepoDigests[ ]'
</syntaxhighlight>
</syntaxhighlight>


Line 45: Line 86:


|valign='top'|
|valign='top'|
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="bash">
</syntaxhighlight>
</syntaxhighlight>



Latest revision as of 00:24, 27 June 2025

cat <<'EXE'| sudo bash
wget -cq https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-linux-amd64 -P ${HOME}/Downloads
mv ${HOME}/Downloads/cosign-linux-amd64 /usr/local/bin/cosign
                               chmod +x /usr/local/bin/cosign
cosign version
cosign --help
EXE

Cosign » Generate » Keys

echo -n 'Password: ';read -s COSIGN_PASSWORD;export COSIGN_PASSWORD;echo
# Password: sadaqah!

cosign generate-key-pair
mkdir -p ${HOME}/.config/cosign
rsync -avz ./cosign.{key,pub} ${HOME}/.config/cosign/
    rm -rf ./cosign.{key,pub}
ls -lah  ${HOME}/.config/cosign/

Cosign » Sign & Push

echo -n 'Password: ';read -s COSIGN_PASSWORD;export COSIGN_PASSWORD;echo
# Password: sadaqah!

cat << EXE | bash
DOCKER_IMAGE_TAG='1.27'
DOCKER_IMAGE_NAME='nginx'
DOCKER_QUERY_PATH='.[0].RepoDigests[0]'
DOCKER_IMAGE_REPO='harbor.chorke.org/academia'
DOCKER_IMAGE_PATH="${DOCKER_IMAGE_REPO}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}"

docker push ${DOCKER_IMAGE_PATH} 2>&1 | tail -n 1
# docker » image » extract digest » sign by digest » push signature
DOCKER_IMAGE_HASH="$(docker inspect ${DOCKER_IMAGE_PATH}|jq -r ${DOCKER_QUERY_PATH})"
cosign sign -a 'signed-by=info@chorke.org' -y --key ${HOME}/.config/cosign/cosign.key ${DOCKER_IMAGE_REPO}/${DOCKER_IMAGE_HASH} 2>&1 | tail -n 1
EXE

Playground

cosign generate-key-pair
cosign version
cosign --help
cosign sign -y harbor.chorke.org/academia/nginx:1.27-alpine-slim
cosign sign -y harbor.chorke.org/academia/nginx:alpine
cosign sign -y harbor.chorke.org/academia/nginx:1.27

cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:1.27-alpine-slim
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:alpine
cosign sign -y --key cosign.key harbor.chorke.org/academia/nginx:1.27

docker inspect harbor.chorke.org/academia/nginx:1.27-alpine-slim|jq -r '.[0].RepoDigests[0]'
docker inspect harbor.chorke.org/academia/nginx:1.27-alpine-slim|jq -r '.[0].RepoDigests[ ]'

References