Autorizar acesso com o IAM

Use o Identity and Access Management (IAM) para autorizar identidades a executar ações administrativas em funções criadas usando a API Cloud Functions v2. Por exemplo, usando gcloud functions, a API REST ou o Terraform. As ações de administração incluem criar, atualizar e excluir funções. Para informações sobre o acesso do IAM a funções criadas com o Cloud Run, consulte Controle de acesso com o IAM.

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/roles/cloudfunctions.admin) do IAM na função ou no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

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 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

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 Identificadores principais. Para ver uma lista de valores aceitáveis para ROLE, consulte a página de referência de papéis do IAM.

Como remover papéis dos principais

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 Identificadores principais. Para ver uma lista de valores possíveis para ROLE, consulte a página de referência de papéis do IAM.

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

Adição de principais em massa

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 Identificadores principais. Para uma lista de valores aceitáveis para ROLE, consulte a página de referência de papéis do IAM.

Como ver os principais

Para ver os principais, 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

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

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

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.

.

Na implantação

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 mudam o status dela, mesmo se você não usar essa flag.

Após a implantação

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="allUsers" \
  --role="roles/run.invoker"

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