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.