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: Usuários que usam os pontos de
/configurations
extremidade ou/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code versão 1.1.1 ou abaixo.
- Azure Toolkit for IntelliJ versão 3.20.0 ou inferior.
- Azure Data Lake e Stream Analytics Tools para Visual Studio versão 2.3.9000.1.
- Kit de Ferramentas do Azure para Eclipse versão 3.15.0 ou inferior.
- SDK para .NET
- versões 1.x ou 2.x: usuários usando os
GetClusterConfigurations
métodos , , ,EnableHttp
GetConnectivitySettings
ConfigureHttpSettings
ouDisableHttp
da classe ConfigurationsOperationsExtensions. - versões 3.x e superiores: usuários usando os
Get
ConfigurationsOperationsExtensions
métodos , , ,Update
EnableHttp
ouDisableHttp
da classe.
- versões 1.x ou 2.x: usuários usando os
- SDK para Python: Usuários usando os
get
métodos ouupdate
daConfigurationsOperations
classe. - SDK para Java: Usuários usando os
update
métodos ouget
daConfigurationsInner
classe. - SDK for Go: Usuários usando os
Get
métodos ouUpdate
doConfigurationsClient
struct. - Az.HDInsight PowerShell versão 2.0.0. Veja as secções abaixo (ou utilize as ligações acima) para ver os passos de migração para o seu cenário.
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:
- POST /configurações
- Use esta API para obter todas as configurações, incluindo segredos.
- POST /getGatewaySettings
- Use essa API para obter as configurações do gateway.
- POST /updateGatewaySettings
- Use esta API para atualizar as configurações do gateway (nome de usuário e/ou senha).
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
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, use
ClusterOperationsExtensions.GetConnectivitySettings
agora foi preterido e substituído porClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
agora foi preterido e substituído porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
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:
ConfigurationOperationsExtensions.Get
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
ConfigurationOperationsExtensions.List
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
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, use
ConfigurationsOperationsExtensions.Update
agora foi preterido e substituído porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
agora estão obsoletos. O HTTP agora está sempre habilitado, portanto, esses métodos não são mais necessários.
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:
ConfigurationsOperations.get
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
ConfigurationsOperations.list
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
ClusterOperations.get_gateway_settings
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, use
ConfigurationsOperations.update
agora foi preterido e substituído porClusterOperations.update_gateway_settings
.
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:
ConfigurationsClient.get
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
ConfigurationsClient.list
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
ClustersClient.get_gateway_settings
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, use
ConfigurationsClient.update
agora foi preterido e substituído porClustersClient.update_gateway_settings
.
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 novoSet-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.