Partilhar via


Trabalhar com chaves de acesso no Azure Functions

O Azure Functions permite que você use chaves secretas para dificultar o acesso aos pontos de extremidade de função. Este artigo descreve os vários tipos de chaves de acesso suportadas pelo Functions e como trabalhar com chaves de acesso.

Embora as chaves de acesso forneçam alguma atenuação contra acesso indesejado, você deve considerar outras opções para proteger pontos de extremidade HTTP na produção. Por exemplo, não é uma boa prática distribuir segredos compartilhados em um aplicativo público. Se a sua função estiver a ser chamada por um cliente público, deve considerar a implementação destes ou de outros mecanismos de segurança:

As chaves de acesso fornecem a base para a autorização HTTP em funções acionadas por HTTP. Para obter mais informações, consulte Nível de autorização.

Compreender as chaves

O âmbito de uma chave de acesso e as ações que suporta dependem do tipo de chave de acesso.

Tipo de chave Nome da chave Nível de autenticação HTTP Description
Função default ou definido pelo usuário function Permite o acesso apenas a um ponto de extremidade de função específico.
Anfitrião default ou definido pelo usuário function Permite o acesso a todos os pontos de extremidade de função em um aplicativo de função.
Mestrado _master admin Chave de host especial que também fornece acesso administrativo às APIs REST de tempo de execução em um aplicativo de função. Esta chave não pode ser revogada. Como a chave mestra concede permissões elevadas em seu aplicativo de função, você não deve compartilhar essa chave com terceiros ou distribuí-la em aplicativos cliente nativos.
Sistema Depende da extensão n/d Extensões específicas podem exigir uma chave gerenciada pelo sistema para acessar pontos de extremidade webhook. As chaves do sistema são projetadas para pontos de extremidade de função específicos de extensão que são chamados por componentes internos. Por exemplo, o gatilho de Grade de Eventos requer que a assinatura use uma chave do sistema ao chamar o ponto de extremidade do gatilho. Durable Functions também usa chaves do sistema para chamar APIs de extensão de tarefa durável.
As chaves do sistema só podem ser criadas por extensões específicas e você não pode definir explicitamente seus valores. Como outras chaves, você pode gerar um novo valor para a chave a partir do portal ou usando as APIs de chave.

Cada chave é nomeada para referência, e há uma chave padrão (chamada default) no nível da função e do host. As teclas de função têm precedência sobre as teclas de host. Quando duas teclas são definidas com o mesmo nome, a tecla de função é sempre usada.

A tabela a seguir compara os usos para vários tipos de chaves de acesso:

Ação Âmbito Tipo de chave
Executar uma função Função específica Function
Executar uma função Qualquer função Função ou host
Chamar um ponto de admin extremidade Aplicação de funções Apenas mestre
Chamar APIs de extensão de tarefa durável Aplicação Função* Sistema
Chamar um Webhook específico da extensão (interno) Aplicação Função* sistema

*Âmbito determinado pela extensão.

Requisitos chave

Em Funções, as chaves de acesso são matrizes de 32 bytes geradas aleatoriamente que são codificadas como cadeias de caracteres base-64 seguras para URL. Embora você possa gerar suas próprias chaves de acesso e usá-las com o Functions, recomendamos que você permita que o Functions gere todas as suas chaves de acesso para você.

As chaves de acesso geradas por funções incluem valores especiais de assinatura e soma de verificação que indicam o tipo de chave de acesso e que ela foi gerada pelo Azure Functions. Ter esses componentes extras na própria chave torna muito mais fácil determinar a origem desses tipos de segredos localizados durante a verificação de segurança e outros processos automatizados.

Para permitir que o Functions gere suas chaves para você, não forneça a chave value para nenhuma das APIs que você pode usar para gerar chaves.

Gerenciar armazenamento de chaves

As chaves são armazenadas como parte do seu aplicativo de função no Azure e são criptografadas em repouso. Por padrão, as AzureWebJobsStorage chaves são armazenadas em um contêiner de armazenamento de Blob na conta fornecida pela configuração. Você pode usar a AzureWebJobsSecretStorageType configuração para substituir esse comportamento padrão e, em vez disso, armazenar chaves em um destes locais alternativos:

Localização Valor Description
Uma segunda conta de armazenamento blob Armazena chaves no armazenamento de Blob em uma conta de armazenamento diferente da usada pelo tempo de execução do Functions. A conta específica e o contêiner usados são definidos por uma URL de assinatura de acesso compartilhado (SAS) definida na AzureWebJobsSecretStorageSas configuração. Você deve manter a AzureWebJobsSecretStorageSas configuração quando a URL SAS for alterada.
Azure Key Vault keyvault O cofre de chaves definido é AzureWebJobsSecretStorageKeyVaultUri usado para armazenar chaves.
Sistema de ficheiros files As chaves são mantidas no sistema de arquivos local, que é o padrão no Functions v1.x. O armazenamento do sistema de arquivos não é recomendado.
Segredos de Kubernetes kubernetes O conjunto de recursos no AzureWebJobsKubernetesSecretName é utilizado para armazenar chaves. Suportado apenas quando seu aplicativo de função é implantado no Kubernetes. As Ferramentas Principais do Azure Functions geram os valores automaticamente quando você as usa para implantar seu aplicativo em um cluster do Kubernetes.

Ao usar o Cofre da Chave para armazenamento de chaves, as configurações do aplicativo de que você precisa dependem do tipo de identidade gerenciada, atribuída pelo sistema ou atribuída pelo usuário.

Nome da definição Atribuída pelo sistema Atribuída pelo utilizador Registo de aplicações
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Utilizar teclas de acesso

As funções acionadas por HTTP geralmente podem ser chamadas usando uma URL no formato: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Quando o nível de autorização de uma determinada função é definido como um valor diferente de anonymous, você também deve fornecer uma chave de acesso em sua solicitação. A chave de acesso pode ser fornecida na URL usando a cadeia de caracteres de ?code= consulta ou no cabeçalho da solicitação (x-functions-key). Para obter mais informações, consulte Autorização de chave de acesso.

Para acessar as APIs REST de tempo de execução (em /admin/), você deve fornecer a chave mestra (_master) no cabeçalho da x-functions-key solicitação. Você pode remover os pontos de extremidade admin usando a functionsRuntimeAdminIsolationEnabled propriedade site.

Obtenha as teclas de acesso à sua função

Você pode obter chaves de função e host programaticamente usando estas APIs do Azure Resource Manager:

Para saber como chamar APIs do Azure Resource Manager, consulte a referência da API REST do Azure.

Você pode usar esses métodos para obter chaves de acesso sem ter que usar as APIs REST.

  1. Entre no portal do Azure e, em seguida, procure e selecione Aplicativo de função.

  2. Selecione o aplicativo de função com o qual deseja trabalhar.

  3. No painel esquerdo, expanda Funções e selecione Teclas do aplicativo.

    A página Chaves do aplicativo é exibida. Nesta página são exibidas as chaves de host, que podem ser usadas para acessar qualquer função no aplicativo. A chave do sistema também é exibida, o que dá a qualquer pessoa acesso em nível de administrador a todas as APIs de aplicativos funcionais.

Você também pode praticar privilégios mínimos usando a tecla para uma função específica. Você pode obter teclas específicas da função na guia Teclas de função de uma função acionada por HTTP específica.

Renovar ou criar chaves de acesso

Ao renovar ou criar seus valores de chave de acesso, você deve redistribuir manualmente os valores de chave atualizados para todos os clientes que chamam sua função.

Você pode renovar chaves de função e host programaticamente ou criar novas usando estas APIs do Azure Resource Manager:

Para saber como chamar APIs do Azure Resource Manager, consulte a referência da API REST do Azure.

Você pode usar esses métodos para obter chaves de acesso sem ter que criar manualmente chamadas para as APIs REST.

  1. Entre no portal do Azure e, em seguida, procure e selecione Aplicativo de função.

  2. Selecione o aplicativo de função com o qual deseja trabalhar.

  3. No painel esquerdo, expanda Funções e selecione Teclas do aplicativo.

    A página Chaves do aplicativo é exibida. Nesta página são exibidas as chaves de host, que podem ser usadas para acessar qualquer função no aplicativo. A chave do sistema também é exibida, o que dá a qualquer pessoa acesso em nível de administrador a todas as APIs de aplicativos funcionais.

  4. Selecione Renovar valor da chave junto à chave que pretende renovar e, em seguida, selecione Renovar e guardar.

Você também pode renovar uma tecla de função na guia Teclas de função de uma função acionada por HTTP específica.

Excluir chaves de acesso

Você pode excluir chaves de função e host programaticamente usando estas APIs do Azure Resource Manager:

Para saber como chamar APIs do Azure Resource Manager, consulte a referência da API REST do Azure.