Azure Archive - Daniel Gutermuth https://danielgutermuth.de/tag/azure/ IT Blog Sun, 16 Oct 2022 12:47:37 +0000 de hourly 1 Azure Files – Hybrid AD-Authentifizierung für Azure File Shares https://danielgutermuth.de/microsoft/microsoft365/azure/azure-files-hybrid-ad-authentifizierung-fur-azure-file-shares/ Sun, 16 Oct 2022 00:55:38 +0000 https://danielgutermuth.de/?p=1484 Dieses Beitrag beschreibt den Ablauf der Aktivierung der lokalen AD Authentifizierung für Azure Files. Damit ist es möglich, dass sich Benutzer mit ihren gewohnten AD-Credentials [...]

Der Beitrag Azure Files – Hybrid AD-Authentifizierung für Azure File Shares erschien zuerst auf Daniel Gutermuth.

]]>
Dieses Beitrag beschreibt den Ablauf der Aktivierung der lokalen AD Authentifizierung für Azure Files. Damit ist es möglich, dass sich Benutzer mit ihren gewohnten AD-Credentials unkompliziert bei Azure Files authentifizieren können und damit Zugriff auf dortige Dateifreigaben erhalten (Single-Sign-On). Eine Änderung der lokalen AD-Umgebung ist nicht notwendig. Dabei ist es egal, ob sich Benutzer in der lokalen oder in der Azure Umgebung aufhalten.

Generelle Voraussetzungen:

  • Eine existierende AD-Umgebung welche korrekt mittels Azure-AD-Sync nach Azure AD synchronisiert
  • Mindestens einen der Domäne beigetretenen Computer
  • Regionale Verfügbarkeit des Dienstes
  • Sicherheit darüber, dass Azure Files prinzipiell funktioniert. Als Test kann eine Dateifreigabe mittels Speicherkontenschlüssel erstellt und getestet werden. Diese muss funktionieren!

Der Beitrag ist extra so kurz wie möglich gehalten und beschreibt nur die wichtigsten Schritte. Weitere, sowie tiefgründigere Informationen, sind der Microsoft Dokumentation zu entnehmen.

Lösung

Vorhandenes Speicherkonto auswählen oder ein neues erstellen.

Das Archiv „AzureFilesHybrid“ von GitHub herunterladen und entpacken.

Hinweis: Dies und das Nachfolgende auf einem Computer durchführen, welcher der lokalen Domäne beigetreten ist. Außerdem sicherstellen, dass ein AD-Konto verwendet wird, welches mindestens das Recht besitzt einen Dienstbenutzer (service log on account) zu erstellen.

PowerShell-Terminal öffnen und folgende Befehle ausführen und bestätigen:

Install-Module -Name az -AllowClobber -Scope CurrentUser
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

In der PowerShell-Sitzung in den Ordner des entpackten „AzureFilesHybrid“ Archives wechseln und folgende Befehle ausführen und bestätigen:

.\CopyToPSPath.ps1
Import-Module -Name AzFilesHybrid -Verbose

Eine Verbindung mit dem Azure-Online-Dienst aufbauen. Dazu mit dem gewünschten Azure-Konto anmelden und sicherstellen, dass das korrekte Abo ausgewählt wurde. Sollte das falsche Abo vorausgewählt sein, kann es mit einem optionalen Befehl gewechselt werden.

Connect-azaccount

Optional bei falschem Abo:
Select-AzSubscription -SubscriptionId "ID"

Erstellung und Zuweisung eines Service-Benutzers zur Authentifizierung des Azure Speicherkontos. Dabei eine OU angeben unter welcher der Benutzer erstellt werden soll.

Hinweis: Darauf achten, dass das Passwort des Dienstbenutzers nicht abläuft! (Sollte „Kennwort läuft nie ab“ nicht verwendet werden)

Join-AzStorageAccountForAuth -ResourceGroupName "Ressourcengruppenname" -Name "Speicherkontoname" -Domain "lokale Domäne" -DomainAccountType ServiceLogonAccount -OrganizationalUnitDistinguishedName "Gewünschte OU"

Anschließend kann der erstellte Benutzer in der angegebenen OU des ADs gefunden werden.

Als nächstes sollte die Konfiguration überprüft werden. Dazu ggf. ein zweites PowerShell-Fenster öffnen und folgende Informationen auslesen lassen und temporär merken.

$domainInformation = Get-ADDomain
$domainGuid = $domainInformation.ObjectGUID.ToString()
$domainName = $domainInformation.DnsRoot
$domainGuid
$domainName

Die nachfolgenden Befehle in das erste PowerShell-Fenster eingeben und prüfen, ob die angezeigten Informationen passen.

$storageacccount = Get-AzStorageAccount -ResourceGroupName "Ressourcengruppenname" -Name "Speicherkontoname"
$storageacccount | Get-AzStorageAccountKey -ListKerbKey | Format-Table Keyname
# Es sollten Schlüsselnamen angezeigt werden
$storageacccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions
# Ergebnis sollte "AD" sein
$storageacccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties
# Die informationen sollten mit denen aus dem zweiten PowerShell-Fenster übereinstimmen(DomainName und DomainGUID)

Über das Azure-Portal können, in der Konfiguration des Speicherkontos, die Freigabeberechtigungen (via IAM) vorgenommen werden. Folgende Rollen sind hierfür relevant:

NameBeschreibung
Leser für Speicherdateidaten-SMB-FreigabeErmöglicht Lesezugriff auf eine Azure-Dateifreigabe über SMB.
Mitwirkender für Speicherdateidaten-SMB-FreigabeErmöglicht Lese-, Schreib- und Löschzugriff in Azure Storage-Dateifreigaben über SMB.
Mitwirkender mit erhöhten Rechten für Speicherdateidaten-SMB-FreigabeErmöglicht den Zugriff zum Lesen, Schreiben, Löschen und Ändern von NTFS-Berechtigungen in Azure Storage-Dateifreigaben über SMB.

Hinweis: Alternativ können Berechtigungen auch direkt über die Freigabe im Windows-Explorer (ACL) vorgenommen werden.

Zuletzt den Azure Fileshare via CMD mounten damit er über den Explorer verwendet werden kann.

net use LAUFWERKBUCHSTABE: \\SPEICHERKONTONAME.file.core.windows.net\FREIGABENAME

Hinweis: Die Eingabeaufforderung muss als „normaler“ Benutzer ausgeführt werden und nicht als Administrator!

Der Beitrag Azure Files – Hybrid AD-Authentifizierung für Azure File Shares erschien zuerst auf Daniel Gutermuth.

]]>
Veeam – Azure Blob Storage erstellen und anbinden https://danielgutermuth.de/veeam/veeam-azure-blob-storage-erstellen-und-anbinden/ Sat, 04 Dec 2021 13:38:16 +0000 https://danielgutermuth.de/?p=367 In Veeam Backup and Replication ist es möglich ein Azure Blob Storage einzubinden. Dieser Storage kann beispielsweise als Archiv für die Datensicherung verwendet werden. Lösung [...]

Der Beitrag Veeam – Azure Blob Storage erstellen und anbinden erschien zuerst auf Daniel Gutermuth.

]]>
In Veeam Backup and Replication ist es möglich ein Azure Blob Storage einzubinden. Dieser Storage kann beispielsweise als Archiv für die Datensicherung verwendet werden.

Lösung

Im Azure Portal anmelden, in die Speicherkonten wechseln und dort auf Erstellen klicken.

Das Abonnement wählen und eine Ressourcengruppe erstellen (in diesem Beispiel „Backup“).

Einen Speicherkontenname vergeben, sowie die Region, Leistung und Redundanz wählen.

Im Reiter Erweitert sicherstellen, dass Zugriff auf Speicherschlüssel aktivieren ausgewählt ist.

Unter Blobspeicher, die Zugriffsebene auf Kalt setzen.

Hinweis: Heiß ist ebenfalls möglich, kostet aber mehr. Für reine Backups ist Kalt, in den meisten Fällen, die Richtige Wahl.

Im Reiter Netzwerk ist es Best-Practice die Konnektivitätsmethode nicht öffentlich zu schalten. Aus Vereinfachungsründen wird sie hier auf dem Standard belassen.

Die Punkte im Reiter Datenschutz können belassen werden. Anschließend auf Überprüfen + Erstellen klicken.

Wurden keine Konfigurationsfehler gefunden, auf Erstellen klicken.

Nachdem die Bereitstellung abgeschlossen wurde, in die Ressource wechseln und unter Datenspeicher auf den Punkt Container klicken und einen Container erstellen. Dazu einen Namen vergeben und mit Erstellen bestätigen.

Als letzter Punkt in Azure muss der Zugriffsschlüssel für das Speicherkonto zwischengespeichert werden. Dazu in den Reiter Sicherheit + Netzwerkbetrieb und auf Zugriffsschlüssel klicken. Über Schlüssel anzeigen den Schlüssel für key1 zwischenspeichern.

Hinweis: Am Ende den zwischengespeicherten Zugriffsschlüssel wieder löschen und nicht weitergeben!

In Veeam Backup and Replication wechseln und durch den Reiter Backup Infrastructure einen Rechtsklick auf den Punkt Backup Repository machen und Add backup repository wählen. Anschließend bis zu Azure Blob Storage durchklicken.

Einen Namen wählen.

Als nächstes müssen die Zugangsdaten für den Zugriff auf das Azure Speicherkonto mit Add hinzugefügt, sowie die passende Region ausgewählt werden.

Unter Account den Namen des Speicherkontos angeben, wie es in Azure angelegt wurde, sowie unter Shared Key den zwischengespeicherten Zugriffsschlüssel eintragen. Mit OK bestätigen und weiter mit Next.

Als nächste muss der zuvor in Azure erstellte Continer ausgewählt (hier „veeam“) und anschließend bei Folder über Browse ein neuer Ordner im Container erstellt werden. Mit OK bestätigen und mit Apply übernehmen.

Nach Abschluss wird der Azure Blob Speicher unter Backup Respository angezeigt und kann z.B. in einem Backup-Job eingebunden werden.

Der Beitrag Veeam – Azure Blob Storage erstellen und anbinden erschien zuerst auf Daniel Gutermuth.

]]>
Azure – Azure VM Festplatte verkleinern mit PowerShell https://danielgutermuth.de/microsoft/microsoft365/azure/azure-azure-vm-festplatte-verkleinern-mit-powershell/ Sat, 04 Dec 2021 12:45:00 +0000 https://danielgutermuth.de/?p=341 In diesem Beitrag beschäftigen wir uns mit der Verkleinerung von Datenträgern bei Azure VMs. Azure VMs werden standardmäßig (meistens) mit einem mindestens 128GB Datenträger ausgeliefert. [...]

Der Beitrag Azure – Azure VM Festplatte verkleinern mit PowerShell erschien zuerst auf Daniel Gutermuth.

]]>
In diesem Beitrag beschäftigen wir uns mit der Verkleinerung von Datenträgern bei Azure VMs.

Azure VMs werden standardmäßig (meistens) mit einem mindestens 128GB Datenträger ausgeliefert. Für Tests oder andere Anwendungsfälle kann dies Speicherplatz sein, der zwar nicht benötigt wird, aber trotzdem bezahlt werden muss. Wird bei den VMs auch noch SSD-Speicher eingesetzt, kann dies mit erheblichen Kosten verbunden sein.

Da Azure die Verkleinerung innerhalb des Azure Portals nicht unterstützt, muss auf eine andere Methode zurückgegriffen werden.

Mit den hier gezeigten Schritten ist es möglich den Betriebssystemdatenträger zu verkleinern und so bis zu 25% an Kosten einzusparen.

Voraussetzungen

Azure: VM Contributor und Storage Account Contributor, sowie Zugriffsrechte auf Managed Disks

Hinweis: Alles auf eigene Gefahr!

Lösung

Im ersten Schritt auf die Virtuelle Azure VM aufschalten.

Über die Systemsteuerung oder Rechtsklick auf den Start-Button die Datenträgerverwaltung öffnen. In der Datenträgerverwaltung die Windows-Partition mit Rechtsklick anwählen und auf Volumen verkleinern klicken.

Im nächsten Fenster muss der zu verkleinernde Speicherplatz in MB angegeben werden.

Hier kommt es darauf an, welche Festplattengröße nach der Verkleinerung bestehen soll. In diesem Beispiel möchte ich aus einem 128GB Volumen ein maximal 32GB Volumen machen. Dazu muss der zu verkleinernde Speicherplatz mit 100000MB ( ca. 100GB) angegeben werden. Als Gesamtspeicherplatz nach der Verkleinerung werden nun 29547 MB (ca. 29GB) angegeben, was in das angestrebte 32GB Budget passt. Mit verkleinern bestätigen.

Hinweis: Für die Speicherplatzkalkulation sind auch andere Partitionen des Datenträgers wie „System reserviert“ mit anzurechnen. Der Datenträger des temporären Speichers ist nicht relevant.

Nach der Verkleinerung sollte die Windows-Partition auf die angestrebte Speichergröße verkleinert worden und ein Block mit nicht zugewiesenem Speicherplatz entstanden sein.

Hinweis: Das war es leider noch nicht. Microsoft wird immer noch die kompletten 128GB in Rechnung stellen, da uns der Speicherplatz in der Theorie bereitstehen würde. Es muss also nicht nur der Speicherplatz auf Windows-Ebene angepasst werden, sondern auch auf Azure Infrastruktur-Ebene. In diesem Fall soll aus einer physikalischen 128GB Festplatte eine 32GB Festplatte werden.

Die VM herunterfahren.

In das Azure Portal gehen und die Übersichtsseite der virtuellen Maschine öffnen.

Die VM dort beenden.

Warten bis die Zuordnung aufgehoben wurde.

Anschließend von der VM-Übersichtsseite in den Reiter Datenträger wechseln und dort auf den Betriebssystemdatenträger klicken.

In diesem Fenster in den Punkt Eigenschaften wechseln und den Link der Ressourcen-ID zwischenspeichern.

Als letzte Information wird der Abo-Name oder die Abo-ID benötigt. Beide Informationen können über Abonnements herausgefunden werden.

Nachdem alle Vorbereitungen getroffen und alle nötige Informationen zusammengetragen wurden, geht es nun an die Umsetzung. Als Hilfe dient uns hierbei ein vollautomatisches PowerShell-Script

Was macht dieses Script? :

  • Erstellung eines temporären Speicherkontos
  • Erstellung eines temporären Datenträgers in diesem Speicherkonto
  • Kopieren des Bestandsdatenträgers in das temporäre Speicherkonto
  • Speicherplatzverkleinerung des kopierten Bestandsdatenträgers
  • Konvertierung zu einer Managed Disk
  • Austausch des alten Bestandsdatenträgers mit dem neuen Datenträger
  • Löschen des temporären Speicherkontos, sowie der darin befindlichen, temporären Datenträgern
# Variables
$DiskID = "DISKID" #Hier die Ressourcen-ID eintragen
$VMName = "VMNAME" #Hier den VM-Namen eintragen
$DiskSizeGB = 32 #Hier die gewünschte Speichergröße eintragen
$AzSubscription = "ABONAME" #Hier den Abo-Namen oder die Abo-ID eintragen
$Sku = "Standard_LRS" #Zur Auswahl: Standard_LRS (HDD), StandardSSD_LRS (SSD) Premium_LRS (Premium SSD)

# Script
# Provide your Azure admin credentials
Connect-AzAccount

#Provide the subscription Id of the subscription where snapshot is created
Select-AzSubscription -Subscription $AzSubscription

# VM to resize disk of
$VM = Get-AzVm | ? Name -eq $VMName

#Provide the name of your resource group where snapshot is created
$resourceGroupName = $VM.ResourceGroupName

# Get Disk from ID
$Disk = Get-AzDisk | ? Id -eq $DiskID

# Get VM/Disk generation from Disk
$HyperVGen = $Disk.HyperVGeneration

# Get Disk Name from Disk
$DiskName = $Disk.Name

# Get SAS URI for the Managed disk
$SAS = Grant-AzDiskAccess -ResourceGroupName $resourceGroupName -DiskName $DiskName -Access 'Read' -DurationInSecond 600000;

#Provide the managed disk name
#$managedDiskName = "yourManagedDiskName" 

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.
#$sasExpiryDuration = "3600"

#Provide storage account name where you want to copy the snapshot - the script will create a new one temporarily
$storageAccountName = "shrink" + [system.guid]::NewGuid().tostring().replace('-','').substring(1,18)

#Name of the storage container where the downloaded snapshot will be stored
$storageContainerName = $storageAccountName

#Provide the key of the storage account where you want to copy snapshot. 
#$storageAccountKey = "yourStorageAccountKey"

#Provide the name of the VHD file to which snapshot will be copied.
$destinationVHDFileName = "$($VM.StorageProfile.OsDisk.Name).vhd"

#Generate the SAS for the managed disk
#$sas = Grant-AzureRmDiskAccess -ResourceGroupName $resourceGroupName -DiskName $managedDiskName -Access Read -DurationInSecond $sasExpiryDuration

#Create the context for the storage account which will be used to copy snapshot to the storage account 
$StorageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName -SkuName $Sku -Location $VM.Location
$destinationContext = $StorageAccount.Context
$container = New-AzStorageContainer -Name $storageContainerName -Permission Off -Context $destinationContext

#Copy the snapshot to the storage account and wait for it to complete
Start-AzStorageBlobCopy -AbsoluteUri $SAS.AccessSAS -DestContainer $storageContainerName -DestBlob $destinationVHDFileName -DestContext $destinationContext
while(($state = Get-AzStorageBlobCopyState -Context $destinationContext -Blob $destinationVHDFileName -Container $storageContainerName).Status -ne "Success") { $state; Start-Sleep -Seconds 20 }
$state

# Revoke SAS token
Revoke-AzDiskAccess -ResourceGroupName $resourceGroupName -DiskName $DiskName

# Emtpy disk to get footer from
$emptydiskforfootername = "$($VM.StorageProfile.OsDisk.Name)-empty.vhd"

# Empty disk URI
#$EmptyDiskURI = $container.CloudBlobContainer.Uri.AbsoluteUri + "/" + $emptydiskforfooter

$diskConfig = New-AzDiskConfig `
    -Location $VM.Location `
    -CreateOption Empty `
    -DiskSizeGB $DiskSizeGB `
    -HyperVGeneration $HyperVGen

$dataDisk = New-AzDisk `
    -ResourceGroupName $resourceGroupName `
    -DiskName $emptydiskforfootername `
    -Disk $diskConfig
    

$VM = Add-AzVMDataDisk `
    -VM $VM `
    -Name $emptydiskforfootername `
    -CreateOption Attach `
    -ManagedDiskId $dataDisk.Id `
    -Lun 63

Update-AzVM -ResourceGroupName $resourceGroupName -VM $VM

$VM | Stop-AzVM -Force


# Get SAS token for the empty disk
$SAS = Grant-AzDiskAccess -ResourceGroupName $resourceGroupName -DiskName $emptydiskforfootername -Access 'Read' -DurationInSecond 600000;

# Copy the empty disk to blob storage
Start-AzStorageBlobCopy -AbsoluteUri $SAS.AccessSAS -DestContainer $storageContainerName -DestBlob $emptydiskforfootername -DestContext $destinationContext
while(($state = Get-AzStorageBlobCopyState -Context $destinationContext -Blob $emptydiskforfootername -Container $storageContainerName).Status -ne "Success") { $state; Start-Sleep -Seconds 20 }
$state

# Revoke SAS token
Revoke-AzDiskAccess -ResourceGroupName $resourceGroupName -DiskName $emptydiskforfootername

# Remove temp empty disk
Remove-AzVMDataDisk -VM $VM -DataDiskNames $emptydiskforfootername
Update-AzVM -ResourceGroupName $resourceGroupName -VM $VM

# Delete temp disk
Remove-AzDisk -ResourceGroupName $resourceGroupName -DiskName $emptydiskforfootername -Force;

# Get the blobs
$emptyDiskblob = Get-AzStorageBlob -Context $destinationContext -Container $storageContainerName -Blob $emptydiskforfootername
$osdisk = Get-AzStorageBlob -Context $destinationContext -Container $storageContainerName -Blob $destinationVHDFileName

$footer = New-Object -TypeName byte[] -ArgumentList 512
write-output "Get footer of empty disk"

$downloaded = $emptyDiskblob.ICloudBlob.DownloadRangeToByteArray($footer, 0, $emptyDiskblob.Length - 512, 512)

$osDisk.ICloudBlob.Resize($emptyDiskblob.Length)
$footerStream = New-Object -TypeName System.IO.MemoryStream -ArgumentList (,$footer)
write-output "Write footer of empty disk to OSDisk"
$osDisk.ICloudBlob.WritePages($footerStream, $emptyDiskblob.Length - 512)

Write-Output -InputObject "Removing empty disk blobs"
$emptyDiskblob | Remove-AzStorageBlob -Force


#Provide the name of the Managed Disk
$NewDiskName = "$DiskName" + "-new"

#Create the new disk with the same SKU as the current one
$accountType = $Disk.Sku.Name

# Get the new disk URI
$vhdUri = $osdisk.ICloudBlob.Uri.AbsoluteUri

# Specify the disk options
$diskConfig = New-AzDiskConfig -AccountType $accountType -Location $VM.location -DiskSizeGB $DiskSizeGB -SourceUri $vhdUri -CreateOption Import -StorageAccountId $StorageAccount.Id -HyperVGeneration $HyperVGen

#Create Managed disk
$NewManagedDisk = New-AzDisk -DiskName $NewDiskName -Disk $diskConfig -ResourceGroupName $resourceGroupName

$VM | Stop-AzVM -Force

# Set the VM configuration to point to the new disk
Set-AzVMOSDisk -VM $VM -ManagedDiskId $NewManagedDisk.Id -Name $NewManagedDisk.Name

# Update the VM with the new OS disk
Update-AzVM -ResourceGroupName $resourceGroupName -VM $VM

$VM | Start-AzVM

start-sleep 180
# Please check the VM is running before proceeding with the below tidy-up steps

# Delete old Managed Disk
Remove-AzDisk -ResourceGroupName $resourceGroupName -DiskName $DiskName -Force;

# Delete old blob storage
$osdisk | Remove-AzStorageBlob -Force

# Delete temp storage account
$StorageAccount | Remove-AzStorageAccount -Force

Das obere Script kann in das PowerShell-ISE kopiert, die entsprechenden Werte angepasst und dann ausgeführt werden. Für die Ausführung des Scripts werden spezielle PS-Module benötigt. Die Installation dieser Module mit Ja bestätigen.

Darauf achten, dass die Anmeldung bei Azure mit dem korrekten Konto erfolgt!

Je nach Umfang kann es eine Weile dauern, bis das Script fertig ist. Im besten Fall wurde es ohne Fehler durchlaufen.

Hinweis: Bei Fehlern empfiehlt es sich das Script Schritt-für-Schritt auszuführen.

Den Erfolg können wir über das Azure Portal verifizieren.

Im letzten Schritt wieder auf die VM aufschalten und in die Datenträgerverwaltung wechseln.

Dort finden wir u.u. einen kleinen Block mit nicht zugewiesenem Speicherplatz.

Dieser kann durch einen Rechtsklick auf die Windows-Partition mit Volumen erweitern dieser Partition hinzugefügt werden.

Nachdem der Assistent durchlaufen wurde, lässt ich auch in Windows verifizieren, dass aus einer 128GB Festplatte eine 32GB Festplatte gemacht wurde.

Als Basis der Microsoft Abrechnung wird nun eine 32 GB Festplatte zugrunde gelegt.

Der Beitrag Azure – Azure VM Festplatte verkleinern mit PowerShell erschien zuerst auf Daniel Gutermuth.

]]>