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: usuários dos ponto de extremidade
/configurations
ou/configurations/{configurationName}
. - Versão 1.1.1 ou inferior do Azure HDInsight Tools for Visual Studio Code.
- Versão 3.20.0 ou inferior do Azure Toolkit for IntelliJ.
- Ferramentas do Microsoft Azure Data Lake e do Stream Analytics para o Visual Studio versão 2.3.9000.1.
- Versão 3.15.0 ou inferior do Azure Toolkit for Eclipse.
- SDK para .NET
- versões 1. x ou 2. x: usuários dos métodos
GetClusterConfigurations
,GetConnectivitySettings
,ConfigureHttpSettings
,EnableHttp
ouDisableHttp
da classe ConfigurationsOperationsExtensions. - versão 3.x e superior: usuários dos métodos
Get
,Update
,EnableHttp
ouDisableHttp
da classeConfigurationsOperationsExtensions
.
- versões 1. x ou 2. x: usuários dos métodos
- SDK para Python: usuários dos métodos
get
ouupdate
da classeConfigurationsOperations
. - SDK para Java: usuários dos métodos
update
ouget
da classeConfigurationsInner
. - SDK para Go: usuários dos métodos
Get
ouUpdate
do structConfigurationsClient
. - AZ.HDInsight Powershell versão 2.0.0. Consulte as seções abaixo (ou use os links acima) para ver as etapas de migração no seu cenário.
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:
- POST /configurations
- 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 essa 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.
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.GetClusterConfigurations
nã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
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, passe a usar o
ClusterOperationsExtensions.GetConnectivitySettings
foi preterido e substituído porClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
foi preterido e substituído porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
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:
ConfigurationOperationsExtensions.Get
nã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
ConfigurationOperationsExtensions.List
. 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
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, passe a usar o
ConfigurationsOperationsExtensions.Update
foi preterido e substituído porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
eDisableHttp
estão preteridos. O HTTP está agora sempre habilitado, portanto, esses métodos não são mais necessários.
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:
ConfigurationsOperations.get
nã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
ConfigurationsOperations.list
. 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
ClusterOperations.get_gateway_settings
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, passe a usar o
ConfigurationsOperations.update
foi preterido e substituído porClusterOperations.update_gateway_settings
.
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.get
nã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:
ConfigurationsClient.get
nã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
ConfigurationsClient.list
. 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
ClustersClient.get_gateway_settings
.
- Para recuperar todas as configurações, incluindo parâmetros confidenciais, passe a usar o
ConfigurationsClient.update
foi preterido e substituído porClustersClient.update_gateway_settings
.
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-AzHDInsightHttpServicesAccess
foi preterido e substituído pelo novo cmdletSet-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.