Post

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
img-description
img-description

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.
img-description
img-description
img-description
img-description

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.

img-description
img-description
img-description
img-description

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:

img-description
img-description
img-description
img-description
img-description

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
img-description
img-description

Secret ellenőrzése

Artifact-ban, ha minden jól ment, meg is jelent egy txt exportunk, ezt így tudjuk leellenőrizni:

img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description
!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:
img-description
Ú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…)

This post is licensed under CC BY 4.0 by the author.