Azure HDInsight ID Broker (HIB)
I den här artikeln beskrivs hur du konfigurerar och använder azure HDInsight ID Broker-funktionen. Du kan använda den här funktionen för att få modern OAuth-autentisering till Apache Ambari samtidigt som du tillämpar multifaktorautentisering utan att behöva äldre lösenordshashvärden i Microsoft Entra Domain Services.
Översikt
HDInsight ID Broker förenklar komplexa autentiseringsinställningar i följande scenarier:
- Din organisation förlitar sig på federation för att autentisera användare för åtkomst till molnresurser. Tidigare, för att använda HDInsight Enterprise Security Package-kluster, var du tvungen att aktivera synkronisering av lösenordshash från din lokala miljö till Microsoft Entra-ID. Det här kravet kan vara svårt eller oönskat för vissa organisationer.
- Din organisation vill framtvinga multifaktorautentisering för webbaserad eller HTTP-baserad åtkomst till Apache Ambari och andra klusterresurser.
HDInsight ID Broker tillhandahåller autentiseringsinfrastrukturen som möjliggör protokollövergång från OAuth (modern) till Kerberos (äldre) utan att behöva synkronisera lösenordshashvärden till Microsoft Entra Domain Services. Den här infrastrukturen består av komponenter som körs på en virtuell Windows Server-dator (VM) med noden HDInsight ID Broker aktiverad, tillsammans med klustergatewaynoder.
Använd följande tabell för att fastställa det bästa autentiseringsalternativet baserat på organisationens behov.
Autentiseringsalternativ | HDInsight-konfiguration | Saker att tänka på |
---|---|---|
Fullständigt OAuth | Enterprise Security Package + HDInsight ID Broker | Det säkraste alternativet. (Multifaktorautentisering stöds.) Synkronisering av hash-pass krävs inte. Ingen ssh/kinit/keytab-åtkomst för lokala konton, som inte har lösenordshash i Microsoft Entra Domain Services. Endast molnkonton kan fortfarande ssh/kinit/keytab. Webbaserad åtkomst till Ambari via OAuth. Kräver uppdatering av äldre appar (till exempel JDBC/ODBC) för att stödja OAuth. |
OAuth + Basic Auth | Enterprise Security Package + HDInsight ID Broker | Webbaserad åtkomst till Ambari via OAuth. Äldre appar fortsätter att använda grundläggande autentisering. Multifaktorautentisering måste inaktiveras för grundläggande autentiseringsåtkomst. Synkronisering av hash-pass krävs inte. Ingen ssh/kinit/keytab-åtkomst för lokala konton, som inte har lösenordshash i Microsoft Entra Domain Services. Endast molnkonton kan fortfarande ssh/kinit. |
Fullständigt grundläggande autentisering | Enterprise Security Package | De flesta liknar lokala installationer. Synkronisering av lösenordshash till Microsoft Entra Domain Services krävs. Lokala konton kan ssh/kinit eller använda nyckelfliken. Multifaktorautentisering måste inaktiveras om säkerhetskopieringslagringen är Azure Data Lake Storage Gen2. |
Följande diagram visar det moderna OAuth-baserade autentiseringsflödet för alla användare, inklusive federerade användare, när HDInsight ID Broker har aktiverats:
I det här diagrammet måste klienten (dvs. en webbläsare eller app) hämta OAuth-token först. Sedan visas token för gatewayen i en HTTP-begäran. Om du redan har loggat in på andra Azure-tjänster, till exempel Azure Portal, kan du logga in på ditt HDInsight-kluster med en enkel inloggning.
Det kan fortfarande finnas många äldre program som bara stöder grundläggande autentisering (det vill: användarnamn och lösenord). För dessa scenarier kan du fortfarande använda grundläggande HTTP-autentisering för att ansluta till klustergatewayerna. I den här konfigurationen måste du se till att nätverksanslutningen från gatewaynoderna till slutpunkten Active Directory Federation Services (AD FS) (AD FS) för att säkerställa en direkt siktlinje från gatewaynoder.
Följande diagram visar det grundläggande autentiseringsflödet för federerade användare. Först försöker gatewayen slutföra autentiseringen med hjälp av ROPC-flödet. Om det inte finns några lösenordshashvärden synkroniserade med Microsoft Entra-ID återgår det till att identifiera AD FS-slutpunkten och slutför autentiseringen genom att komma åt AD FS-slutpunkten.
Aktivera HDInsight ID Broker
Om du vill skapa ett Enterprise Security Package-kluster med HDInsight ID Broker aktiverat,
- Logga in på Azure-portalen.
- Följ de grundläggande stegen för att skapa ett Enterprise Security Package-kluster. Mer information finns i Skapa ett HDInsight-kluster med Enterprise Security Package.
- Välj Aktivera HDInsight ID Broker.
HdInsight ID Broker-funktionen lägger till en extra virtuell dator i klustret. Den här virtuella datorn är noden HDInsight ID Broker och innehåller serverkomponenter som stöder autentisering. HDInsight ID Broker-noden är domänansluten till Microsoft Entra Domain Services-domänen.
Använda Azure Resource Manager-mallar
Om du lägger till en ny roll med idbrokernode
namnet med följande attribut i mallens beräkningsprofil skapas klustret med noden HDInsight ID Broker aktiverad:
.
.
.
"computeProfile": {
"roles": [
{
"autoscale": null,
"name": "headnode",
....
},
{
"autoscale": null,
"name": "workernode",
....
},
{
"autoscale": null,
"name": "idbrokernode",
"targetInstanceCount": 2,
"hardwareProfile": {
"vmSize": "Standard_A2_V2"
},
"virtualNetworkProfile": {
"id": "string",
"subnet": "string"
},
"scriptActions": [],
"dataDisksGroups": null
}
]
}
.
.
.
Om du vill se ett fullständigt exempel på en ARM-mall kan du läsa mallen som publiceras här.
Verktygsintegrering
HDInsight-verktyg uppdateras för inbyggt stöd för OAuth. Använd dessa verktyg för modern OAuth-baserad åtkomst till klustren. PLUGIN-programmet HDInsight IntelliJ kan användas för Java-baserade program, till exempel Scala. Spark- och Hive-verktyg för Visual Studio Code kan användas för PySpark- och Hive-jobb. Verktygen stöder både batch- och interaktiva jobb.
SSH-åtkomst utan lösenordshash i Microsoft Entra Domain Services
SSH-alternativ | Saker att tänka på |
---|---|
Lokalt VM-konto (till exempel sshuser) | Du angav det här kontot när klustret skapades. Det finns ingen Kerberos-autentisering för det här kontot. |
Endast molnkonto (till exempel alice@contoso.onmicrosoft.com) | Lösenordshash är tillgänglig i Microsoft Entra Domain Services. Kerberos-autentisering är möjligt via SSH Kerberos. |
Lokalt konto (till exempel alice@contoso.com) | SSH Kerberos-autentisering är endast möjligt om en lösenordshash är tillgänglig i Microsoft Entra Domain Services. Annars kan den här användaren inte SSH till klustret. |
Om du vill SSH till en domänansluten kinit
virtuell dator eller för att köra kommandot måste du ange ett lösenord. SSH Kerberos-autentisering kräver att hashen är tillgänglig i Microsoft Entra Domain Services. Om du bara vill använda SSH för administrativa scenarier kan du skapa ett enda molnkonto och använda det till SSH till klustret. Andra lokala användare kan fortfarande använda Ambari- eller HDInsight-verktyg eller grundläggande HTTP-autentisering utan att ha lösenordshash tillgänglig i Microsoft Entra Domain Services.
Om din organisation inte synkroniserar lösenordshashvärden till Microsoft Entra Domain Services bör du som bästa praxis skapa en användare med endast molnet i Microsoft Entra-ID. Tilldela den sedan som klusteradministratör när du skapar klustret och använd det i administrationssyfte. Du kan använda den för att få rotåtkomst till de virtuella datorerna via SSH.
Information om hur du felsöker autentiseringsproblem finns i den här guiden.
Klienter som använder OAuth för att ansluta till en HDInsight-gateway med HDInsight ID Broker
I HDInsight ID Broker-konfigurationen kan anpassade appar och klienter som ansluter till gatewayen uppdateras för att hämta den nödvändiga OAuth-token först. Mer information finns i Autentisera .NET-program med Azure-tjänster. De nyckelvärden som krävs för att auktorisera åtkomst till en HDInsight-gateway är:
- OAuth-resurs-URI:
https://hib.azurehdinsight.net
- AppId: 00001111-aaaa-2222-bbbb-3333cccc4444
- Behörighet: (namn: Cluster.ReadWrite, id: 8f89faa0-ffef-4007-974d-4989b39ad77d)
När du har hämtat OAuth-token använder du den i auktoriseringshuvudet för HTTP-begäran till klustergatewayen (till exempel https://< clustername-int.azurehdinsight.net>). Ett curl-exempelkommando till Apache Livy API kan se ut så här:
curl -k -v -H "Authorization: Bearer Access_TOKEN" -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://<clustername>-int.azurehdinsight.net/livy/batches" -H "X-Requested-By:<username@domain.com>"
För att använda Beeline och Livy kan du också följa exempelkoderna som anges här för att konfigurera klienten för att använda OAuth och ansluta till klustret.
Vanliga frågor
Vilken app skapas av HDInsight i Microsoft Entra-ID?
För varje kluster registreras ett program från tredje part i Microsoft Entra-ID med kluster-URI:n som identifierUri (t.ex https://clustername.azurehdinsight.net
. ).
Varför uppmanas användarna att ge sitt medgivande innan de använder HIB-aktiverade kluster?
I Microsoft Entra-ID krävs medgivande för alla program från tredje part innan det kan autentisera användare eller komma åt data.
Kan medgivandet godkännas programatiskt?
Med Microsoft Graph API kan du automatisera medgivandet, se API-dokumentationen Sekvensen för att automatisera medgivandet är:
- Registrera en app och bevilja Application.ReadWrite.Alla behörigheter till appen för att få åtkomst till Microsoft Graph
- När ett kluster har skapats frågar du efter klusterappen baserat på identifierar-URI:n
- Registrera medgivande för appen
När klustret tas bort tar HDInsight bort appen och du behöver inte rensa något medgivande.