Azure Key Vault használata Azure DevOps-ban
Napjainkra már kijelenthető, hogy alapelvárás a key vault használata, amikor valamilyen érzékeny információt szeretnénk felhasználni különböző területeken. Nincs ez másképp az Azure DevOps-ban sem, hiszen érzékeny adatok tömkelegét kell megadni 1-1 deploy során. Ebben a Postban összegyűjtöttem azt a pár lépést, amivel ezt el is érhetjük Azure DevOps-ban.
Előfeltételek
Környezet létrehozásához a következőkre van szükség:
- Service Principal (SP)
- Azure DevOps regisztráció
- Azure előfizetés amibe van pár $
- Ingyenes DevOps esetén, ha még MSDN se áll rendelkezésre, lehet igényelni ingyenes Parallel job-ot (legalul leírom, hogyan)
Azure DevOps projekt létrehozása
Hozzunk létre egy üres projektet, amelyben tudjuk majd futtatni a pipeline-t. http://dev.azure.com
Ezzel el is készült az üres projekt, most pedig hozzunk létre egy service connection-t, amely segítségével erőforrásokat kezelhetünk az előfizetésünkben.
Service connection létrehozása
Ezt már egy előző postban leírtam, hogy hogyan is kell létrehozni, mely itt található.
Key Vault létrehozása
A felületen is gyorsan összekattintható, de a Cli-ban gyorsabban megvagyunk, bár a jogosztás a felületen már gyorsabb :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
az login
#Ha több előfizetéshez van jogosultsága a felhasználónknak
az account list
az account set --subscription "Előfizetés_neve"
#----------------------------------------------------------
$RESOURCE_GROUP_NAME="keyvault_rg"
#Egyedi névre van szükség régió szinten
$KEYVAULT_NAME="gudszentvault2345"
# Resource Group létrehozása
az group create -l westeurope -n $RESOURCE_GROUP_NAME
# Key Vault létrehozása
az keyvault create --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP_NAME --location "westeurope"
# Secret létrehozása, hogy legyen mit kiolvasni
az keyvault secret set --vault-name $KEYVAULT_NAME --name "secretneve" --value "jelszo123"
Utána a felületen nyissuk meg a létrehozott Vault-ot és adjunk a service principal-nak hozzáférést.
Key Vault változó bekapcsolódása
Van már egy DevOps projektünk, van Key Vault-unk és SP, amivel van jogosultságunk hozzá. Most össze kell kapcsolni ezeket. Library-ba hozzuk létre egy variable group-ot.
Pipeline létrehozása
Mindössze ennyi beállítással már el is érhető a pipeline számára a tartalom, most pedig hozzuk is létre azt a pipeline-t:
Töröljünk ki mindent az automatikusan feltöltött file-ból, majd illesszük be a következőt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
trigger: none
pool:
vmImage: ubuntu-latest
#Libary-ben megadott group név kell ide:
variables:
- group: Land3_keyvault
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'
- task: CmdLine@2
inputs:
#KeyVaulton belüli név, amivel lehet azonosítani a secret-et
script: 'echo $(secretneve) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Cseréljük ki a változókat azokra az értékekre, amiket használtunk végül
Secret ellenőrzése
Artifact-ban, ha minden jól ment, meg is jelent egy txt exportunk, ezt így tudjuk leellenőrizni:
!Fontos, ha már nem kell, amit korábban létrehoztunk, akkor töröljük is azt ;)
Ingyenes Azure DevOps parallel
Amennyiben még nem használtuk ez a környezet, és ezt a hibát tapasztaljuk:
Úgy igényelni kell ezen a formon keresztül futtató környezetet: Link
Pár óra után engedélyezik és már mehet is a tesztelés.(Régen automatikus volt, de gondolom páran visszaéltek vele…)