Säker åtkomst till programdata

Den här självstudiekursen är den tredje delen i en serie. Du lär dig hur du skyddar åtkomsten till lagringskontot.

I den tredje delen i serien får du lära dig att:

  • Använder SAS-token för att komma åt miniatyrbilder
  • Aktiverar kryptering på serversidan
  • Aktiverar endast HTTPS-transport

Azure Blob Storage tillhandahåller en robust tjänst för att lagra filer för program. Den här självstudiekursen kompletterar det föregående avsnittet och visar hur du skyddar åtkomsten till ditt lagringskonto från ett webbprogram. När du är klar är bilderna krypterade och i webbappen används säkra SAS-token för att få åtkomst till miniatyrbilderna.

Förutsättningar

För att kunna utföra den här kursen måste du ha slutfört den föregående Storage-självstudiekursen: Automatisera storleksändring av överförda bilder med Event Grid.

Ange offentlig åtkomst till containrar

I den här delen av kursserien används SAS-token för att få åtkomst till miniatyrbilder. I det här steget anger du offentlig åtkomst för containern med miniatyrer till off.

$blobStorageAccount="<blob_storage_account>"

blobStorageAccountKey=(Get-AzStorageAccountKey -ResourceGroupName myResourceGroup -AccountName $blobStorageAccount).Key1

Set-AzStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName $blobStorageAccount -KeyName $blobStorageAccountKey -AllowBlobPublicAccess $false

Konfigurera SAS-token för miniatyrbilder

I den första delen i den här kursserien visade webbprogrammet bilder från en offentlig container. I den här delen av serien använder du SAS-token (signaturer för delad åtkomst) för att hämta miniatyrbilderna. SAS-token ger dig begränsad åtkomst till en container eller blob baserat på IP-protokoll, tidsintervall eller rättigheter. Mer information om SAS finns i Bevilja begränsad åtkomst till Azure Storage resurser med signaturer för delad åtkomst (SAS).

I det här exemplet använder lagringsplatsen för källkod sasTokens-grenen, som har ett uppdaterat kodexempel. Ta bort den befintliga GitHub-distributionen med az webapp deployment source delete. Konfigurera sedan GitHub-distributionen till webbappen med kommandot az webapp deployment source config.

I följande kommando är <web-app> namnet på din webbapp.

az webapp deployment source delete --name <web-app> --resource-group myResourceGroup

az webapp deployment source config --name <web_app> \
    --resource-group myResourceGroup --branch sasTokens --manual-integration \
    --repo-url https://github.com/Azure-Samples/storage-blob-upload-from-webapp
az webapp deployment source delete --name <web-app> --resource-group myResourceGroup

az webapp deployment source config --name <web_app> `
    --resource-group myResourceGroup --branch sasTokens --manual-integration `
    --repo-url https://github.com/Azure-Samples/storage-blob-upload-from-webapp

sasTokens-grenen av lagringsplatsen uppdaterar filen StorageHelper.cs. Den ersätter aktiviteten GetThumbNailUrls med kodexemplet nedan. Den uppdaterade aktiviteten hämtar miniatyr-URL:erna med hjälp av en BlobSasBuilder för att ange starttid, förfallotid och behörigheter för SAS-token. När webbappen har distribuerats hämtas nu miniatyrbilderna med en URL med hjälp av en SAS-token. Den uppdaterade aktiviteten visas i följande exempel:

public static async Task<List<string>> GetThumbNailUrls(AzureStorageConfig _storageConfig)
{
    List<string> thumbnailUrls = new List<string>();

    // Create a URI to the storage account
    Uri accountUri = new Uri("https://" + _storageConfig.AccountName + ".blob.core.windows.net/");

    // Create BlobServiceClient from the account URI
    BlobServiceClient blobServiceClient = new BlobServiceClient(accountUri);

    // Get reference to the container
    BlobContainerClient container = blobServiceClient.GetBlobContainerClient(_storageConfig.ThumbnailContainer);

    if (container.Exists())
    {
        // Set the expiration time and permissions for the container.
        // In this case, the start time is specified as a few 
        // minutes in the past, to mitigate clock skew.
        // The shared access signature will be valid immediately.
        BlobSasBuilder sas = new BlobSasBuilder
        {
            Resource = "c",
            BlobContainerName = _storageConfig.ThumbnailContainer,
            StartsOn = DateTimeOffset.UtcNow.AddMinutes(-5),
            ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
        };

        sas.SetPermissions(BlobContainerSasPermissions.All);

        // Create StorageSharedKeyCredentials object by reading
        // the values from the configuration (appsettings.json)
        StorageSharedKeyCredential storageCredential =
            new StorageSharedKeyCredential(_storageConfig.AccountName, _storageConfig.AccountKey);

        // Create a SAS URI to the storage account
        UriBuilder sasUri = new UriBuilder(accountUri);
        sasUri.Query = sas.ToSasQueryParameters(storageCredential).ToString();

        foreach (BlobItem blob in container.GetBlobs())
        {
            // Create the URI using the SAS query token.
            string sasBlobUri = container.Uri + "/" +
                                blob.Name + sasUri.Query;

            //Return the URI string for the container, including the SAS token.
            thumbnailUrls.Add(sasBlobUri);
        }
    }
    return await Task.FromResult(thumbnailUrls);
}

Följande klasser, egenskaper och metoder används i den föregående aktiviteten:

Klass Egenskaper Metoder
StorageSharedKeyCredential
BlobServiceClient GetBlobContainerClient
BlobContainerClient Uri Finns
GetBlobs
BlobSasBuilder SetPermissions
ToSasQueryParameters
BlobItem Namn
UriBuilder Query
Lista Lägg till

Azure Storage-kryptering

Azure Storage kryptering hjälper dig att skydda dina data genom att kryptera vilodata och genom att hantera kryptering och dekryptering. Alla data krypteras med 256-bitars AES-kryptering, ett av de starkaste blockchiffer som finns.

Du kan välja att Microsoft ska hantera krypteringsnycklar eller använda egna nycklar med kundhanterade nycklar som lagras i Azure Key Vault eller Key Vault Managed Hardware Security Model (HSM) (förhandsversion). Mer information finns i Kund-hanterade nycklar för Azure Storage kryptering.

Azure Storage kryptering krypterar automatiskt data på alla prestandanivåer (Standard och Premium), alla distributionsmodeller (Azure Resource Manager och klassisk) och alla Azure Storage-tjänster (Blob, Kö, Tabell och Fil).

Aktivera endast HTTPS

Du kan se till att begäranden om data till och från ett lagringskonto skyddas genom att begäranden begränsas till endast HTTPS. Uppdatera protokollet som krävs för lagringskontot med kommandot az storage account update.

az storage account update --resource-group myresourcegroup --name <storage-account-name> --https-only true

Testa anslutningen med hjälp av curl med protokollet HTTP.

curl http://<storage-account-name>.blob.core.windows.net/<container>/<blob-name> -I

Nu när säker överföring krävs får du följande meddelande:

HTTP/1.1 400 The account being accessed does not support http.

Nästa steg

I den tredje delen i serien fick du lära dig hur du skyddar åtkomsten till lagringskontot, till exempel hur du:

  • Använder SAS-token för att komma åt miniatyrbilder
  • Aktiverar kryptering på serversidan
  • Aktiverar endast HTTPS-transport

Gå vidare till den fjärde delen i serien där du får lära dig hur du övervakar och felsöker ett molnlagringsprogram.