Find godkendelsesindstillinger for GitHub-handlinger til Azure

Fuldført

For at GitHub Actions for Azure kan få adgang til ressourcer, der er sikret af en Microsoft Entra-lejer, kræver denne adgang repræsentation af en sikkerhedsprincipal. Dette krav gælder for både brugere (brugerprincipal) og programmer (tjenesteprincipal).

Sikkerhedsprincipalen definerer adgangspolitikken og tilladelserne for brugeren/programmet i Microsoft Entra-lejeren. Dette aktiverer kernefunktioner som godkendelse af brugeren/programmet under logon og godkendelse under ressourceadgang.

Der er tre typer tjenesteprincipal:

  • Application – Denne type tjenesteprincipal er den lokale repræsentation eller programforekomst af et globalt programobjekt i en enkelt lejer eller mappe. Når du registrerer et program, oprettes der automatisk en tjenesteprincipal. Du kan også oprette tjenesteprincipalobjekter i en lejer ved hjælp af Azure PowerShell, Azure CLI, Microsoft Graph og andre værktøjer.

  • Administreret identitet – Administrerede identiteter giver en identitet, som programmer kan bruge, når der oprettes forbindelse til ressourcer, der understøtter Microsoft Entra-godkendelse. Når en administreret identitet er aktiveret, oprettes der en tjenesteprincipal, der repræsenterer den administrerede identitet i din lejer. Tjenesteprincipaler, der repræsenterer administrerede identiteter, kan tildeles adgang og tilladelser, men de kan ikke opdateres eller ændres direkte.

  • Ældre – Denne type tjenesteprincipal repræsenterer en ældre app, som er en app, der blev oprettet, før appregistreringer blev introduceret, eller en app, der blev oprettet via ældre oplevelser. En ældre tjenesteprincipal kan have legitimationsoplysninger, tjenesteprincipalnavne og andre egenskaber, som en godkendt bruger kan redigere. Men den har ikke en tilknyttet appregistrering. Tjenesteprincipalen kan kun bruges i den lejer, hvor den blev oprettet.

Sikkerhedsprincipalen skal også have passende adgang til ressourcer i Azure ved at tildele de nødvendige roller. I dette undermodul beskrives følgende måder at logge på Azure på fra en GitHub-arbejdsproces:

  • Log på med OpenID Connect (certifikatbaseret).
  • Log på med en tjenesteprincipal og en hemmelighed. Bemærk! Denne metode anbefales ikke, fordi hemmeligheden nemmere kan kompromitteres sammenlignet med certifikatbaseret godkendelse.

Du kan oprette en tjenesteprincipal ved hjælp af Azure Portal, Azure CLI eller Azure PowerShell.

Log på med OpenID Opret forbindelse

I følgende eksempler kan du se, hvordan du opretter en tjenesteprincipal og konfigurerer den til OpenID Connect ved hjælp af Azure Portal. Eksemplerne omfatter konfiguration af den omfangsbaserede rolle, tilføjelse af hemmeligheder til GitHub og brug af hemmelighederne i handlingen Azure Login.

Opret en tjenesteprincipal

  1. Søg efter Microsoft Entra IDi Azure Portal, og naviger til tjenesten.

  2. I navigationsruden til venstre skal du vælge appregistreringer i gruppen Administrer .

  3. Vælg + Ny registrering i hovedpanelet, angiv et navn, og vælg derefter Registrer.

    Seddel

    Id'et for -programmet (klient) og Directory (lejer) værdier i afsnittet Essentials på siden er nødvendige for de hemmeligheder, der er føjet til GitHub. Du skal også bruge dit abonnements-id.

  4. I navigationsruden til venstre skal du vælge Certifikater & hemmeligheder i gruppen Administrer, og vælg derefter Organisationsnetværkslegitimationsoplysningeri hovedvinduet.

  5. Vælg Tilføj en legitimationsoplysninger, og vælg derefter GitHub-handlinger, der udruller Azure-ressourcer, på rullelisten med valg.

  6. Der vises en formular, der anmoder om oplysninger om din GitHub-konto. I følgende tabel vises felterne, hvis du vælger at begrænse handlinger til en bestemt forgrening i dit lager. Bemærk! Der er forskel på store og små bogstaver i disse felter.

    Mark Handling
    Organisation Angiv dit bruger- eller organisationsnavn.
    Repository Angiv navnet på lageret.
    Objekttype Vælg forgrening.
    Navn på GitHub-forgrening Angiv primæreeller navnet på den forgrening, der repræsenterer udrulningen.
  7. I afsnittet Legitimationsoplysninger skal du give dine legitimationsoplysninger et navn og derefter vælge Tilføj.

Tildel en rolle

Du skal tildele en rolle til tjenesteprincipalen for at give den tilladelse til at få adgang til ressourcer på din Azure-konto. I følgende eksempel på kommandolinjegrænsefladen i Azure tildeles bidragyder rolle, der er begrænset til den ressourcegruppe, der indeholder programmet.

az role assignment create --assignee <service-principal-id> \
  --role contributor \
  --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group}

Føj OpenID Opret forbindelseshemmeligheder til GitHub

  1. I GitHub-skal du gå til dit lager.

  2. Gå til Indstillinger i navigationsmenuen.

  3. Vælg Security > Secrets and variables > Actions.

    Skærmbillede af menupunktet Handlinger.

  4. Vælg Ny lagerhemmelighed.

  5. Tilføj de hemmeligheder, der vises i følgende tabel.

    Navn Hemmelig
    AZURE_CLIENT_ID Angiv det program-id (klient)-id.
    AZURE_TENANT_ID Angiv Directory-id'et (lejer).
    AZURE_SUBSCRIPTION_ID Angiv dit abonnements-id. Du kan hente dit id med kommandoen az account show.

Brug azure-logonhandlingen

I følgende arbejdsproceseksempel godkendes ved hjælp af handlingen Azure Login med openID Connect-oplysningerne, der er gemt i GitHub.

on: [push]

name: AzureLoginSample

permissions:
  id-token: write # Requires write permission to fetch a token.
  contents: read  # This is required for actions/checkout

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      #Login in your azure subscription using OpenID Connect (credentials stored as GitHub secrets in repo)
      - name: Azure Login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Log på med en tjenesteprincipal og en hemmelighed

I følgende eksempler kan du se, hvordan du opretter en tjenesteprincipal og konfigurerer den til en omfangsbaseret rolle. De viser også, hvordan du tilføjer principalen som en GitHub-hemmelighed og bruger denne hemmelighed i azure-logonhandlingen.

Opret en tjenesteprincipal

Følgende Azure CLI-kommando opretter tjenesteprincipalen og tildeler den bidragyder rolle, der er begrænset til den ressourcegruppe, der indeholder programmet.

az ad sp create-for-rbac --name "myApp" --role contributor \
    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ 
    --json-auth

Kommandoen genererer et JSON-objekt for din tjenesteprincipal. Dette output er den hemmelighed, du føjer til dit GitHub-lager. Sørg for at kopiere de oplysninger, de ikke kan hentes senere.

{
    "clientId": "<GUID>",
    "clientSecret": "<secret>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
}

Tilføj en tjenesteprincipal som en GitHub-hemmelighed

I følgende trin kan du se, hvordan du opretter en hemmelighed med navnet AZURE_CREDENTIALS, som du kan bruge til at godkende med Azure.

  1. I GitHub-skal du gå til dit lager.

  2. Gå til Indstillinger i navigationsmenuen.

  3. Vælg Security > Secrets and variables > Actions.

    Skærmbillede af menupunktet Handlinger.

  4. Vælg Ny lagerhemmelighed.

  5. Indsæt hele JSON-outputtet fra Azure CLI-kommandoen i hemmelighedens værdifelt. Giv det hemmelige navn AZURE_CREDENTIALS.

Vælg Tilføj hemmelighed.

Brug azure-logonhandlingen

I følgende arbejdsproceseksempel godkendes ved hjælp af handlingen Azure Login med de oplysninger om tjenesteprincipalen, der er gemt i secrets.AZURE_CREDENTIALS.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Log in with Azure
        uses: azure/login@v2
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'