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

Leer hoe u toegang krijgt tot Azure-services, zoals Azure Storage, vanuit een web-app (geen aangemelde gebruiker) die wordt uitgevoerd op Azure-app Service met behulp van beheerde identiteiten. In deze zelfstudie ziet u hoe u als voorbeeld verbinding maakt met Azure Storage.

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 that shows how to access storage.

U wilt beveiligde toegang tot Azure-services (Azure Storage, Azure SQL Database, Azure Key Vault of andere services) toevoegen 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 de sleutel in te checken bij GitHub, maar hackers weten hoe ze daarop kunnen scannen. 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 heeft App Service toegang tot resources via op rollen gebaseerd toegangsbeheer (RBAC), zonder dat hiervoor app-referenties nodig zijn. Nadat een beheerde identiteit aan uw web-app is toegewezen, wordt er in Azure een certificaat gemaakt en gedistribueerd. 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
  • Een opslagaccount en Azure Blob Storage-container maken
  • Toegang tot opslag krijgen vanuit een web-app met behulp van beheerde identiteiten

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

Een beheerde identiteit inschakelen voor een app

Als u uw web-app via Visual Studio maakt en publiceert, was de beheerde identiteit al voor u ingeschakeld in uw app. In uw app-service selecteert u Identiteit in het linkerdeelvenster en selecteert u vervolgens Door het systeem toegewezen. Verifieer dat Status is ingesteld op Aan. Als dat niet het is, selecteert u Aan en vervolgens Opslaan. Selecteer Ja in het bevestigingsvenster om de door het systeem toegewezen beheerde identiteit in te schakelen. Wanneer de beheerde identiteit is ingeschakeld, is de status ingesteld op Aan en is de object-id beschikbaar.

Screenshot that shows the System assigned identity option.

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 deze 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 behoren tot een Azure-resourcegroep. Een resourcegroep is een logische container voor het groeperen van 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 services van Azure Storage: 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 worden georganiseerd in containers. Voordat u later in deze zelfstudie een blob kunt uploaden, moet u een container maken.

Als u een v2-opslagaccount voor algemeen gebruik wilt maken in Azure Portal, volgt u deze stappen.

  1. Selecteer Alle services in het menu van Azure Portal. Voer in de lijst met resources Opslagaccounts 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 in het vervolgkeuzemenu onder het veld Resourcegroep de resourcegroep die uw web-app bevat.

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

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

  7. Laat deze velden ingesteld staan op de standaardwaarden:

    Veld Waarde
    Implementatiemodel Resourcebeheer
    Prestaties Standaard
    Soort account StorageV2 (algemeen gebruik v2)
    Replicatie Geografisch redundante opslag met leestoegang (RA-GRS)
    Toegangslaag Heet
  8. Selecteer Beoordelen en maken om uw opslagaccountinstellingen te bekijken en het account te maken.

  9. Selecteer Maken.

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

  1. Ga naar het nieuwe opslagaccount in Azure Portal.

  2. Schuif in het linkermenu voor het opslagaccount naar de sectie Gegevensopslag en selecteer vervolgens Containers.

  3. Selecteer de knop + Container.

  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 stap hebt u de web-app die in App Service wordt uitgevoerd, geconfigureerd met een beheerde identiteit. Met behulp van Azure RBAC kunt u de beheerde identiteit toegang tot een andere resource geven, net zoals elke beveiligings-principal. De rol Bijdrager voor opslagblobgegevens geeft de web-app (vertegenwoordigd door de door het systeem toegewezen beheerde identiteit) lees-, schrijf- en verwijdertoegang tot de blobcontainer en -gegevens.

Notitie

Sommige bewerkingen voor privé-blobcontainers worden niet ondersteund door Azure RBAC, zoals het weergeven van blobs of het kopiëren van blobs tussen accounts. Voor een blobcontainer met privétoegangsniveau is een SAS-token vereist voor elke bewerking die niet is geautoriseerd door Azure RBAC. Zie Wanneer u een handtekening voor gedeelde toegang gebruikt voor meer informatie.

Ga in de Azure-portal naar uw opslagaccount om uw web-app toegang te verlenen. Selecteer Toegangsbeheer (IAM) in het linkernavigatievenster en selecteer vervolgens Roltoewijzingen. U ziet dan een lijst met de personen die toegang tot het opslagaccount hebben. U wilt nu een roltoewijzing toevoegen aan een robot, de app-service die toegang tot het opslagaccount nodig heeft. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

Wijs de rol Inzender voor opslagblobgegevens toe aan de App Service op abonnementsniveau. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

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 het voorbeeld op GitHub als u deze code wilt bekijken als onderdeel van een voorbeeldtoepassing.

Clientbibliotheekpakketten installeren

Installeer het NuGet-pakket Blob Storage 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 opdrachtregelinterface van .NET Core 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
    

Package Manager Console

  1. Open het project of de oplossing in Visual Studio en open de console met behulp van de opdracht Hulpprogramma's>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 does not 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;
    }
}

Resources opschonen

Als u klaar bent met deze zelfstudie en de web-app of bijbehorende resources niet meer nodig hebt, kunt u de gemaakte resources opschonen.

De resourcegroep verwijderen

In de Azure-portal selecteert u Resourcegroepen in het portalmenu en selecteert u vervolgens de resourcegroep die uw app-service en App Service-plan bevat.

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

Screenshot that shows deleting the resource group.

Het uitvoeren van deze opdracht kan enkele minuten duren.

Volgende stappen

In deze zelfstudie heeft u het volgende geleerd:

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