Delen via


Geheime variabelen instellen

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Geheime variabelen zijn versleutelde variabelen die u in pijplijnen kunt gebruiken zonder hun waarde bloot te leggen. Geheime variabelen kunnen worden gebruikt voor persoonlijke informatie, zoals wachtwoorden, id's en andere identificatiegegevens die u niet wilt weergeven in een pijplijn. Geheime variabelen worden in rust versleuteld met een 2048-bits RSA-sleutel en zijn beschikbaar op de agent voor taken en scripts die moeten worden gebruikt.

De aanbevolen manieren om geheime variabelen in te stellen, bevinden zich in de gebruikersinterface, in een variabelegroep en in een variabelegroep uit Azure Key Vault. U kunt ook geheime variabelen instellen in een script met een opdracht voor logboekregistratie, maar dit wordt niet aanbevolen omdat iedereen die toegang heeft tot uw pijplijn ook het geheim kan zien.

Geheime variabelen die zijn ingesteld in de gebruikersinterface voor pijplijninstellingen voor een pijplijn, hebben het bereik van de pijplijn waar ze zijn ingesteld. U kunt variabelegroepen gebruiken om geheime variabelen te delen tussen pijplijnen.

Geheime variabele in de gebruikersinterface

U kunt geheime variabelen instellen in de pijplijneditor wanneer u een afzonderlijke pijplijn bewerkt. U versleutelt en maakt een pijplijnvariabele geheim door het vergrendelingspictogram te selecteren.

U stelt geheime variabelen op dezelfde manier in voor YAML en klassiek.

Voer de volgende stappen uit om geheimen in te stellen in de webinterface:

  1. Ga naar de pagina Pijplijnen , selecteer de juiste pijplijn en selecteer Vervolgens Bewerken.
  2. Zoek de variabelen voor deze pijplijn.
  3. Voeg de variabele toe of werk deze bij.
  4. Selecteer de optie om deze waarde geheim te houden om de variabele op een versleutelde manier op te slaan.
  5. Sla de pijplijn op.

Geheime variabelen worden in rust versleuteld met een 2048-bits RSA-sleutel. Geheimen zijn beschikbaar op de agent voor taken en scripts die moeten worden gebruikt. Wees voorzichtig met wie toegang heeft om uw pijplijn te wijzigen.

Belangrijk

We doen er alles aan om geheimen te maskeren van de uitvoer van Azure Pipelines, maar u moet nog steeds voorzorgsmaatregelen nemen. Echo geheimen nooit als uitvoer. Sommige besturingssystemen registreren opdrachtregelargumenten. Geef nooit geheimen door op de opdrachtregel. In plaats daarvan raden we u aan uw geheimen toe te wijzen aan omgevingsvariabelen.

We maskeren nooit subtekenreeksen van geheimen. Als 'abc123' bijvoorbeeld is ingesteld als geheim, wordt 'abc' niet gemaskeerd uit de logboeken. Dit is om te voorkomen dat geheimen te gedetailleerd worden gemaskeerd, waardoor de logboeken onleesbaar worden. Daarom mogen geheimen geen gestructureerde gegevens bevatten. Als bijvoorbeeld '{ 'foo': 'bar' }' is ingesteld als geheim, wordt 'balk' niet gemaskeerd uit de logboeken.

In tegenstelling tot een normale variabele worden ze niet automatisch ontsleuteld in omgevingsvariabelen voor scripts. U moet geheime variabelen expliciet toewijzen.

Een geheime variabele gebruiken in de gebruikersinterface

U moet een geheime variabele toewijzen als omgevingsvariabelen om ernaar te verwijzen in YAML-pijplijnen. In dit voorbeeld zijn er twee geheime variabelen gedefinieerd in de gebruikersinterface SecretOne en SecretTwo. De waarde van SecretOne is foo en de waarde van SecretTwo is bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

De pijplijnuitvoer:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Notitie

Azure Pipelines doet er alles aan om geheimen te maskeren bij het verzenden van gegevens naar pijplijnlogboeken, zodat er mogelijk extra variabelen en gegevens worden gemaskeerd in uitvoer en logboeken die niet als geheimen zijn ingesteld.

Zie Variabelen definiƫren voor een gedetailleerder voorbeeld.

Een geheime variabele instellen in een variabelegroep

U kunt geheimen toevoegen aan een variabele groep of geheimen koppelen vanuit een bestaande Azure Key Vault.

Nieuwe variabelegroepen maken

  1. Selecteer de groep Pipelines>Library>+ Variable.

    Schermopname van de knop Variabelegroep toevoegen gemarkeerd met rood vak.

  2. Voer een naam en beschrijving in voor de groep.

  3. Optioneel: Verplaats de wisselknop om geheimen uit een Azure-sleutelkluis als variabelen te koppelen. Zie Azure Key Vault-geheimen gebruiken voor meer informatie.

  4. Voer de naam en waarde in voor elke variabele die u wilt opnemen in de groep en kies + Toevoegen voor elke variabele.

  5. Als u de variabele veilig wilt maken, kiest u het pictogram Vergrendelen aan het einde van de rij.

  6. Wanneer u klaar bent met het toevoegen van variabelen, selecteert u Opslaan.

    Schermopname van het opslaan van een variabelegroep.

Variabelegroepen volgen het beveiligingsmodel van de bibliotheek.

U kunt een variabelegroep maken die is gekoppeld aan een bestaande Azure-sleutelkluis en geselecteerde Key Vault-geheimen toewijzen aan de variabelegroep. Alleen de geheime namen worden toegewezen aan de variabelegroep, niet aan de geheime waarden. Pijplijn voert die koppeling naar de variabelegroep uit om de meest recente geheime waarden uit de kluis op te halen.

Wijzigingen die zijn aangebracht in bestaande geheimen in de sleutelkluis, zijn automatisch beschikbaar voor alle pijplijnen die gebruikmaken van de variabelegroep. Als geheimen echter worden toegevoegd aan of verwijderd uit de kluis, worden de gekoppelde variabelegroepen niet automatisch bijgewerkt. U moet de geheimen expliciet bijwerken om deze op te nemen in de variabelegroep.

Hoewel Key Vault ondersteuning biedt voor het opslaan en beheren van cryptografische sleutels en certificaten in Azure, biedt azure Pipelines-variabelegroepintegratie alleen ondersteuning voor het toewijzen van sleutelkluisgeheimen. Cryptografische sleutels en certificaten worden niet ondersteund.

Notitie

Sleutelkluizen die gebruikmaken van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) worden niet ondersteund.

Vereisten

  • Een Azure-sleutelkluis die uw geheimen bevat. U kunt een sleutelkluis maken met behulp van Azure Portal.
  • Een Azure-serviceverbinding voor uw project.

De variabelegroep maken

  1. Selecteer in uw Azure DevOps-project de groep Pipelines>Library>+ Variable.
  2. Voer op de pagina Variabelengroepen een naam en een optionele beschrijving in voor de variabelegroep.
  3. Schakel de schakeloptie Koppelingsgeheimen uit een Azure-sleutelkluis in als variabelen .
  4. Selecteer uw Azure-abonnementseindpunt en sleutelkluisnaam.
  5. Schakel Azure DevOps in voor toegang tot de sleutelkluis door Autoriseren naast de kluisnaam te selecteren.
  6. Selecteer in het scherm Geheimen kiezen specifieke geheimen in uw kluis voor toewijzing aan deze variabelegroep en selecteer vervolgens OK.
  7. Selecteer Opslaan om de geheime variabelegroep op te slaan.

Schermopname van een variabele groep met Azure Key Vault-integratie.

Notitie

Uw Azure-serviceverbinding moet ten minste machtigingen voor ophalen en weergeven hebben voor de sleutelkluis, die u in de voorgaande stappen kunt autoriseren. U kunt deze machtigingen ook opgeven vanuit Azure Portal door de volgende stappen uit te voeren:

  1. Open Instellingen voor de sleutelkluis en kies vervolgens Toegangsconfiguratie>Go voor toegangsbeleid.
  2. Als uw Azure Pipelines-project niet wordt vermeld onder Toepassingen met ten minste machtigingen ophalen en weergeven, selecteert u Maken op de pagina Toegangsbeleid.
  3. Selecteer Onder Geheime machtigingen de optie Ophalen en weergeven en selecteer vervolgens Volgende.
  4. Selecteer uw service-principal en selecteer vervolgens Volgende.
  5. Selecteer Volgende opnieuw, controleer de instellingen en selecteer vervolgens Maken.

De Azure Key Vault-taak gebruiken

U kunt de Azure Key Vault-taak gebruiken om geheimen in uw pijplijn op te nemen. Met deze taak kan de pijplijn verbinding maken met uw Azure Key Vault en geheimen ophalen voor gebruik als pijplijnvariabelen.

  1. Selecteer assistent weergeven in de pijplijneditor om het deelvenster Assistent uit te vouwen.

  2. vault Zoek en selecteer de Azure Key Vault-taak.

    Voeg de Azure Key Vault-taak toe.

De optie Geheimen beschikbaar maken voor hele taken wordt momenteel niet ondersteund in Azure DevOps Server 2019 en 2020.

Zie Azure Key Vault-geheimen gebruiken in Azure Pipelines voor meer informatie over de Azure Key Vault-taak.

Geheime variabele instellen in een script met logboekregistratieopdrachten

U kunt de task.setvariable logboekregistratieopdracht gebruiken om variabelen in PowerShell- en Bash-scripts in te stellen. Dit is de minst veilige manier om met geheime variabelen te werken, maar kan handig zijn voor foutopsporing. De aanbevolen manieren om geheime variabelen in te stellen, bevinden zich in de gebruikersinterface, in een variabelegroep en in een variabelegroep uit Azure Key Vault.

Als u een variabele wilt instellen als een script met een opdracht voor logboekregistratie, moet u de issecret vlag doorgeven.

Wanneer issecret deze is ingesteld op true, wordt de waarde van de variabele opgeslagen als geheim en gemaskeerd uit logboeken.

Notitie

Azure Pipelines doet er alles aan om geheimen te maskeren bij het verzenden van gegevens naar pijplijnlogboeken, zodat er mogelijk extra variabelen en gegevens worden gemaskeerd in uitvoer en logboeken die niet als geheimen zijn ingesteld.

Stel de geheime variabele mySecretValin.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Haal de geheime variabele mySecretValop.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Uitvoer van geheime variabelen in bash.

Schermopname van uitvoer van bash-variabelen.

Meer informatie over het instellen en gebruiken van variabelen in scripts.