Agente de IDs do Azure HDInsight (HIB)
Este artigo descreve como configurar e usar o recurso agente de IDs do Azure HDInsight. Você pode usar esse recurso para obter a autenticação OAuth moderna para o Apache Ambari enquanto tem a imposição de autenticação multifator sem precisar de hashes de senha herdados no Microsoft Entra Domain Services.
Visão geral
O agente de IDs do HDInsight simplifica as configurações de autenticação complexas nos seguintes cenários:
- Sua organização depende da federação para autenticar usuários para acessar recursos de nuvem. Anteriormente, para usar clusters do Enterprise Security Package do Azure HDInsight, você precisava habilitar a sincronização de hash de senha do seu ambiente local para o Microsoft Entra ID. Esse requisito pode ser difícil ou indesejável para algumas organizações.
- Sua organização deseja impor a autenticação multifator para acesso baseado na Web ou HTTP ao Apache Ambari e outros recursos de cluster.
O Agente de IDs do HDInsight fornece a infraestrutura de autenticação que permite a transição de protocolo de OAuth (moderno) para Kerberos (herdado) sem a necessidade de sincronizar hashes de senha com o Microsoft Entra Domain Services. Essa infraestrutura consiste em componentes em execução em uma VM (máquina virtual) do Windows Server com o nó de agente de IDs do HDInsight habilitado, juntamente com nós de gateway de cluster.
Use a tabela a seguir para determinar a melhor opção de autenticação com base nas necessidades da sua organização.
Opções de autenticação | Configuração do HDInsight | Fatores a considerar |
---|---|---|
OAuth totalmente | Enterprise Security Package + Agente de IDs do HDInsight | Opção mais segura. (Há suporte para autenticação multifator.) Não é necessário passar a sincronização de hash. Não há acesso ssh/kinit/keytab para contas locais, que não têm hash de senha no Microsoft Entra Domain Services. Contas somente em nuvem ainda podem ssh/kinit/keytab. Acesso baseado na Web a Ambari por meio do OAuth. Requer a atualização de aplicativos herdados (por exemplo, JDBC/ODBC) para dar suporte ao OAuth. |
OAuth + autenticação básica | Enterprise Security Package + Agente de IDs do HDInsight | Acesso baseado na Web a Ambari por meio do OAuth. Os aplicativos herdados continuam a usar a autenticação básica. A autenticação multifator deve ser desabilitada para acesso básico à autenticação. Não é necessário passar a sincronização de hash. Não há acesso ssh/kinit/keytab para contas locais, que não têm hash de senha no Microsoft Entra Domain Services. Contas somente em nuvem ainda podem ssh/kinit/keytab. |
Autenticação totalmente básica | Enterprise Security Package | Mais semelhante às configurações locais. A sincronização de hash de senha com o Microsoft Entra Domain Services é necessária. As contas locais podem SSH/kinit ou usar keytab. A autenticação multifator deverá ser desabilitada se o armazenamento de apoio for Azure Data Lake Storage Gen2. |
O diagrama a seguir mostra o fluxo de autenticação baseado em OAuth moderno para todos os usuários, incluindo usuários federados, depois que o agente de IDs do HDInsight estiver habilitado:
Neste diagrama, o cliente (ou seja, um navegador ou aplicativo) precisa adquirir o token OAuth primeiro. Em seguida, ele apresenta o token para o gateway em uma solicitação HTTP. Se você já tiver se registrado em outros serviços do Azure, como o portal do Azure, você pode entrar em seu cluster HDInsight com uma experiência de logon único.
Ainda pode haver muitos aplicativos herdados que dão suporte apenas à autenticação básica (isto é, nome de usuário e senha). Para esses cenários, você ainda pode usar a autenticação básica HTTP para se conectar aos gateways de cluster. Nessa configuração, você deve garantir a conectividade de rede dos nós de gateway para o ponto de extremidade de Serviços de Federação do Active Directory (AD FS) (AD FS) para garantir uma linha de visão direta dos nós de gateway.
O diagrama a seguir mostra o fluxo de autenticação básica para usuários federados. Primeiro, o gateway tenta concluir a autenticação usando o fluxo ROPC. Caso não haja hashes de senha sincronizados com a ID do Microsoft Entra, ele retornará à descoberta do ponto de extremidade do AD FS e concluirá a autenticação acessando o ponto de extremidade do AD FS.
Habilitar o Agente de IDs do HDInsight
Para criar um cluster com Enterprise Security Package com o Agente de IDs do HDInsight habilitado,
- Entre no portal do Azure.
- Siga as etapas de criação básicas para um cluster com Enterprise Security Package. Para obter mais informações, consulte Criar um cluster HDInsight com Enterprise Security Package.
- Selecione Habilitar o Agente de IDs do HDInsight.
O recurso agente de IDs do HDInsight adiciona uma VM extra ao cluster. Essa VM é o nó do agente de IDs do HDInsight e inclui componentes de servidor para dar suporte à autenticação. O nó do Agente de IDs do HDInsight ingressou no domínio do Microsoft Entra Domain Services.
Usar modelos do Gerenciador de Recursos do Azure
Se você adicionar uma nova função chamada idbrokernode
com os seguintes atributos ao perfil de cálculo do seu modelo, o cluster é criado com o nó do Agente de IDs do HDInsight habilitado:
.
.
.
"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
}
]
}
.
.
.
Para ver um exemplo completo de um modelo do ARM, consulte o modelo publicado aqui.
Integração de ferramentas
As ferramentas do HDInsight são atualizadas para dar suporte nativo ao OAuth. Use essas ferramentas para acesso baseado em OAuth moderno aos clusters. O plug-in IntelliJ do HDInsight pode ser usado para aplicativos baseados em Java, como Scala. As Ferramentas Spark e Hive para Visual Studio Code podem ser usadas para trabalhos do PySpark e Hive. As ferramentas dão suporte a trabalhos de lote e interativos.
Acesso SSH sem um hash de senha no Microsoft Entra Domain Services
Opções de SSH | Fatores a considerar |
---|---|
Conta de VM local (por exemplo, sshuser) | Você forneceu essa conta no momento da criação do cluster. Não há nenhuma autenticação Kerberos para esta conta. |
Conta somente em nuvem (por exemplo, alice@contoso.onmicrosoft.com) | O hash de senha está disponível no Microsoft Entra Domain Services. A autenticação Kerberos é possível por meio do SSH Kerberos. |
Conta local (por exemplo, alice@contoso.com) | A autenticação Kerberos SSH só será possível se um hash de senha estiver disponível no Microsoft Entra Domain Services. Caso contrário, esse usuário não poderá SSH para o cluster. |
Para o SSH em uma VM ingressada no domínio ou para executar o kinit
comando, você deve fornecer uma senha. A autenticação Kerberos SSH requer que o hash esteja disponível no Microsoft Entra Domain Services. Se você quiser usar o SSH somente para cenários administrativos, poderá criar uma conta somente em nuvem e usá-la para SSH para o cluster. Outros usuários locais ainda podem usar ferramentas Ambari ou HDInsight ou autenticação básica HTTP sem ter o hash de senha disponível no Microsoft Entra Domain Services.
Se sua organização não estiver sincronizando hashes de senha com o Microsoft Entra Domain Services, como prática recomendada, crie um usuário somente em nuvem na Microsoft Entra ID. Em seguida, atribua-o como um administrador de cluster ao criar o cluster e use-o para fins de administração. Você pode usá-lo para obter acesso de raiz às VMs via SSH.
Para solucionar problemas de autenticação, consulte este guia.
Clientes que usam o OAuth para se conectar a um gateway do HDInsight com o agente de IDs do HDInsight
Na configuração do Agente de IDs do HDInsight, os aplicativos personalizados e clientes que se conectam ao gateway podem ser atualizados para adquirir o token OAuth necessário primeiro. Para obter mais informações, confira Como autenticar aplicativos .NET com os serviços do Azure. Os valores de chave necessários para autorizar o acesso a um gateway do HDInsight são:
- URI do recurso OAuth:
https://hib.azurehdinsight.net
- AppId: 00001111-aaaa-2222-bbbb-3333cccc4444
- Permissão: (nome: Cluster.ReadWrite, id: 8f89faa0-ffef-4007-974d-4989b39ad77d)
Depois de adquirir o token OAuth, use-o no cabeçalho de autorização da solicitação HTTP para o gateway de cluster (por exemplo, https://<nomedocluster>-int.azurehdinsight.net). Um exemplo de comando curl para a API do Apache Livy pode ser semelhante a este exemplo:
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>"
Para usar Beeline e Livy, você também pode seguir os códigos de exemplos fornecidos aqui para configurar seu cliente para usar o OAuth e conectar-se ao cluster.
Perguntas frequentes
Qual aplicativo é criado pelo HDInsight no Microsoft Entra ID?
Para cada cluster, um aplicativo de terceiros é registrado no Microsoft Entra ID com o uri do cluster como o identifierUri (como https://clustername.azurehdinsight.net
).
Por que os usuários são solicitados a fornecer consentimento antes de usar os clusters habilitados para HIB?
No Microsoft Entra ID, o consentimento é necessário para todos os aplicativos de terceiros antes de poder autenticar usuários ou acessar dados.
O consentimento pode ser aprovado de forma programática?
A API do Microsoft Graph permite automatizar o consentimento, consulte a Documentação da API A sequência para automatizar o consentimento é:
- Registrar um aplicativo e conceder permissões Application.ReadWrite.All para o aplicativo para acessar o Microsoft Graph
- Depois que um cluster é criado, consultar o aplicativo de cluster com base no URI do identificador
- Registrar consentimento para o aplicativo
Quando o cluster é excluído, o HDInsight exclui o aplicativo e não há necessidade de limpar nenhum consentimento.