Compartilhar via


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

Estamos introduzindo algumas alterações importantes para dar suporte ao acesso mais refinado baseado em função para obter informações confidenciais. Como parte dessas alterações, algumas ações poderão ser necessárias até 3 de setembro de 2019 se você estiver usando 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. 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, 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 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.

Estamos também apresentando uma nova função de Operador de Cluster HDInsight, que pode recuperar segredos sem ter as permissões administrativas de Colaborador ou Proprietário. Para resumir:

Função Antes A partir de agora
Leitor - Acesso de leitura, incluindo segredos. - Acesso de leitura, excluindo segredos
Operador de Cluster do HDInsight
(Nova Função)
Não aplicável - Acesso de leitura/gravação, incluindo segredos
Contribuidor - 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 do Operador de Cluster HDInsight a um usuário para conceder-lhes acesso de leitura/gravação a segredos do cluster, consulte Adicionar a atribuição de função do Operador de Cluster HDInsight a um usuário.

Entender se suas entidades ou cenários são afetados

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 agora retorna 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 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 das Ferramentas do Azure HDInsight para 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.

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.

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 o .NET. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por estas alterações:

  • ClusterOperationsExtensions.GetClusterConfigurations não retorna mais parâmetros confidenciais , como chaves de armazenamento (site principal) 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 é preterido e substituído por ClusterOperationsExtensions.GetGatewaySettings.

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

  • ConfigurationsOperationsExtensions.EnableHttp e DisableHttp são preteridos. HTTP está 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. Modificações mínimas de código podem ser necessárias se você estiver usando um método afetado por estas alterações:

SDK para Python

Atualize para a versão 1.0.0 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 estas alterações:

SDK para Java

Atualize para a versão 1.0.0 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 estas alterações:

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

SDK para Go

Atualize para a versão 27.1.0 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 estas 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 é preterido e substituído pelo novo Set-AzHDInsightGatewayCredential cmdlet.
  • 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 do HDInsight, Colaborador ou Proprietário não são afetados.
    • Os usuários com apenas a função Leitor precisarão especificar o parâmetro DefaultStorageAccountKey explicitamente.
  • Revoke-AzHDInsightHttpServicesAccess está obsoleto. HTTP 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 ainda 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 ação?

A partir de 3 de setembro de 2019, GET /configurations as POST /configurations/gateway chamadas não retornam mais nenhuma informação e a GET /configurations/{configurationName} chamada não retorna mais 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, VS Code, IntelliJ ou Eclipse mencionadas, ela não estará mais funcional até que você atualize.

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