Post

Azure DevOps Services Library használata private KeyVault-al

Azure DevOps Services (ADOS)-ban ha szeretnénk az integrált szolgáltatásokat használni, akkor a private kapcsolat problémát okozhat. Többek között ilyen az Azure KeyVault és Library összekapcsolása is. Miért is jó használni ezt a párost? Egyrészt KeyVault-ban bizonságosan és egységesen kezelhetjük a jelszavainkat, illetve tanúsítványainkat, ADOS-ban, pedig a Library ad egy jól átlátható felületet a pipeline során történő felhasználáshoz. Egyszóval win-win, csak hát a private endpoint-ok… Mára alap elvárás, főleg a nagy cégek esetén, hogy igenis a kommunikáció Azure szolgáltatások között IS a lehető legzártabb legyen. 2 kattintással létrehozhatunk Azure KeyVault-ot, majd összekapcsolhatjuk azt az ADOS-al, azonban alapértelmezett beállításon a KeyVault mindenhonnan is elérhető. A következő pár lépésben egy köztes megoldást szeretnék bemutatni, mellyel a szükséges és elégséges irányelveket figyelembevéve még mindig kényelmesen használhatjuk az elérhető szolgáltatásokat.

Kizárólag Private Endpoint esetén a Library/KeyVault összekapcsolást sajnos nem használhatjuk, de ha engedélyezett az IP tartomány megadása esetén a kapcsolódás, akkor máris könnyebb lehet az életünk.

Probléma

Alapértelmezetten, amikor létrehozunk egy KeyVault-ot, az az internet bármely pontjáról elérhető. Ezt az ITSec nem annyira támogatja, így valamilyen módon ezt a fajta beállítást tiltani is szokták. Gyors és egyszerű megoldás, hogy Azure Policy-ban tiltják egyszerűen az all network beállítást, vagyis ezt:

img-description

Amint a másik 2 megoldást választjuk, máris hibát kapunk:

img-description

The specified Azure service connection needs to have “Get, List” secret management permissions on the selected key vault. Click “Authorize” to enable Azure Pipelines to set these permissions or manage secret permissions in the Azure portal.

Megoldás

A hibaüzenet teljesen félrevezető… Nem, nem a jogosultságoddal van a gond, hanem a hálózati eléréssel, de sajnos ezt ő nem tudja pontosan megmondani, hogy mi a gond, csak erre tippel…

Következő lépés, hogy meg kell mondanunk, hogy milyen Ip felöl érkezik a kérés. Sajnos a dokumentáció itt is kicsit félrevezető. Ezen a Link-en található meg. (Érdekes, hogy az Inbound rész alatt található meg)

ADOS organizáció létrehozásakor meghatároztad, hogy melyik adatközban legyen maga a szolgáltatás. Ha nem emlékeznél rá, itt találod:

img-description

Visszatérve, kell az IP tartomány a listából, esetemben West Europe (Western europe, tudom :D )

img-description

Meg is van az IP, ahonnan érkezik majd a kérés, következő, hogy a KeyVault elfogadja innen a kéréseket, amiket a KeyVault-on belül itt tudunk megadni:

img-description

A beállítás után várunk pár másodpercet és a következő összerendelésnél már engedi is:

img-description

Ezzel csak az ADOS éri el a KeyVault-ot! A Microsoft hosted agent vagy Self-hosted agent-nél még külön kell ezzel foglakozni. MS agent-el régebbi cikkemben már fogalalkoztam

Amennyiben valamit mégis elrontottunk, ilyesmi hibaüzenettel találkozhatunk:

img-description

Request was not allowed by NSP rules and the client address is not authorized and caller was ignored because bypass is set to None\r\nClient address: 13.74.236.22\r\nCaller: appid=***;oid=a75e78e3-2a41-4662-810c-6d7f7b399d87\r\nVault: Gudszentkvtest;location=westeurope. The specified Azure service connection needs to have Get, List secret management permissions on the selected key vault. To set these permissions, download the ProvisionKeyVaultPermissions.ps1 script from build/release logs and execute it, or set them from the Azure portal.” Uploading /home/vsts/work/1/ProvisionKeyVaultPermissions.ps1 as attachment.

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