Tárolórendszerképek aláírása a Notation és az Azure Key Vault használatával önaláírt tanúsítvány használatával
A tárolólemezképek aláírása olyan folyamat, amely biztosítja azok hitelességét és integritását. Ez úgy érhető el, hogy hozzáad egy digitális aláírást a tároló lemezképéhez, amely az üzembe helyezés során érvényesíthető. Az aláírás segít ellenőrizni, hogy a rendszerkép megbízható közzétevőtől származik-e, és nem lett-e módosítva. A Notation egy olyan nyílt forráskód ellátási lánc eszköz, amelyet a Közjegyzői Projekt fejlesztett ki, amely támogatja a tárolólemezképek és egyéb összetevők aláírását és ellenőrzését. Az Azure Key Vault (AKV) a Notation AKV beépülő modullal (azure-kv) használható aláírókulcsokkal rendelkező tanúsítványok tárolására szolgál a tárolólemezképek és egyéb összetevők aláírásához és ellenőrzéséhez. Az Azure Container Registry (ACR) lehetővé teszi, hogy aláírásokat csatoljon a tárolórendszerképekhez és más összetevőkhöz, valamint megtekintheti ezeket az aláírásokat.
Ebben az oktatóanyagban:
Előfeltételek
- Tárolólemezképek és -aláírások tárolására szolgáló Azure Container Registry létrehozása vagy használata
- Azure Key Vault létrehozása vagy használata tanúsítványok kezeléséhez
- Telepítse és konfigurálja a legújabb Azure CLI-t, vagy futtassa a parancsokat az Azure Cloud Shellben
Notation CLI és AKV beépülő modul telepítése
Telepítse a Notation 1.1.0-s verzióját Linux amd64-környezetben. Kövesse a Notation telepítési útmutatóját a csomag letöltéséhez más környezetekhez.
# Download, extract and install curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v1.1.0/notation_1.1.0_linux_amd64.tar.gz tar xvzf notation.tar.gz # Copy the Notation binary to the desired bin directory in your $PATH, for example cp ./notation /usr/local/bin
Telepítse a Notation Azure Key Vault 1.1.0-s beépülő modult
azure-kv
Linux amd64-környezetben.Feljegyzés
A Notation Azure Key Vault beépülő modul URL-címe és SHA256 ellenőrzőösszege a beépülő modul kiadási oldalán található.
notation plugin install --url https://github.com/Azure/notation-azure-kv/releases/download/v1.1.0/notation-azure-kv_1.1.0_linux_amd64.tar.gz --sha256sum 2fc959bf850275246b044203609202329d015005574fabbf3e6393345e49b884
Sorolja fel az elérhető beépülő modulokat, és győződjön meg arról, hogy a
azure-kv
verziójú1.1.0
beépülő modul szerepel a listában.notation plugin ls
Környezeti változók konfigurálása
Feljegyzés
Az oktatóanyag parancsainak egyszerű végrehajtásához adjon meg értékeket az Azure-erőforrások számára, hogy megfeleljenek a meglévő ACR- és AKV-erőforrásoknak.
Konfigurálja az AKV-erőforrásneveket.
# Name of the existing AKV used to store the signing keys AKV_NAME=myakv # Name of the certificate created in AKV CERT_NAME=wabbit-networks-io CERT_SUBJECT="CN=wabbit-networks.io,O=Notation,L=Seattle,ST=WA,C=US" CERT_PATH=./${CERT_NAME}.pem
Konfigurálja az ACR- és képerőforrás-neveket.
# Name of the existing registry example: myregistry.azurecr.io ACR_NAME=myregistry # Existing full domain of the ACR REGISTRY=$ACR_NAME.azurecr.io # Container name inside ACR where image will be stored REPO=net-monitor TAG=v1 IMAGE=$REGISTRY/${REPO}:$TAG # Source code directory containing Dockerfile to build IMAGE_SOURCE=https://github.com/wabbit-networks/net-monitor.git#main
Bejelentkezés az Azure CLI használatával
az login
Ha többet szeretne megtudni az Azure CLI-ről és arról, hogyan jelentkezhet be vele, olvassa el a Bejelentkezés az Azure CLI-vel című témakört.
Hozzáférési szabályzat hozzárendelése az AKV-ban (Azure CLI)
Önaláírt tanúsítvány létrehozásához és összetevők aláírásához a megfelelő hozzáférési szabályzat engedélyekkel rendelkező egyszerű felhasználóra van szükség. Ez az egyszerű rendszernév lehet felhasználónév, szolgáltatásnév vagy felügyelt identitás. Ennek az egyszerű felhasználónak legalább a következő engedélyekre van szüksége:
Create
tanúsítványokra vonatkozó engedélyekGet
tanúsítványokra vonatkozó engedélyekSign
kulcsokra vonatkozó engedélyek
Ebben az oktatóanyagban a hozzáférési szabályzat egy bejelentkezett Azure-felhasználóhoz van rendelve. Ha többet szeretne tudni a szabályzat egyszerűhöz való hozzárendeléséről, olvassa el a Hozzáférési szabályzat hozzárendelése című témakört.
Az AKV-erőforrást tartalmazó előfizetés beállítása
az account set --subscription <your_subscription_id>
A hozzáférési szabályzat beállítása az AKV-ban
USER_ID=$(az ad signed-in-user show --query id -o tsv)
az keyvault set-policy -n $AKV_NAME --certificate-permissions create get --key-permissions sign --object-id $USER_ID
Fontos
Ez a példa a tanúsítvány létrehozásához és egy tárolólemezkép aláírásához szükséges minimális engedélyeket mutatja be. A követelményektől függően előfordulhat, hogy további engedélyeket kell adnia.
Önaláírt tanúsítvány létrehozása az AKV-ban (Azure CLI)
Az alábbi lépések bemutatják, hogyan hozhat létre önaláírt tanúsítványt tesztelési célra.
Hozzon létre egy tanúsítványszabályzatfájlt.
A tanúsítványházirend-fájl alább ismertetett végrehajtása után létrehoz egy érvényes tanúsítványt, amely kompatibilis a Közjegyzői Projekt tanúsítványkövetelményével az AKV-ban. Ennek értéke
ekus
kódaláírás, de nem szükséges az összetevők aláírásához. A tulajdonos később megbízható identitásként lesz használva, amelyet a felhasználó az ellenőrzés során megbízik.cat <<EOF > ./my_policy.json { "issuerParameters": { "certificateTransparency": null, "name": "Self" }, "keyProperties": { "exportable": false, "keySize": 2048, "keyType": "RSA", "reuseKey": true }, "secretProperties": { "contentType": "application/x-pem-file" }, "x509CertificateProperties": { "ekus": [ "1.3.6.1.5.5.7.3.3" ], "keyUsage": [ "digitalSignature" ], "subject": "$CERT_SUBJECT", "validityInMonths": 12 } } EOF
Hozza létre a tanúsítványt.
az keyvault certificate create -n $CERT_NAME --vault-name $AKV_NAME -p @my_policy.json
Tárolólemezkép aláírása a Notation CLI és az AKV beépülő modullal
Hitelesítés az ACR-ben az egyéni Azure-identitás használatával.
az acr login --name $ACR_NAME
Fontos
Ha a Docker telepítve van a rendszeren, és használja az acr login
vagy docker login
hitelesíti az ACR-t, a rendszer már tárolja és elérhetővé teszi a hitelesítő adatait a jelöléshez. Ebben az esetben nem kell újra futtatnia notation login
az ACR-hitelesítéshez. A jelölések hitelesítési lehetőségeiről további információt az OCI-kompatibilis regisztrációs adatbázisokkal való hitelesítés című témakörben talál.
Új rendszerkép létrehozása és leküldése az ACR Tasks használatával. Mindig használja a kivonatoló értéket a rendszerkép aláíráshoz való azonosításához, mivel a címkék nem módosíthatók, és felülírhatók.
DIGEST=$(az acr build -r $ACR_NAME -t $REGISTRY/${REPO}:$TAG $IMAGE_SOURCE --no-logs --query "outputImages[0].digest" -o tsv) IMAGE=$REGISTRY/${REPO}@$DIGEST
Ebben az oktatóanyagban, ha a rendszerkép már elkészült, és a beállításjegyzékben van tárolva, a címke a rendszerkép azonosítójaként szolgál a kényelem érdekében.
IMAGE=$REGISTRY/${REPO}:$TAG
Kérje le az aláírókulcs kulcsazonosítóját. Az AKV-tanúsítványok több verzióval is rendelkezhetnek, az alábbi parancs a legújabb verzió kulcsazonosítóját kapja meg.
KEY_ID=$(az keyvault certificate show -n $CERT_NAME --vault-name $AKV_NAME --query 'kid' -o tsv)
Írja alá a tárolórendszerképet a CO Standard kiadás aláírási formátummal az aláírókulcs azonosítójával. Ha önaláírt tanúsítvánnyal szeretne bejelentkezni, be kell állítania a beépülő modul konfigurációs értékét
self_signed=true
.notation sign --signature-format cose --id $KEY_ID --plugin azure-kv --plugin-config self_signed=true $IMAGE
Az AKV-val való hitelesítéshez alapértelmezés szerint a következő hitelesítőadat-típusok lesznek kipróbálva, ha engedélyezve van, sorrendben:
- Környezeti hitelesítő adatok
- Számítási feladat identitásának hitelesítő adatai
- Felügyelt identitás hitelesítő adatai
- Azure CLI-hitelesítő adatok
Ha hitelesítő adattípust szeretne megadni, használjon egy további, úgynevezett beépülő modulkonfigurációt
credential_type
. Például explicit módon beállíthatjacredential_type
azazurecli
Azure CLI-hitelesítő adatok használatát, az alábbiak szerint:notation sign --signature-format cose --id $KEY_ID --plugin azure-kv --plugin-config self_signed=true --plugin-config credential_type=azurecli $IMAGE
Az alábbi táblázat a
credential_type
különböző hitelesítő adatok értékeit ismerteti.Hitelesítő adatok típusa Érték a következőhöz: credential_type
Környezeti hitelesítő adatok environment
Számítási feladat identitásának hitelesítő adatai workloadid
Felügyelt identitás hitelesítő adatai managedid
Azure CLI-hitelesítő adatok azurecli
Tekintse meg az aláírt képek és a társított aláírások grafikonját.
notation ls $IMAGE
Tárolólemezkép ellenőrzése a Notation parancssori felülettel
A tároló lemezképének ellenőrzéséhez adja hozzá a levéltanúsítványt aláíró főtanúsítványt a megbízhatósági tárolóhoz, és hozzon létre megbízhatósági szabályzatokat az ellenőrzéshez. Az oktatóanyagban használt önaláírt tanúsítvány esetében a főtanúsítvány maga az önaláírt tanúsítvány.
Nyilvános tanúsítvány letöltése.
az keyvault certificate download --name $CERT_NAME --vault-name $AKV_NAME --file $CERT_PATH
Adja hozzá a letöltött nyilvános tanúsítványt az elnevezett megbízhatósági tárolóhoz aláírás-ellenőrzés céljából.
STORE_TYPE="ca" STORE_NAME="wabbit-networks.io" notation cert add --type $STORE_TYPE --store $STORE_NAME $CERT_PATH
Listázhatja a megerősítendő tanúsítványt.
notation cert ls
Az ellenőrzés előtt konfigurálja a megbízhatósági szabályzatot.
A megbízhatósági szabályzatok lehetővé teszik a felhasználók számára, hogy finomhangolt ellenőrzési szabályzatokat adjanak meg. Az alábbi példa egy névvel ellátott
wabbit-networks-images
megbízhatósági szabályzatot konfigurál, amely az összes összetevőre$REGISTRY/$REPO
vonatkozik, és a névvel ellátott megbízhatósági tárolót$STORE_NAME
$STORE_TYPE
használja. Azt is feltételezi, hogy a felhasználó megbízik egy adott identitásban az X.509 tárgyával$CERT_SUBJECT
. További részletekért lásd : Megbízhatósági tároló és megbízhatósági szabályzat specifikációja.cat <<EOF > ./trustpolicy.json { "version": "1.0", "trustPolicies": [ { "name": "wabbit-networks-images", "registryScopes": [ "$REGISTRY/$REPO" ], "signatureVerification": { "level" : "strict" }, "trustStores": [ "$STORE_TYPE:$STORE_NAME" ], "trustedIdentities": [ "x509.subject: $CERT_SUBJECT" ] } ] } EOF
A
notation policy
korábban létrehozott JSON-fájlból importálhatja a megbízhatósági szabályzat konfigurációját.notation policy import ./trustpolicy.json notation policy show
Annak ellenőrzésére használható
notation verify
, hogy a tároló lemezképe nem módosult-e a létrehozási idő óta.notation verify $IMAGE
A rendszerkép megbízhatósági szabályzattal történő sikeres ellenőrzése után az ellenőrzött rendszerkép sha256-kivonata egy sikeres kimeneti üzenetben jelenik meg.
Következő lépések
Az aláírt rendszerképek ellenőrzése az Azure Kubernetes Service-fürtökben (előzetes verzió) és az Azure Ratify szolgáltatásban való üzembe helyezés előtt az aláírt rendszerképek ellenőrzésének és naplózásának megkezdéséhez az AKS-ben való üzembe helyezés előtt.