Automation von Azure-Teil 2

2014-04-26 | Toni Pohl

Weiter geht es mit der Automatisierung von Azure (siehe Teil 1). Damit Aktionen gegen Azure erfolgen können, ist zuerst eine Authorisierung erforderlich. Die Authentifizierung an Azure Active Directory (AAD) kann mit ADAL oder mit Management Certificates erfolgen.

Natürlich muss unserer App der Azure-Tenant bekannt sein und wir müssen uns an den Azure Services mit einer bekannten (gültigen) App – oder durch Verwendung von bekannten Zertifikaten - anmelden. Hier verwenden wir Management Certificates und eine Beispiel-App von der Build-Session.

Erstellen von Management Certificates

Management Certificates erlauben Client-Zugriff auf Azure Subscriptions und sind x.509 v3 Zertifikate mit mindestens 2048 Bit Key Länge, die nur einen Public Key enthalten und als .cer gespeichert sind.

Diese Zertifikate können durch eine vertraute Zertifizierungsstelle oder auch self-signed ausgestellt werden. Weitere Informationen zur Handhabung liefert MSDN: Create and Upload a Management Certificate for Azure.

Wir wollen hier die Sample-App build2014-MAML-EnablingSaaS von Brady testen. Also das Sample von GitHub downloaden und entpacken, dieses verwendet Management Certificates. Um das Demo zum Laufen zu bringen (NuGets werden nachgeladen), ist laut Kurzanleitung das Setup der Management Certificates wie folgt durchzuführen:

1. A .CER file that you'll upload to Microsoft Azure in the Management Certificates panel in the Management Portal
2. A password-protected .PFX file that you'll put into the site's folder tree.

Kurz und bündig. Hier nun die erweiterte Anleitung um dieses Sample zum Laufen zu bringen. Wir benötigen ein eigenes Zertifikat für die Management Certificates. Das wird mit der Visual Studio Commandline und Run As Admin erstellt. Das Zertifikat wird mit einem Namen versehen, etwa so (tonitest1):

makecert -sky exchange -r -n "CN=tonitest1" -pe -a sha1 -len 2048 -ss My "tonitest1.cer"

Das Zertifikat wird automatisch in den eigenen Certificate Store (My) hinzugefügt.

Das erstellte .CER File wird nun in das Azure Portal in Settings / Management Certificates upgeloadet. Das Ergebnis sieht dann so etwa aus:

image

Nach dem Upload-Vorgang wird das neue Zertifikat in der Liste angezeigt. Hier ist auch die Subscription-ID und der ausgelesene Thumbprint ersichtlich.

Wir benötigen allerdings noch ein PFX-Key File. Dieses müssen wir uns noch erstellen.

Nachdem wir das Zertifikat als Admin erstellt haben, öffnen wir nun auch MMC.exe als Admin und öffnen über File / Add/Remove Snap-In (oder CTRL+M) das Snap-In Certificates von “My User account” .

Nach kurzer Ladezeit können wir in Personal / Certificates unser eigenes erstelltes Zertifikat “tonitest1” lokalisieren. (Ok, ich muss meine Fiddler HTTPS sniffing Aktionen mal entfernen…)

image

Nun öffnen wir dessen Kontextmenü und All Tasks / Export… und wählen “Yes, export the private key” aus. Wir exportieren den Private Key in ein .PFX-FIle.

image image

Das PFX-File sollte mit einem strong password geschützt sein. Danach wird das File gespeichert. Der Wizard sollte mit der Meldung “The export was successful” enden.

Management Services verwenden

Nun wird das build2014-MAML-EnablingSaaS-Sample mit Visual Studio 2013 geöffnet. Das PFX-File kopieren wir in das App_Data-Verzeichnis:

image

Es müssen nun nur noch die eigene Subscription und die Keys in web.config eintragen.

Die eigene Subscription-ID können wir aus dem Azure Portal in Settings / Management Certificates (siehe Screenshot oben) auslesen.

image

Wenn die App gestartet wird, wird durch den HomeController in App_Code\ManagementLibraryUtilities.cs ein neues X509-Zertifikat aus den AppSettings erstellt, ebenso der Client aus der Azure-Subscription-ID.

private static X509Certificate2 GetCertificate()
{
    string certPath = HttpContext.Current.Server.MapPath(
        ConfigurationManager.AppSettings["CERTIFICATE-PATH"]);
    var x509Cert = new X509Certificate2(certPath,
        ConfigurationManager.AppSettings["CERTIFICATE-PASSWORD"]);
    return x509Cert;
}

Nach dem Start sieht die ASP.NET MVC Website dann so aus:
Es muss nur ein DNS Prefix (der Website Name) eingetragen werden.

image

Beim Anklicken von “Create SIte” erfolgt die Arbeit dann im ApiController., wo zunächst die Credentials und der Client ausgelesen werden und danach eine neue Website mit den Parametern aus der Seite erstellt wird. Der Code zum Erstellen der Azure Website sieht dann so aus:

image

Als Ergebnis erscheint im Azure Portal nach Refresh … tataaa … eine neue Website “miniblog2” – up and running!

image

Die erste Aufgabe, das Erstellen der Website – hat funktioniert. Im Sample gibt es noch weiteren Code anzusehen. Damit können coole Automatisierungen in Azure gebaut werden. Viel Spaß beim Erforschen der .NET Management Library!

In Teil 3 sehen wir uns den Zugang mit Azure PowerShell genauer an.

Artikel-Serie Quicklinks: Teil 1, 2, 3, 4

Categories: Azure, Cloud, Developer, Microsoft

Source: https://blog.atwork.at/post/Automation-von-Azure-Teil-2