Hallo @all,

[get this Article in English? use Bing Translate]

auf der letzten Konferenz und im Blogpost-Kommentar (Windows Azure – Welche Trial Account’s gibt es? (kostenloser Test Account)) gab es eine Frage, der ich mich wittment möchte.

Wie kann man eine Windows Azure Subscription teilen und einem ganzen Team zur Verfügung stellen?

Als Antwort gibt es insgesamt 2 Lösungswege.

Möglichkeit 1: weitere LiveId’s / Microsoft Account in Azure hinzufügen:

Im Silverlight basierten Azure Management Portal kann man unter “Hosted Services, Storage Accounts & CDN” unter dem Punkt "User Management” weitere LiveID’s für eine Subscription hinterlegen und berechtigen. Eine LiveID kann auch mehrere Azure Subscription verwenden. Es gibt insgesamt 2 Arten von Berechtigungsrollen in Azure: den Service Administrator und den Co-Administrator.

Der Service Adminstrator ist der direkte Ersteller und Verwalter der Subscription. Der Co-Adminstrator kann die Ressourcen der Subscription verwenden und sich im Management Portal anmelden und Ressourcen von der Subscription verwenden. Bsp: erstellen von Azure SQL Datenbankservern und Datenbanken, Erstellen von Azure virt. Maschinen.

Hier ein Beispiel wie man die Verwaltung durchführt am Beispiel von 3 Personen: Peter, Cornelia und Patrick.

  • Patrick hostet die Azure Subscription, Er bekommt die Rechnung jeden Monat geliefert und hat die Kostenkontrolle.
  • Peter und Cornelia arbeiten mit der Subscription als "Co-Administrator”  und sind reiner Techniker. 

D.h. Patrick ist der Service Administrator für die Subscription. Peter und Cornelia nutzen jeweils die Subscription und erhalten keinen Einblick in die Kostenübersicht, sind die Co-Administratoren.

Wie sieht das in der Konfiguration aus?

  1. Azure Management Portal in der Silverlight-Version starten
  2. unter Hosted Services, Storage Accounts & CDN findet man User Management
  3. Hier kann man weitere Co-Administratoren anlegen mit einer LiveId, 
  4. Die LiveID mehrere Subscriptions nutzen und entsprechende damit arbeiten

image

Ab diesen Zeitpunkt kann Peter und Cornelia jeweils eine Subscription verwenden.

image
Peter Sicht auf die Subscription.

 

Möglichkeit 2: Zugriff ermöglichen über die Management API:

In Azure gibt es eine Management API die man mit Zertifikatsbasierter Authentifikation ansprechen kann. Das klingt im ersten moment an viel Entwicklungsaufwand, ist es aber nicht, denn die Management API kann man mit den Azure PowerShell cmdlets ansprechen.

Das Szenario sieht jetzt so aus, Peter und Cornelia werden sich nicht am Azure Management Portal anmelden können da sie hier keine Berechtigung haben. Peter und Cornelia bekommen jedoch ein Zertifikat auf den Rechner eingerichtet. Damit kann Peter und Cornelia Azure Services nutzen und über PowerShell-Befehle/Scripte kann man verschiedene Services ausrollen, einrollen oder definierte Konfigurationsänderungen durchführen. Auf diese Weise kann man eine höhere Kostenkontrolle realisieren, indem Cornelia und Peter nur begrenzten Zugriff erhalten.

Das aus- & einrollen von Azure Services führt man als Self-Service aus. D.h. Peter benötigt eine Azure Ressource und kann diese mit einem “Einschaltskript” und “Ausschaltskript” selbst steuern. Es fühlt sich an wie: Computer einschalten und ausschalten, bloß schaltet man jetzt die eigenen Cloud-Ressourcen einfach ein oder aus.  Wenn den Computer ausschalten sollte dieser auch keine Kosten mehr produzieren und genauso macht man es mit den Cloud. Sind die Service ausgeschaltet dann kosten diese kein Geld mehr. Es ist sehr praktisch bei Azure Virtual Machines. Hier verwendet ich für große Development Projekte ein Einschalt-Script um eine große Test-Umgebung in 5 Minuten zu starten/auszurollen und wenn ich fertig bin, wird diese Umgebung wieder in einen Schalfmodus gelegt. D.h. nur wenn ich aktiv mit der Umgebung arbeite verbraucht man Ressourcen wie Compute-Zeit. Klever oder? Winking smile

Wie funktioniert’s?

Möglichkeite 2a: der komplizierte Weg und zu 100% alles manuell. *wenn man das einfacher möchte geht man gleich zu Möglichkeit 2b über, siehe unten*

Man erstellt ein Zertifikat entweder mit makeCert.exe  aus dem Windows SDK 7.1: oder über Powershell for Azure

makecert -r -pe -n "CN=Patrick Heyde Azure IaaS Cert2048" 
-a sha1 -ss My -len 2048 -sy 24 -b 01/01/20112 -e 01/01/2018

clip_image002
Wichtig: makecert muss mit dem Parameter –pe erstellt werden und die Key-Length beträgt 2048

Danach verteilt man das Zertifikat an den Nutzer. Das Zertifikat finden wir jetzt im Zertifikatsspeicher: man startet jetzt certmgr.msc um die Dateien auf Festplatte zu speichern.

image
Man öffnet das erstellte Zertifikat: “Patrick Heyde Azure IaaS Cert2048”. Im Tab “Details” verwendet man den Button “Copy To” um das Zertifikat auf Festplatte zu speichern:

imageimage

Ich habe das Zertifikat einmal mit und ohne Private Keys auf die Festplatte exportiert.

image

Der Nutzer erhält das Zertifikat mit dem Private Key (.pfx-Datei).
Auf dem Azure Portal hinterlegt man das Public Zertifikat (.cer-Datei) unter Settings / Upload / und die .cert Datei auswählen.

image

Der Nutzer hat das Zertifikat bei sich zu installieren bzw. folgendes PowerShell for Azure cmdlet ausführen: Import-AzurePublishSettingsFile

Die Syntax des PublishingSettingsFiles bekommt man aus dem PowerShell cmdlets: get-AzurePublishingSettingsFile

image
Jetzt kommt das komplizierte: Das Zertifikat ist im ByteStream in der XML-Datei zu hinterlegen.

Wem das zu kompliziert ist der wählt folgenden Weg:

Möglichkeit 2b: der Schnellste Weg:

Das Azure Zertifikat kann über Powershell erstellt werden.

Der Administrator führt zwei Powershell-Befehle aus und Azure erstellt das Zertifikat und Powershell installiert die Subscription.

  1. Powershell console: get-AzurePublishingSettingsFile
    image
  2. das PublishingSettingFile auf der Festplatte hinterlegen und dem Nutzer zusenden
  3. Der Nutzer führt ein Powershell cmdlet aus: Import-AzurePublishSettingsFile mit dem Pfad zum PublishingSettingsFile.

Fertig Smile

Eine detaillierte Anleitung für PowerShell for Azure findet man hier.

Liebe Grüße

Patrick

.