Sandro Reiter

vCard und IT-Blog

Cloud: Was ist das eigentlich?

Cloud, dieses Wort ist in aller Munde. Viele wissen gar nicht was dahinter steckt und sind daher skeptisch. Genau hier liegt das Problem: Die Angst der Menschen vor Veränderung und der Ungewissheit.

Dieser Beitrag soll Klarheit bringen was “die Cloud” eigentlich ist und als kleinen Spoiler vorab: Viele nutzen dieses Modell bereits in abgespeckter Form und das seit Jahren, nur ohne diesen “Cloud”-Begriff!

 

Also, was ist nun diese Cloud? Eine gute Definition findet sich (natürlich) in Microsofts Repertoire:

Cloud Computing ist die Bereitstellung von Computingdiensten (Server, Speicher, Datenbanken, Netzwerkkomponenten, Software, Analyseoptionen und mehr) über das Internet („die Cloud“). Unternehmen, die diese Computingdienste anbieten, werden als Cloudanbieter bezeichnet und stellen Cloud Computing-Dienste, üblicherweise basierend auf der jeweiligen Nutzung, in Rechnung.

Kurz sacken lassen…

Und jetzt denken wir uns die ganzen “Cloud”s in diesem Zitat mal weg. Wir werden feststellen, das es solche Anbieter – zumindest in ihren Nischen – schon deutlich länger gibt als den Cloud-Hype.

 

Als Beispiel fallen mir dazu Website-Hoster ein:
Sämtliche Homepage-Baukasten-Anbieter haben bereits vor Jahrzehnten mit DIY-Homepages auf dieses Modell gesetzt. Das Motto war immer: “Bezahle X Euro im Monat und wir stellen dir eine Webserver Instanz für deinen Webauftritt bereit.” Hosted E-Mail-Lösungen, sind da nichts anderes. Und wer kennt nicht Dropbox, Google Drive, iCloud und Co. als Cloudspeicher-Dienste?

 

Aber was ist jetzt der nennenswerte Mehrwert des größten Public Cloud Anbieters? Mit einem Milliarden-Invest hat Microsoft es geschafft, ein riesiges und ständig wachsendes Portfolio an Produkten aus der Hand von einem einzigen Anbieter als Cloud-Dienste bereitzustellen: Exchange Online als E-Mail-Lösung, SharePoint Online als Intranet-Lösung, Azure Web Apps als Webhosting-Lösung, Azure Compute zum VM-Hosting und viele weitere Services.

Die Cloud ist somit nichts anderes als ein oder mehrere Rechenzentren des jeweiligen Anbieters, deren Ressourcen gegen eine Gebühr dem Kunden zur Verfügung gestellt werden. Und schon klingt’s doch gar nicht mehr so schlimm, oder?

 

Wer hat immer noch Angst vor’m schwarzen Mann?
Der eine oder andere kennt vielleicht diese Firma aus Redmond, mit ca. 120.000 Mitarbeitern und knapp 90 Milliarden US Dollar Umsatz. Warum sollte man heutzutage noch einen Riesenbatzen Geld in eigene Hardware, Software und Security investieren, wenn sich viele tausend schlaue Köpfe mit dem nötigen Kleingeld auf der hohen Kante darüber bereits Gedanken gemacht haben und uns dies im bequemen Abo-Modell sogar zur Verfügung stellen? Wer meint umweltfreundlicher, kosteneffizienter, performanter und vorallem sicherer eine IT-Infrastruktur betreiben zu können: Versuch’ es, aber sage nicht das ich Dich nicht gewarnt hätte.

Azure: Ein Blick hinter die Kulissen

Wer wollte schon immer einmal Mäuschen spielen und mehr über Microsofts Cloud Plattform Azure erfahren? Einen spannenden Einblick über den Milliarden-Invest von Microsoft bietet das nachfolgende Video aus der zweiten Jahreshälfte 2016.

 

Seitdem stehen die Uhren bei Microsoft natürlich nicht still. Zum heutigen Zeitpunkt steht die Cloud Plattform auf 54 globalen Rechenzentren zur Verfügung, 10 davon befinden sich derzeit in der Bauphase bzw. Fertigstellung – 2 davon auch in Deutschland!

Persönliche Besuche in den Mega-Rechenzentren sind nahezu unmöglich zu bekommen. Wer trotzdem einmal hinter die Kulissen schauen möchte, dem kann ich einen virtuellen Rundgang sehr empfehlen: Tour starten.

Azure Automation: Anfordern eines Ad-Hoc SAS Tokens

Wer mit Azure Storage arbeitet, kommt über kurz oder lang nicht daran vorbei die Verarbeitung von Dateien zu automatisieren. Was über die Web-UI so einfach geht, ist via PowerShell nicht ganz so trivial.

In einem Container mit dem AccessLevel “private” wird ein SAS Token benötigt um auf die Dateien zuzugreifen und mit diesen zu arbeiten.

Wie genau dieser Token in einem Azure Automation PowerShell RunBook angefordert werden kann, zeigt das folgende Skript:

#define parameter
Param(
    [Parameter(Mandatory=$True)]
    [string]$AzureAutomationAccount,

    [Parameter(Mandatory=$True)]
    [string]$FileWebUrl,

    [Parameter(Mandatory=$True)]
    [string]$StorageAccountName,

    [Parameter(Mandatory=$True)]
    [string]$StorageResourceGroup,

    [Parameter(Mandatory=$True)]
    [string]$StorageContainerName,

    [Parameter(Mandatory=$True)]
    [string]$BlobName,

    [Parameter(Mandatory=$false)]
    [ValidateSet("r","rw","rcw","rwcd")] 
    [string]$AccessRights = "r",
    
    [Parameter(Mandatory=$false)]
    [int]$TokenLifeTime = 2
)

#get credentials from Azure Automation vault
$myCredential = Get-AutomationPSCredential -Name $AzureAutomationAccount

#sign in to AzureRM
Login-AzureRmAccount -Credential $myCredential

#get current utc time for sas token starttime and expiration
$TokenStartTime = Get-Date
$TokenStartTime = $TokenStartTime.ToUniversalTime()
$TokenEndTime = $TokenStartTime.AddHours($TokenLifeTime)

#get storageaccount key, set context to container and request adhoc SAS token
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $StorageResourceGroup -AccountName $StorageAccountName).Value[0]
$StorageContext = New-AzureStorageContext $StorageAccountName -StorageAccountKey $StorageAccountKey
$SASKey = New-AzureStorageBlobSASToken -Protocol HttpsOnly -Container $StorageContainerName -Blob $BlobName -Context $StorageContext -Permission $AccessRights -StartTime $TokenStartTime -ExpiryTime $TokenEndTime

#join file-uri and SAS token to full download uri
$FullUri = "$FileWebUrl$SASKey"

 

Sobald das Skript in einem RunBook hinterlegt ist, können die Parameter übergeben und das Snippet im Azure Automation Kontext ausgeführt werden.

 

Das Skript verarbeitet die Datei nicht, sondern fordert nur den Token an. Die komplette URL (Blob+Token), welche am Ende als Variable ($FullUri) bereitsteht, kann für Dateioperationen, bspw. der Import des Dateiinhalts in eine Variable, verwendet werden solange der SAS-Token gültig ist.

#import csv content into variable
$content = ConvertFrom-Csv -Delimiter ";" (Invoke-WebRequest -Uri $FullUri).ToString()

Exchange Online: Auf welche Shared Mailboxes hat ein User Zugriff?

Erst kürzlich erhielt ich einen Anruf mit der Frage: “Sehe ich eigentlich irgendwo auf welche Shared Mailboxes ich Zugriff habe?”

Beunruhigende Stille machte sich auf meiner Seite der Leitung breit…

“Da muss ich nachsehen”, sagte ich und sicherte zu mich zeitnah zu melden.

Mir waren die Möglichkeiten bewusst die ein Nutzer hat um die Mitgliedschaft in O365 Gruppen und Verteilerlisten einzusehen, aber die geteilten Postfächer anzeigen auf die man selbst Zugriff hat, suchte ich vergeblich.

 

Lange Rede, kurzer Sinn: Der Kunde wartet – let’s script it!

Das nachfolgende Skript muss der Exchange-Admin ausführen, aber es geht allemal schneller als sich durch alle Shared Mailboxes zu klicken und nachzusehen wo der User berechtigt ist.

$usertosearch = "max@muster.de"
$sharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox

foreach ($box in $sharedMailboxes) 
{ 
    $perms = Get-MailboxPermission -Identity $box.Alias

    foreach ($perm in $perms)
    { 
        if(
            $perm.User -like $usertosearch) 
            { 
                write-host $box.PrimarySmtpAddress 
            } 
    }
}

 

Citrix Cloud: Verwaiste Managed-Disks in Azure

Vor Kurzem habe ich in einem Kunden-Tenant eine ungewöhnlich hohe Anzahl an verwalteten Datenträgern entdeckt (>8000). Die Datenträger stammten alle von Worker-VMs welche durch den MCS in der Citrix Cloud erstellt wurden.

Auf der Suche nach der Ursache des Problems bin ich nicht wirklich fündig geworden und habe während meiner Recherche ebenfalls den Citrix Support hinzugezogen, von dem ich eine spannende Antwort erhalten habe.

 

On, or about, 3/21/2018, Citrix was notified that customers in certain Azure regions were unable to use the products listed earlier. Preliminary investigations showed that the Azure infrastructure was rejecting booting VMs which did not have an identity disk of at least 1GB in size. As a result of this denial, the cloned OS (system) disk may be left around as an “orphaned” disk in your Azure subscription, leading to an unexpected large number of disks in your storage resource groups.

 

Was zusammenfassend bedeutet, das Azure VMs am Starten gehindert hat, wenn diese nicht mindestens eine 1 GB große “Identity disk” besaßen. Als Resultat hinterließ der MCS eine besitzlose Managed Disk. Je nachdem, wann man dieses Problem bemerkt hat und wie viele Worker provisioniert sind, wurden entsprechend viele Datenträger in Azure hinterlassen.

 

On, or about, 4/6/2018, the Azure infrastructure began reporting the size of the identity disks as 1GB, thereby allowing your workloads to boot successfully thereafter. This temporary outage may have gone unnoticed but you may still be affected. While our investigation is still underway, we felt it was important that we reach out to you today in order for you to remove these unwanted orphaned disks from your Azure subscription to avoid overage charges.

 

Der Fehler wurde, relativ zeitnah, behoben und der Start der Maschinen ist wieder, so wie man es eigentlich erwartet, möglich.

 

Citrix legt betroffenen Kunden nahe, die verwaisten Datenträger aus Azure zu entfernen. Vorher sollte man sich aber an den Azure Support wenden um die dadurch entstandenen Kosten gutschreiben zu lassen. Das notwendige Support-Ticket ist am besten gleich aus dem betroffenen Azure Tenant zu erstellen.

Azure: S2S-VPN und die IPSec-Policy

Wer kennt es nicht: Eingefleischte Netzwerkadmins, womöglich sogar angestellt bei einem Rechenzentrums-Dienstleister, die alles rund um die Cloud als total unsicher und sowieso überflüssig einschätzen (und in Wahrheit vermutlich nur Angst um den Ast haben, auf dem sie sitzen) meckern über alles wo Microsoft dran steht oder drin ist.

Da ist es doch ein willkommener Aufhänger, wenn eine VPN Verbindung zu Azure nicht die Anforderungen abbilden kann, welche das NOC gern hätte.

Aber falsch gedacht! Was viele nicht wissen: Es ist möglich die Site-to-Site IPSec-Richtlinie einer VPN-Verbindung mithilfe des Azure CLI und des AzureRM PowerShell-Moduls an die gewünschten Anforderungen anzupassen.

 

Um die Richtlinie zu konfigurieren, müssen wir uns zunächst in den Azure Resource Manager einloggen, das gelingt uns wie folgt:

$credentials = Get-Credential

Login-AzureRmAccount -Credential $credentials

$subscriptionId = ( Get-AzureRmSubscription | Out-GridView -Title "Select an Azure Subscription ..." -PassThru).SubscriptionId
Select-AzureRmSubscription -SubscriptionId $subscriptionId

 

Anschließend können wir mit dem nachfolgenden Skript die Parameter der IPSecPolicy festlegen und damit die VPN Verbindung zum VPN-Gateway auf “der anderen Seite” aufbauen.

$rg = "GatewayResourceGroup"

$policy = New-AzureRmIpsecPolicy -IkeEncryption AES256 -IkeIntegrity SHA1 -DhGroup DHGroup2 -IpsecEncryption AES256 -IpsecIntegrity SHA1 -PfsGroup None -SALifeTimeSeconds 27000 -SADataSizeKilobytes 1024000

$vpngw = Get-AzureRmVirtualNetworkGateway -Name "GW1"  -ResourceGroupName $rg
$localvpngw = Get-AzureRmLocalNetworkGateway  -Name "Local-GW1" -ResourceGroupName $rg

New-AzureRmVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName $rg -VirtualNetworkGateway1 $vpngw -LocalNetworkGateway2 $localvpngw -Location "Azure Region" -ConnectionType IPsec -IpsecPolicies $policy -SharedKey 'PSK' -RoutingWeight 0

Welche Werte von Azure unterstützt werden, können wir unter folgendem Link in den Microsoft Docs nachlesen:

https://docs.microsoft.com/de-de/azure/vpn-gateway/vpn-gateway-ipsecikepolicy-rm-powershell

 

Um zu prüfen, ob die Einstellungen korrekt übernommen wurden, führen wir  folgendes Code-Snippet aus:

$rg = "GatewayResourceGroup"
$con = Get-AzureRmVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName $rg

Write-Output $con.IpSecPolicies

 

Nach ein paar Augenblicken und korrekter Konfiguration auf beiden Seiten, steht der VPN Tunnel.