Toegang verlenen tot blobgegevens met beheerde identiteiten voor Azure-resources

Azure Blob Storage ondersteunt Azure Active Directory verificatie (Azure AD) met beheerde identiteiten voor Azure-resources. Beheerde identiteiten voor Azure-resources kunnen toegang verlenen tot blobgegevens met behulp van Azure AD-referenties van toepassingen die worden uitgevoerd in virtuele Azure-machines (VM's), functie-apps, virtuele-machineschaalsets en andere services. Door beheerde identiteiten voor Azure-resources samen met Azure AD-verificatie te gebruiken, kunt u voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud worden uitgevoerd.

In dit artikel wordt beschreven hoe u toegang tot blobgegevens van een Azure-VM autoreert met behulp van beheerde identiteiten voor Azure-resources.

Beheerde identiteiten op een VM inschakelen

Voordat u beheerde identiteiten voor Azure-resources kunt gebruiken om toegang te verlenen tot blobs vanaf uw VM, moet u eerst beheerde identiteiten inschakelen voor Azure-resources op de VM. Zie een van de volgende artikelen voor meer informatie over het inschakelen van beheerde identiteiten voor Azure-resources:

Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten.

Een RBAC-rol toewijzen aan een beheerde identiteit

Wanneer een Azure AD-beveiligingsprincipaal toegang probeert te krijgen tot gegevens in een Azure Storage account, moet die beveiligingsprincipaal machtigingen hebben voor de gegevensresource. Of de beveiligings-principal nu een beheerde identiteit in Azure is of een Azure AD-gebruikersaccount dat code in de ontwikkelomgeving wordt uitgevoerd, aan de beveiligingsprincipaal moet een Azure-rol worden toegewezen die toegang verleent tot gegevens in Azure Storage. Zie Assign an Azure role for access to blob data (Een Azure-rol toewijzen voor toegang tot blobgegevens)voor meer informatie over het toewijzen van machtigingen voor gegevenstoegang via Azure RBAC.

Notitie

Wanneer u een Azure Storage account maakt, krijgt u niet automatisch machtigingen voor toegang tot gegevens via Azure AD. U moet uzelf expliciet een Azure-rol toewijzen voor Azure Storage. U kunt deze toewijzen op het niveau van uw abonnement, resourcegroep, opslagaccount of container.

Een beheerde identiteit gebruiken om een blok-blob te maken in .NET

De Azure Identity-clientbibliotheek vereenvoudigt het proces van het verkrijgen van een OAuth 2.0-toegangsteken voor autorisatie met Azure Active Directory (Azure AD) via de Azure SDK. Wanneer u de Azure Identity-clientbibliotheek gebruikt om een toegang token op te halen, kunt u dezelfde code gebruiken om het token te verkrijgen, ongeacht of uw toepassing wordt uitgevoerd in de ontwikkelomgeving of in Azure. Zie Use the Azure Identity library to get an access token for authorization (De Azure Identity-bibliotheek gebruiken om een toegang token voor autorisatie op te halen) voor meer informatie.

Als u een token wilt opvragen dat door uw code kan worden gebruikt om aanvragen voor Azure Storage, maakt u een exemplaar van de klasse DefaultAzureCredential. Vervolgens kunt u het token gebruiken om een serviceclientobject te maken dat gemachtigd is om gegevensbewerkingen in de Azure Storage. Zie Azure Identity-clientbibliotheekvoor .NET voor meer informatie over het gebruik van de klasse DefaultAzureCredential om een beheerde identiteit toegang te geven tot Azure Storage.

In het volgende codevoorbeeld ziet u hoe u een toegangs token op kunt halen en hoe u dit kunt gebruiken om een serviceclientobject te maken. Vervolgens wordt de serviceclient gebruikt om een nieuwe blob te uploaden:

async static Task CreateBlockBlobAsync(string accountName, string containerName, string blobName)
{
    // 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 service 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.
        string blobContents = "This is a block blob.";
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Notitie

Als u aanvragen wilt autoreren voor blobgegevens met Azure AD, moet u HTTPS gebruiken voor deze aanvragen.

Volgende stappen