Migrar para o acesso granular baseado em funções para as configurações de cluster

Estamos introduzindo algumas mudanças importantes para oferecer suporte a um acesso baseado em funções mais refinado para obter informações confidenciais. Como parte dessas alterações, algumas ações podem ser necessárias até 3 de setembro de 2019 se você estiver usando uma das entidades/cenários afetados.

O que está a mudar?

Anteriormente, os segredos podiam ser obtidos por meio da API do HDInsight por usuários de cluster que possuíam as funções de Proprietário, Colaborador ou Leitor do Azure, pois estavam disponíveis para qualquer pessoa com a */read permissão. Os segredos são definidos como valores que podem ser usados para obter acesso mais elevado do que a função de um usuário deve permitir. Isso inclui valores como credenciais HTTP do gateway de cluster, chaves de conta de armazenamento e credenciais de banco de dados.

A partir de 3 de setembro de 2019, o acesso a esses segredos exigirá a permissão, o usuário não poderá acessá-los com a Microsoft.HDInsight/clusters/configurations/action função de Leitor. As funções que têm essa permissão são Colaborador, Proprietário e a nova função Operador de Cluster HDInsight.

Também estamos introduzindo uma nova função de Operador de Cluster HDInsight que pode recuperar segredos sem receber as permissões administrativas de Colaborador ou Proprietário. Para resumir:

Função Anteriormente Rumo ao futuro
Leitor - Acesso de leitura, incluindo segredos. - Acesso de leitura, excluindo segredos
Operador de cluster HDInsight
(Nova função)
N/A - Acesso de leitura/gravação, incluindo segredos
Contribuidor - Acesso de leitura/gravação, incluindo segredos.
- Crie e gerencie todos os tipos de recursos do Azure.
- Executar ações de script.
Sem alterações
Proprietário - Acesso de leitura/gravação, incluindo segredos.
- Acesso total a todos os recursos
- Delegar acesso a outras pessoas.
- Executar ações de script.
Sem alterações

Para obter informações sobre como adicionar a atribuição de função Operador de Cluster HDInsight a um usuário para conceder-lhe acesso de leitura/gravação a segredos de cluster, consulte a seção abaixo, Adicionar a atribuição de função Operador de Cluster HDInsight a um usuário.

Sou afetado por estas alterações?

As seguintes entidades e cenários são afetados:

API

As seguintes APIs foram alteradas ou preteridas:

  • GET /configurations/{configurationName} (informações confidenciais removidas)
    • Usado anteriormente para obter tipos de configuração individuais (incluindo segredos).
    • A partir de 3 de setembro de 2019, essa chamada de API retornará tipos de configuração individuais com segredos omitidos. Para obter todas as configurações, incluindo segredos, use a nova chamada POST /configurations. Para obter apenas as configurações do gateway, use a nova chamada POST /getGatewaySettings.
  • GET /configurations (preterido)
    • Usado anteriormente para obter todas as configurações (incluindo segredos)
    • A partir de 3 de setembro de 2019, esta chamada de API será preterida e não terá mais suporte. Para obter todas as configurações no futuro, use a nova chamada POST /configurations. Para obter configurações com parâmetros confidenciais omitidos, use a chamada GET /configurations/{configurationName}.
  • POST /configurations/{configurationName} (preterido)
    • Usado anteriormente para atualizar credenciais de gateway.
    • A partir de 3 de setembro de 2019, esta chamada de API será preterida e não será mais suportada. Use o novo POST /updateGatewaySettings em vez disso.

As seguintes APIs de substituição foram adicionadas:

Azure HDInsight Tools for Visual Studio Code

Se você estiver usando a versão 1.1.1 ou inferior, atualize para a versão mais recente do Azure HDInsight Tools for Visual Studio Code para evitar interrupções.

Azure Toolkit for IntelliJ

Se você estiver usando a versão 3.20.0 ou inferior, atualize para a versão mais recente do plug-in do Kit de Ferramentas do Azure para IntelliJ para evitar interrupções.

Azure Data Lake e Ferramentas de Análise de Fluxo para Visual Studio

Atualize para a versão 2.3.9000.1 ou posterior do Azure Data Lake e do Stream Analytics Tools for Visual Studio para evitar interrupções. Para obter ajuda com a atualização, consulte nossa documentação, Update Data Lake Tools for Visual Studio.

Azure Toolkit for Eclipse

Se você estiver usando a versão 3.15.0 ou inferior, atualize para a versão mais recente do Kit de Ferramentas do Azure para Eclipse para evitar interrupções.

SDK para .NET

Versões 1.x e 2.x

Atualize para a versão 2.1.0 do SDK do HDInsight para .NET. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações:

  • ClusterOperationsExtensions.GetClusterConfigurations não retornará mais parâmetros confidenciais, como chaves de armazenamento (site central) ou credenciais HTTP (gateway).

    • Para recuperar todas as configurações, incluindo parâmetros confidenciais, use ClusterOperationsExtensions.ListConfigurations no futuro. Os utilizadores com a função 'Leitor' não podem utilizar este método. Ele permite um controle granular sobre o qual os usuários podem acessar informações confidenciais para um cluster.
    • Para recuperar apenas credenciais de gateway HTTP, use ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings agora foi preterido e substituído por ClusterOperationsExtensions.GetGatewaySettings.

  • ClusterOperationsExtensions.ConfigureHttpSettings agora foi preterido e substituído por ClusterOperationsExtensions.UpdateGatewaySettings.

  • ConfigurationsOperationsExtensions.EnableHttp e DisableHttp agora estão obsoletos. O HTTP agora está sempre habilitado, portanto, esses métodos não são mais necessários.

Versões 3.x e superiores

Atualize para a versão 5.0.0 ou posterior do SDK do HDInsight para .NET. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações:

SDK para Python

Atualize para a versão 1.0.0 ou posterior do SDK do HDInsight para Python. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações:

SDK para Java

Atualize para a versão 1.0.0 ou posterior do SDK do HDInsight para Java. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações:

  • ConfigurationsInner.get não retornará mais parâmetros confidenciais, como chaves de armazenamento (site central) ou credenciais HTTP (gateway).
  • ConfigurationsInner.update agora está obsoleto.

SDK para Go

Atualize para a versão 27.1.0 ou posterior do SDK do HDInsight para Go. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações:

Az.HDInsight PowerShell

Atualize para o Az PowerShell versão 2.0.0 ou posterior para evitar interrupções. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por essas alterações.

  • Grant-AzHDInsightHttpServicesAccess agora foi preterido e substituído pelo novo Set-AzHDInsightGatewayCredential cmdlet.
  • Get-AzHDInsightJobOutput foi atualizado para oferecer suporte ao acesso granular baseado em função à chave de armazenamento.
    • Os usuários com funções de Operador, Colaborador ou Proprietário de Cluster HDInsight não são afetados.
    • Os usuários com apenas a função Reader precisam especificar o DefaultStorageAccountKey parâmetro explicitamente.
  • Revoke-AzHDInsightHttpServicesAccess agora está obsoleto. O HTTP agora está sempre habilitado, portanto, esse cmdlet não é mais necessário. Veja o az. Guia de migração do HDInsight para obter mais detalhes.

Adicionar a atribuição de função Operador de Cluster HDInsight a um usuário

Um usuário com a função Proprietário pode atribuir a função Operador de Cluster HDInsight a usuários que você gostaria de ter acesso de leitura/gravação a valores confidenciais de configuração de cluster HDInsight (como credenciais de gateway de cluster e chaves de conta de armazenamento).

Com a CLI do Azure

A maneira mais simples de adicionar essa atribuição de função é usando o comando na CLI az role assignment create do Azure.

Nota

Esse comando deve ser executado por um usuário com a função Proprietário, pois somente ele pode conceder essas permissões. O --assignee é o nome da entidade de serviço ou endereço de email do usuário ao qual você deseja atribuir a função de Operador de Cluster HDInsight. Se você receber um erro de permissões insuficientes, consulte as Perguntas frequentes.

Função de concessão no nível do recurso (cluster)

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

Função de concessão no nível do grupo de recursos

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

Conceder função no nível de assinatura

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

Utilizar o portal do Azure

Como alternativa, você pode usar o portal do Azure para adicionar a atribuição de função Operador de Cluster HDInsight a um usuário. Consulte a documentação Atribuir funções do Azure usando o portal do Azure.

FAQ

Porque estou a ver uma resposta 403 (Proibido) após atualizar os meus pedidos e/ou ferramenta da API?

As configurações de cluster agora estão por trás do controle de acesso granular baseado em função e exigem a Microsoft.HDInsight/clusters/configurations/* permissão para acessá-las. Para obter essa permissão, atribua a função Operador, Colaborador ou Proprietário do Cluster HDInsight ao usuário ou entidade de serviço que está tentando acessar as configurações.

Por que vejo "Privilégios insuficientes para concluir a operação" ao executar o comando da CLI do Azure para atribuir a função de Operador de Cluster HDInsight a outro usuário ou entidade de serviço?

Além de ter a função Proprietário, o usuário ou entidade de serviço que executa o comando precisa ter permissões suficientes do Microsoft Entra para pesquisar as IDs de objeto do cessionário. Esta mensagem indica permissões insuficientes do Microsoft Entra. Tente substituir o argumento e –assignee-object-id forneça o ID do objeto do cessionário como o parâmetro em vez do nome (ou o -–assignee ID principal no caso de uma identidade gerenciada). Consulte a seção de parâmetros opcionais da documentação az role assignment create para obter mais informações.

Se mesmo assim não funcionar, entre em contato com o administrador do Microsoft Entra para obter as permissões corretas.

O que acontecerá se eu não tomar nenhuma medida?

A partir de 3 de setembro de 2019, GET /configurations as POST /configurations/gateway chamadas não retornarão mais nenhuma informação e a chamada não retornará mais parâmetros confidenciais, como chaves de conta de armazenamento ou a GET /configurations/{configurationName} senha do cluster. O mesmo acontece com os métodos SDK correspondentes e cmdlets do PowerShell.

Se você estiver usando uma versão mais antiga de uma das ferramentas para Visual Studio, VSCode, IntelliJ ou Eclipse mencionadas, ela não funcionará mais até que você atualize.

Para obter informações mais detalhadas, consulte a seção correspondente deste documento para seu cenário.