Azure storage account

Logs

Deux types de logs sont activables :

  • Diagnostic settings : Permet d’envoyer les logs dans un Log Analytics
  • Diagnostic settings (classic) : Permet d’envoyer les logs dans le répertoire $logs.

Selon MS, les logs de pre-auth en échec ne sont pas toujours envoyés dans le répertoire $logs.

« Classic Storage Analytics logging to $logs container is also supported, but note that not all pre-auth connection attempt failures are logged there. »

Il est recommandé de bien penser à activer la suppression automatique des logs pour éviter de la facturation supplémentaire.

Doc supplémentaire : https://learn.microsoft.com/en-us/answers/questions/1163494/where-to-find-connection-logs-for-azure-blob-stora

Tarification

https://azure.microsoft.com/en-us/pricing/details/storage/blobs

Cloisonnement des connexions

Connexion depuis un PowerBI

Connexion via Access Key :

  • Dans Settings > Configuration : « Allow storage account key access : Enabled »
  • Dans Networking, vu que la connexion est intra-Azure, il n’est pas nécessaire d’ouvrir de flux vu que la connexion se fait dans la même région (cf lien ci-dessous), passer en Disabled l’accès.

https://www.datalineo.com/post/securing-azure-storage-for-a-power-bi-implementation : Vrai ou faux ? Test KO

Connexion depuis Automation

Connexion via RBAC :

  • Dans Settings > Configuration : « Allow storage account key access : Disabled »
  • Dans Networking, vu que la connexion passe par Internet (forcément), autoriser l’accès via « Enabled from all networks »

Connexion via VM on-prem

Le flux est : VM -> Express Route -> Azure Private Link (Private Endpoint) -> Storage account

  • Créer un Private Endpoint et ajouter l’entrée dans Private DNS Zones
  • Dans Settings > Configuration : « Allow storage account key access : Enabled »
  • Dans Networking, vu que la connexion passe par l’Express Route, autoriser l’accès via « Enabled from selected networks and IP addresses » et préciser la carte réseau du Private Endpoint

Cycle de vie des données

Suppression automatique des données ? Automation ou Azure Fonction – non maitrisé

Test création Lifecycle Management

https://thebernardlim.com/azure-storage-blob-delete-files-powershell

De MS :

#1. Blob Lifecycle Management (Recommended): Azure Storage provides a feature called Blob Lifecycle Management. With this, you can define policies to automatically delete blobs based on criteria such as their age (e.g., older than 30 days). Go to your Azure Storage Account.Navigate to Blob Service > Lifecycle Management. Define a policy to delete blobs older than your desired threshold (e.g., 14 days). Azure Storage will handle the deletion for you.

#2. Azure Functions: You can create an Azure Function that periodically checks each folder and deletes files older than a specified duration. Here’s a high-level approach: Create a Timer Trigger function. Fetch the list of blobs from the corresponding Blob Container. Check the LastModified property of each blob. Delete the blobs that don’t meet your criteria (e.g., older than 14 days).

Envoyer un fichier

Envoyer un fichier depuis une VM on-prem vers un storage account à travers un private endpoint :

#Our source File:
$file = "D:\Scheduled_scripts\Import_TelephoneNumber\xxx.csv"

#Get the File-Name without path
$name = (Get-Item $file).Name

#The target URL wit SAS Token
$uri = "https://xxx.privatelink.blob.core.windows.net/test/$($name)?sp=racwdli&st=2024-09-xxxxx"
#Define required Headers
$headers = @{
    'x-ms-blob-type' = 'BlockBlob'
}
#Upload File...
Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -InFile $file

Récupérer un fichier

(sans modules PS)

$BlobUri = 'https://xxx.privatelink.blob.core.windows.net/test/licencesm365.csv'
$Sas = '?sp=xxxx'
$OutputPath = 'C:\Temp\licencesm365.csv'
$FullUri = "$BlobUri$Sas"
(New-Object System.Net.WebClient).DownloadFile($FullUri, $OutputPath)