Zelfstudie: Toegang tot Azure services vanuit een .NET-web-app

Meer informatie over het benaderen van Azure-services, zoals Azure Storage, vanuit een web-app die wordt uitgevoerd in Azure App Service, zonder aangemeld te zijn als gebruiker, door gebruik te maken van beheerde identiteiten. In deze zelfstudie ziet u hoe u verbinding maakt met Azure Storage als voorbeeld.

Elke service die beheerde identiteit (B in de volgende afbeelding) ondersteunt, kan veilig worden geopend met behulp van deze zelfstudie:

  • Azure Storage
  • Azure SQL Database
  • Azure Key Vault

Diagram dat laat zien hoe u toegang krijgt tot opslag.

U wilt beveiligde toegang toevoegen aan Azure-services, waaronder Azure Storage, Azure SQL Database en Azure Key Vault, vanuit uw web-app. U zou een gedeelde sleutel kunnen gebruiken, maar dan zit u met het probleem van operationele beveiliging en wie het geheim kan maken, implementeren en beheren. Het is ook mogelijk dat de sleutel op GitHub kan worden ingecheckt, en hackers weten hoe ze daar naar moeten zoeken. Een veiligere manier om uw web-app toegang tot gegevens te geven, is beheerde identiteiten te gebruiken.

Met een beheerde identiteit van Microsoft Entra ID kan App Service toegang krijgen tot resources via op rollen gebaseerd toegangsbeheer (RBAC), zonder dat hiervoor app-referenties nodig zijn. Nadat u een beheerde identiteit aan uw web-app hebt toegewezen, zorgt Azure voor het maken en distribueren van een certificaat. Mensen hoeven zich geen zorgen te maken over het beheren van geheimen of app-referenties.

In deze zelfstudie leert u het volgende:

  • Een door het systeem toegewezen beheerde identiteit maken in een web-app
  • Maak een opslagaccount en een Azure Blob Storage-container.
  • Toegang tot opslag krijgen vanuit een web-app met behulp van beheerde identiteiten

Als u geen Azure account hebt, maakt u een free-account voordat u begint.

Vereisten

Een beheerde identiteit inschakelen voor een app

Als u uw web-app maakt en publiceert via Visual Studio, is de beheerde identiteit ingeschakeld voor uw app.

  1. Selecteer Identiteit in uw app-service in het linkermenu en selecteer vervolgens Systeem toegewezen. Verifieer dat Status is ingesteld op Aan.

    Als dat niet het is, selecteert u Aan en slaat u het bestand op. Als u de door het systeem toegewezen beheerde identiteit wilt inschakelen, selecteert u Ja in het bevestigingsvenster. Wanneer de beheerde identiteit is ingeschakeld, is de status ingesteld op Aan en is de object-id beschikbaar.

    Schermopname die de optie systeemtoegewezen identiteit toont.

  2. Met deze stap wordt een nieuwe object-id gemaakt, die anders is dan de app-id die in het deelvenster Verificatie/autorisatie wordt gemaakt. Kopieer de object-id van de door het systeem toegewezen beheerde identiteit. U hebt het later nodig.

Een opslagaccount en Blob Storage-container maken

U bent nu klaar om een opslagaccount en Blob Storage container te maken.

Elk opslagaccount moet deel uitmaken van een Azure resourcegroep. Een resourcegroep is een logische container voor uw Azure-services. Wanneer u een opslagaccount maakt, kunt u een nieuwe resourcegroep maken of een bestaande resourcegroep gebruiken. In dit artikel wordt beschreven hoe u een nieuwe resourcegroep maakt.

Een v2-opslagaccount voor algemeen gebruik biedt toegang tot alle Azure Storage services: blobs, bestanden, wachtrijen, tabellen en schijven. Met de stappen die hier worden uiteengezet, maakt u een v2-opslagaccount voor algemeen gebruik, maar de stappen voor het maken van een ander soort opslagaccount zijn vergelijkbaar.

Blobs in Azure Storage zijn ingedeeld in containers. Voordat u later in deze zelfstudie een blob kunt uploaden, moet u een container maken.

Volg deze stappen om een v2-opslagaccount voor algemeen gebruik te maken in de Azure-portal.

  1. Voer in het menu Azure portal Storage-accounts in. Als u begint te typen, wordt de lijst gefilterd op basis van uw invoer. Selecteer Opslagaccounts.

  2. Selecteer Maken in het venster Opslagaccounts dat wordt weergegeven.

  3. Selecteer het abonnement waarin u het opslagaccount wilt maken.

  4. Selecteer voor resourcegroep de resourcegroep die uw web-app bevat.

  5. Voer een naam in voor het opslagaccount. De naam die u kiest, moet uniek zijn in Azure. De naam moet tussen de 3 en 24 tekens lang zijn en mag alleen cijfers en kleine letters bevatten.

  6. Selecteer een locatie (regio) voor uw opslagaccount of gebruik de standaardwaarde.

  7. Selecteer Azure Blob Storage of Azure Data Lake Storage Gen 2 voor voorkeursopslagtype.

  8. Laat deze velden ingesteld staan op de standaardwaarden:

    Veld Waarde
    Prestaties Standaard
    Redundantie Georedundante opslag
  9. Selecteer Beoordelen en maken om uw opslagaccountinstellingen te bekijken en het account te maken.

  10. Selecteer Aanmaken.

Volg deze stappen om een Blob Storage container in Azure Storage te maken.

  1. Ga naar uw nieuwe opslagaccount in de Azure-portal.

  2. Selecteer Containers in het linkermenu voor het opslagaccount onder Gegevensopslag.

  3. Selecteer Container toevoegen.

  4. Typ een naam voor de nieuwe container. De containernaam mag alleen kleine letters bevatten, moet beginnen met een letter of cijfer en mag alleen letters, cijfers en het streepje (-) bevatten.

  5. Stel het niveau van openbare toegang tot de container in. Het standaardniveau is Persoonlijk (geen anonieme toegang).

  6. Selecteer OK om de container aan te maken.

Toegang tot het opslagaccount verlenen

U moet uw web-app toegang tot het opslagaccount verlenen voordat u blobs kunt maken, lezen of verwijderen. In een vorige sectie hebt u de web-app geconfigureerd die wordt uitgevoerd in App Service met een beheerde identiteit. Met Azure RBAC kunt u de beheerde identiteit toegang geven tot een andere resource, net zoals elke beveiligingsprincipaal.

De rol Inzender voor opslagblobgegevens biedt de web-app, vertegenwoordigd door de door het systeem toegewezen beheerde identiteit, lees-, schrijf- en verwijdertoegang tot de blobcontainer en -gegevens.

Notitie

Azure RBAC biedt geen ondersteuning voor bepaalde bewerkingen in privé-blobcontainers, zoals het weergeven van blobs of het kopiëren van blobs tussen accounts. Voor een blobcontainer met een privétoegangsniveau is een SAS-token vereist voor elke bewerking die azure RBAC niet autoriseert. Zie Wanneer u een handtekening voor gedeelde toegang gebruikt voor meer informatie.

  1. Ga in de Azure portal naar uw opslagaccount om uw web-app toegang te verlenen.
  2. Selecteer in het linkermenu Toegangsbeheer (IAM) en selecteer vervolgens Roltoewijzingen. U ziet een lijst met wie toegang heeft tot het opslagaccount.
  3. U wilt een roltoewijzing toevoegen aan de app-service die toegang nodig heeft tot het opslagaccount. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.
  4. Wijs de rol Storage Blob Data Contributor toe aan de App Service binnen het bereik van het opslagaccount. Voor meer informatie, zie Azure-rollen toewijzen met behulp van het Azure-portaal.

Uw web-app heeft nu toegang tot uw opslagaccount.

Toegang tot Blob Storage

De klasse DefaultAzureCredential wordt gebruikt om een tokenreferentie voor uw code op te halen om aanvragen voor Azure Storage te autoriseren. Maak een exemplaar van de klasse DefaultAzureCredential, die gebruikmaakt van de beheerde identiteit om tokens op te halen en aan de serviceclient te koppelen. Met het volgende codevoorbeeld wordt de geverifieerde tokenreferentie opgehaald en gebruikt om een serviceclientobject te maken, waarmee een nieuwe blob wordt geüpload.

Zie de sample op GitHub om deze code te zien als onderdeel van een voorbeeldtoepassing.

Clientbibliotheekpakketten installeren

Installeer het Blob Storage NuGet-pakket om te werken met Blob Storage en de Azure Identity-clientbibliotheek voor .NET NuGet-pakket om te verifiëren met Microsoft Entra referenties. Installeer de clientbibliotheken met behulp van de .NET Core-opdrachtregelinterface of de Package Manager Console in Visual Studio.

.NET Core-opdrachtregel

  1. Open een opdrachtregel en ga naar de map die uw projectbestand bevat.

  2. Voer de installatieopdrachten uit.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Pakketbeheerconsole

  1. Open het project of de oplossing in Visual Studio en open de console met behulp van de opdracht Tools>NuGet Package Manager>Package Manager Console.

  2. Voer de installatieopdrachten uit.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

.NET voorbeeld

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it doesn't exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Hulpmiddelen opschonen

Als u deze zelfstudie hebt voltooid en de web-app of de bijbehorende resources niet meer nodig hebt, moet u de resources opschonen die u hebt gemaakt.

De resourcegroep verwijderen

  1. Selecteer Azure portal in het menu van de Resource groups en selecteer de resourcegroep die uw App Service en App Service-plan bevat.

  2. Selecteer Resourcegroep verwijderen om de resourcegroep en alle resources te verwijderen.

    Schermopname van het verwijderen van de resourcegroep.

  3. Voer de naam in van de resourcegroep die u wilt bevestigen.

Dit proces kan enkele minuten duren.

Volgende stappen

In deze zelfstudie heeft u het volgende geleerd:

  • Een door het systeem toegewezen beheerde identiteit maken
  • Maak een opslagaccount en Blob Storage container.
  • Toegang tot opslag krijgen vanuit een web-app met behulp van beheerde identiteiten