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

Estamos introduzindo algumas mudanças importantes para dar suporte a acessos baseados em função mais refinados para a obtenção de informações confidenciais. Como parte dessas mudanças, algumas ações podem precisar ser tomadas até 3 de setembro de 2019 no caso de você usar uma das entidades/cenários afetados.

O que está mudando?

Anteriormente, era possível que usuários com as funções de Proprietário, Colaborador ou Leitor do Azure, obtivessem segredos por meio da API do HDInsight, pois eles estavam disponíveis para qualquer pessoa com a permissão*/read. Segredos são valores que podem ser usados para obter acesso mais elevado do que a função de um usuário deveria permitir. Isso inclui valores como credenciais HTTP de 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 Microsoft.HDInsight/clusters/configurations/action, o que significa que eles não podem mais ser acessados por usuários com a função 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 do HDInsight que poderá recuperar segredos mesmo sem as permissões administrativas de Colaborador ou Proprietário. Para resumir:

Função Anteriormente A partir de agora
Leitor - Acesso de leitura, incluindo segredos. - Acesso de leitura, excluindo segredos
Operador de Cluster do HDInsight
(Nova Função)
N/D - Acesso de leitura/gravação, incluindo segredos
Colaborador - Acesso de leitura/gravação, incluindo segredos.
- Criar e gerenciar todos os tipos de recursos do Azure.
- Executar ações de script.
Nenhuma alteração
Proprietário - Acesso de leitura/gravação, incluindo segredos.
- Acesso completo a todos os recursos
- Delegar acesso a outros usuários.
- Executar ações de script.
Nenhuma alteração

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

Serei afetado por essas mudanças?

Os seguintes cenários e entidades serão afetados:

API

As APIs a seguir 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 à API passará a retornar tipos de configuração individuais com omissão dos segredos. Para obter todas as configurações, incluindo segredos, use a nova chamada POST /configurations. Para obter apenas as configurações de 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, essa chamada à API será preterida e não terá mais suporte. Para obter todas as configurações, incluindo segredos, 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 as credenciais do gateway.
    • A partir de 3 de setembro de 2019, essa chamada à API será preterida e não terá mais suporte. Em vez disso, use a nova chamada POST /updateGatewaySettings.

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.

Kit de Ferramentas do Azure para IntelliJ

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

Ferramentas do Microsoft Azure Data Lake e do Stream Analytics para o Visual Studio

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

Kit de ferramentas do Azure para Eclipse

Se você estiver usando a versão 3.15.0 ou inferior, atualize para a versão mais recente do plug-in Azure Toolkit for 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 o .NET. Podem ser necessárias modificações mínimas de código se você estiver usando um método afetado por essas alterações:

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

    • Para recuperar todas as configurações, incluindo parâmetros confidenciais, passe a usar o ClusterOperationsExtensions.ListConfigurations. Os usuários com a função 'Leitor' não podem usar esse método. Isso permite o controle granular sobre quais usuários podem acessar informações confidenciais de um cluster.
    • Para recuperar apenas as credenciais de gateway HTTP, use ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings foi preterido e substituído por ClusterOperationsExtensions.GetGatewaySettings.

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

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

Versão 3.x e superior

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

SDK para Python

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

SDK para Java

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

  • O ConfigurationsInner.getnão retornará mais parâmetros confidenciais, como chaves de armazenamento (core-site) ou credenciais HTTP (gateway).
  • O ConfigurationsInner.update está preterido.

SDK para Go

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

Azure HDInsight PowerShell

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

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

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

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

Usando a CLI do Azure

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

Observação

Esse comando deve ser executado por um usuário com a função de Proprietário, pois apenas eles podem 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 do HDInsight. Se você receber um erro de permissões insuficientes, consulte as perguntas frequentes abaixo.

Conceder função no nível de recurso (cluster)

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

Conceder funçã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 da assinatura

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

Usando o portal do Azure

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

Perguntas frequentes

Por que estou vendo uma resposta 403 (proibido) depois de atualizar minhas solicitações de API e/ou ferramenta?

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

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

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

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

O que acontece se eu não tomar nenhuma medida?

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

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 o seu cenário.