Autorizar acesso com o IAM

Use o Identity and Access Management (IAM) para autorizar identidades a executar ações administrativas nas funções, como criar, atualizar e excluir. No IAM, você concede aos principais (as identidades que você quer ativar, geralmente um usuário ou e-mail de conta de serviço) os papéis apropriados do IAM na função ou projeto. Esses papéis incluem permissões que definem as ações que o principal tem permissão para realizar.

Antes de começar

Para ter a permissão necessária para controlar o acesso de uma função específica ou de todas as funções de um projeto, peça ao administrador para conceder a você o papel Administrador do Cloud Functions (roles/function.admin) do IAM na função ou no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém a permissão cloudfunctions.functions.setIamPolicy, que é necessária para controlar o acesso de uma função específica ou de todas as funções em um projeto.

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Consulte Papéis do IAM do Cloud Functions para conferir a lista completa de papéis do Cloud Functions e as permissões associadas.

Como ativar o acesso a uma função

Controle ações em uma função, concedendo ou restringindo papéis a identidades individuais por meio do IAM.

Como adicionar principais e conceder papéis

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção ao lado da função em que você tem interesse.

  3. Clique em Permissões na parte superior da tela. O painel Permissões é aberto.

  4. Clique em Adicionar principal.

  5. No campo Novos principais, insira uma ou mais identidades que precisam acessar sua função. Geralmente, este é um e-mail de usuário ou conta de serviço.

  6. Escolha um papel ou mais no menu suspenso Selecionar um papel. Os papéis selecionados são exibidos no painel com uma breve descrição das permissões que eles concedem.

  7. Clique em Save.

gcloud

Use o comando gcloud functions add-iam-policy-binding:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE

em que FUNCTION_NAME é o nome da função, PRINCIPAL_ID é o identificador principal, geralmente um e-mail, e ROLE é o papel.

Para ver uma lista de fontes que podem fornecer um PRINCIPAL_ID, consulte a página de conceitos do IAM. Para uma lista de valores aceitáveis para ROLE, consulte a página de referência de papéis do IAM do Cloud Functions.

Como remover papéis dos principais

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção ao lado da função em que você tem interesse.

  3. Clique em Permissões na parte superior da tela. O painel Permissões é aberto.

  4. Procure o principal que você quer remover. Analise todos os papéis que o principal recebeu.

  5. Quando encontrar o principal que você quer excluir, clique no ícone de lixeira ao lado dele. Se você quiser remover completamente o acesso do principal, faça isso para cada papel concedido.

gcloud

Use o comando gcloud functions remove-iam-policy-binding:

  gcloud functions remove-iam-policy-binding FUNCTION_NAME \
    --member=PRINCIPAL_ID \
    --role=ROLE

em que FUNCTION_NAME é o nome da função, PRINCIPAL_ID é o endereço de e-mail que identifica a conta de serviço, precedida por serviceAccount: e ROLE é o papel.

Para uma lista de fontes aceitáveis para PRINCIPAL_ID, consulte a página de conceitos do IAM. Para ver uma lista de valores possíveis para ROLE, consulte a página de referência de papéis do IAM no Cloud Functions.

Se o principal tiver vários papéis, especifique aquele que você quer remover

Adição de principais em massa

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique nas caixas de seleção ao lado das funções nas quais quer conceder ou restringir o acesso.

  3. Clique em Permissões na parte superior da tela. O painel Permissões é aberto.

Para adicionar principais, faça o seguinte:

  1. Clique em Adicionar principal.

  2. Em Novos principais, insira várias identidades que precisam acessar a função.

  3. Escolha um papel ou mais no menu suspenso Selecionar um papel. Os papéis selecionados são exibidos no painel com uma breve descrição das permissões que eles concedem.

  4. Clique em Save.

gcloud

Crie uma política do IAM chamada, por exemplo, policy.json:

{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL_ID
      ]
    }
  ]
}

Use o comando gcloud functions set-iam-policy:

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Para uma lista de fontes aceitáveis para PRINCIPAL_ID, consulte a página de conceitos do IAM. Para uma lista de valores aceitáveis para ROLE, consulte a página de referência de papéis do IAM do Cloud Functions.

Como ver os principais

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique no nome da função em que você tem interesse.

  3. Selecione a guia Permissões. O painel Permissões é aberto.

  4. Selecione a guia Visualizar por principais para conferir uma lista de todos os principais com permissões na função selecionada.

gcloud

Use o comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Como permitir a invocação da função HTTP não autenticada

A partir de 15 de janeiro de 2020, as funções HTTP sem Permitir invocações não autenticadas ativaram o acesso restrito a usuários finais e contas de serviço que não têm as permissões apropriadas.

Para permitir invocações não autenticadas, especifique isso durante ou após a implantação.

Use uma variante especial da abordagem descrita acima para conceder aos invocadores não autenticados a capacidade de invocar uma função HTTP.

.

Na implantação

Console

Selecione Permitir invocações não autenticadas na seção Autenticação do painel Acionador.

gcloud

O comando gcloud functions deploy inclui um prompt para ajudá-lo a configurar as permissões de invocação durante a criação da função. Ele também pode incluir a sinalização --allow-unauthenticated:

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
--allow-unauthenticated \
...

As implantações subsequentes da mesma função não alteram seu status, mesmo se você não usar essa sinalização.

Após a implantação

Cloud Functions (1a geração):

Para permitir a invocação não autenticada de uma função, conceda o papel de Chamador do Cloud Functions ao principal allUsers especial na função:

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção ao lado da função de recebimento. (Não clique na função em si.)

  3. Clique em Permissões na parte superior da tela. O painel Permissões é aberto.

  4. Clique em Adicionar principal.

  5. No campo Novos principais, digite allUsers.

  6. Selecione o papel Cloud Functions > Chamador do Cloud Functions no menu suspenso Selecionar papel.

  7. Em resposta à caixa de diálogo, clique em Permitir acesso público.

gcloud

Use o comando gcloud functions add-iam-policy-binding para conceder o papel roles/cloudfunctions.invoker ao principal allUsers especial na função:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

Consulte a referência do gcloud functions add-iam-policy-binding para mais informações sobre esses campos.

Cloud Functions (segunda geração):

Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique no nome do link da função para que você quer conceder acesso.

  3. Clique no link Powered by Cloud Run no canto superior direito da página de visão geral dos detalhes da função.

  4. Abra a guia Segurança e, em Autenticação, selecione Permitir invocações não autenticadas.

  5. Clique em Save.

gcloud

Use o comando gcloud run services add-iam-policy-binding para conceder o papel roles/run.invoker à função específica.

gcloud run services add-iam-policy-binding FUNCTION_NAME \
--member="user:USER_EMAIL"\
--role="roles/run.invoker"

Consulte a referência do gcloud run add-iam-policy-binding para mais informações sobre esses campos.

Compartilhamento restrito de domínio

Se você estiver desenvolvendo funções em um projeto que está sujeito à política da organização de compartilhamento restrito de domínio, não será possível fazer a invocação não autenticada de uma função. Essa política restringe o compartilhamento público de dados para reduzir o risco de exfiltração de dados externa.

Para implantar funções que permitem invocação não autenticada, recomendamos remover a política da organização de compartilhamento restrito de domínio no projeto. As políticas da organização podem ser definidas no nível da organização, da pasta ou do projeto.

Depois de criar suas funções que permitem a invocação não autenticada, a política da organização poderá ser reativada:

  • As funções implantadas antes de a política da organização ser reativada continuarão permitindo a invocação não autenticada.
  • Novas versões dessas funções existentes podem ser implantadas sem exigir invocação autenticada.
  • Novas funções que permitam invocações não autenticadas não poderão ser implantadas.