Controle de acesso com o IAM

Por padrão, somente editores e proprietários dos projetos podem criar, atualizar, excluir ou invocar serviços e jobs, e somente proprietários dos projetos e administradores do Cloud Run podem modificar as políticas do Identity and Access Management (IAM), por exemplo, para tornar um serviço público. Consulte Papéis do IAM do Cloud Run para mais detalhes.

Para conceder a outros usuários ou grupos a capacidade de executar essas ações, use o IAM para conceder papéis a diferentes principais.

Papéis predefinidos do Cloud Run

Em comparação com os papéis básicos (Proprietário, Editor e Leitor), os seguintes papéis predefinidos têm controle de acesso mais refinado para acessar os recursos do Cloud Run:

Papel Descrição
Administrador do Cloud Run (roles/run.admin) Pode criar, atualizar e excluir serviços e jobs, além de acessar, listar e excluir execuções de jobs.
Pode invocar serviços e jobs e cancelar execuções de jobs.
Pode acessar e definir políticas do IAM.
Pode ver, aplicar e dispensar recomendações.
Requer configuração adicional para implantar serviços.
Desenvolvedor do Cloud Run (roles/run.developer) Pode criar, atualizar e excluir serviços e jobs, além de acessar, listar e excluir execuções de jobs.
Pode receber, mas não definir políticas do IAM.
Pode ver, aplicar e dispensar recomendações.
Leitor do Cloud Run (roles/run.viewer) Pode ver serviços, jobs e execuções de jobs.
Pode acessar políticas do IAM.
Pode ver recomendações.
Chamador do Cloud Run (roles/run.invoker) Pode invocar serviços e jobs e cancelar execuções de jobs.

Controlar o acesso em um serviço ou job individual

É possível controlar o acesso por serviço ou por job usando o IAM.

Tornar um serviço público

Essa opção é para um serviço do Cloud Run que é uma API pública ou um site.

.

É possível permitir chamadas não autenticadas a um serviço atribuindo o papel de invocador do Cloud Run do IAM ao tipo de membro allUsers.

É preciso ter a permissão run.services.setIamPolicy para configurar a autenticação em um serviço do Cloud Run. Essa permissão está incluída nos papéis Proprietário e Administrador do Cloud Run. Veja a lista completa de papéis e permissões associadas em Papéis do IAM do Cloud Run.

IU do Console

Para um serviço do Cloud Run existente:

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do serviço que você quer tornar público. (Não clique no próprio serviço.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Clique em Adicionar principal.

No campo Novos participantes, insira o valor allUsers.

  1. No menu suspenso Papel, selecione o papel Invocador do Cloud Run.

  2. Clique em Salvar.

  3. Você precisa selecionar uma opção para tornar esse recurso público. Clique em Permitir acesso público para aplicar a alteração às configurações do IAM do serviço.

Para um novo serviço que você está criando, crie o serviço mas selecione Permitir invocações não autenticadas na guia Autenticação para disponibilizar o serviço publicamente. A opção Exigir autenticação vai tornar o serviço particular.

gcloud

Para tornar um serviço acessível publicamente, use o comando gcloud run services para adicionar o tipo de membro allUsers especial a um serviço e conceder a ele o papel roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Executar o comando gcloud run deploy para tornar seu serviço acessível publicamente ao implantá-lo:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Crie um arquivo chamado policy.yaml com o conteúdo a seguir:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Permitir invocações não autenticadas para o SERVICE existente usando:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Para criar um serviço do Cloud Run, adicione o estas informações ao seu arquivo main.tf atual:

resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Para atualizar a vinculação do IAM do serviço para roles/run.invoker, adicione o seguinte recurso que faz referência ao serviço do Cloud Run:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Essa vinculação só é autoritativa para o papel especificado. Outras vinculações do IAM na política de IAM do serviço são preservadas.

Compartilhamento restrito de domínio

Se o projeto estiver sujeito à restrição de compartilhamento restrito de domínio em uma política da organização, não será possível criar serviços públicos por padrão. É possível usar tags e política condicional para isentar serviços específicos dessa restrição. Para mais detalhes, consulte a postagem do blog sobre como criar serviços públicos do Cloud Run quando o compartilhamento restrito de domínio for aplicado.

Adicionar principais

É possível adicionar principais a um job ou serviço.

Adicionar principais a um serviço

Para adicionar principais a um serviço:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Marque a caixa de seleção ao lado do serviço em que você quer adicionar participantes. (Não clique no próprio serviço.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Clique em Adicionar principal.

  5. No campo Novos principais, insira uma ou mais identidades que precisam acessar seu serviço.

  6. No menu suspenso Papel, selecione um ou mais papéis. Os papéis selecionados serão exibidos no painel com uma breve descrição das permissões concedidas.

  7. Clique em Salvar.

gcloud

Use o comando gcloud run services add-iam-policy-binding:

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

em que SERVICE_NAME é o nome do serviço, MEMBER_TYPE é o tipo de participante (por exemplo, user:email@domain.com) e ROLE é o papel.

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Adicionar principais a um job

Para adicionar principais a um job:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do job a que você quer adicionar principais. (Não clique no job em si.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Clique em Adicionar principal.

  5. Na caixa de texto Novos principais, insira uma ou mais identidades que precisam de acesso ao seu job.

  6. No menu suspenso Papel, selecione um ou mais papéis. Os papéis selecionados serão exibidos no painel com uma breve descrição das permissões concedidas.

  7. Clique em Salvar.

gcloud

Use o comando gcloud run jobs add-iam-policy-binding:

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

em que JOB_NAME é o nome do job, MEMBER_TYPE é o tipo de principal (por exemplo, user:email@domain.com), e ROLE é o papel.

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Remover participantes de um papel

É possível remover principais de um serviço ou job.

Remover principais de um papel em um serviço

Para remover principais de um papel em um serviço:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do serviço de que você quer remover principais. (Não clique no próprio serviço.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Insira o participante que você quer remover no filtro da lista de papéis, que exibe todos os papéis concedidos a esse principal.

  5. Clique na lixeira para excluir ao lado do principal no papel desejado para remover esse papel do principal.

  6. Na caixa de diálogo de confirmação, você tem a opção de remover esse principal de todos os papéis no serviço. Clique em Remover para remover a principal do papel.

gcloud

Use o comando gcloud run services remove-iam-policy-binding:

  gcloud run services remove-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

em que SERVICE_NAME é o nome do serviço, MEMBER_TYPE é o tipo de participante (por exemplo, user:email@domain.com) e ROLE é o papel.

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Remover principais de um papel em um job

Para remover principais de um papel em um job:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do job a que você quer adicionar principais. (Não clique no job em si.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Insira o participante que você quer remover no filtro da lista de papéis, que exibe todos os papéis concedidos a esse principal.

  5. Clique na lixeira para excluir ao lado do principal no papel desejado para remover esse papel do principal.

  6. Na caixa de diálogo de confirmação, você tem a opção de remover esse principal de todos os papéis no job. Clique em Remover para remover a principal do papel.

gcloud

Use o comando gcloud run jobs remove-iam-policy-binding:

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

em que JOB_NAME é o nome do job, MEMBER_TYPE é o tipo de principal (por exemplo, user:email@domain.com), e ROLE é o papel.

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Adição ou remoção de principais em massa

É possível adicionar ou remover itens em massa para serviços e jobs.

Adição e remoção em massa de principais em serviços

Para adicionar ou remover itens em massa em um serviço:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do serviço em que você quer adicionar ou remover principais. (Não clique no próprio serviço.)

  3. Selecione o serviço em que você quer adicionar ou remover participantes.

  4. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

Se você quiser adicionar principais:

  1. Clique em Adicionar principal.

  2. Na caixa de texto Novos participantes, insira uma ou mais identidades que precisam de acesso ao seu serviço.

  3. No menu suspenso Papel, selecione um ou mais papéis. Os papéis selecionados serão exibidos no painel com uma breve descrição das permissões concedidas.

  4. Clique em Salvar.

Se você quiser remover os principais:

  1. Insira o participante que você quer remover no filtro da lista de papéis, que exibe todos os papéis concedidos a esse principal.

  2. Clique na lixeira para excluir ao lado do principal no papel desejado para remover esse papel do principal.

  3. Na caixa de diálogo de confirmação, você tem a opção de remover esse principal de todos os papéis no serviço. Clique em Remover para remover a principal do papel.

gcloud

Crie uma política do IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Use o comando gcloud run services set-iam-policy:

gcloud run services set-iam-policy SERVICE_NAME policy.json

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Adição e remoção em massa de principais em jobs

Para fazer uma adição ou remoção em massa em um job:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do job a que você quer adicionar principais. (Não clique no job em si.)

  3. Selecione o job em que você quer adicionar ou remover principais.

  4. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

Se você quiser adicionar principais:

  1. Clique em Adicionar principal.

  2. Na caixa de texto Novos participantes, insira uma ou mais identidades que precisam de acesso ao seu serviço.

  3. No menu suspenso Papel, selecione um ou mais papéis. Os papéis selecionados serão exibidos no painel com uma breve descrição das permissões concedidas.

  4. Clique em Salvar.

Se você quiser remover os principais:

  1. Insira o participante que você quer remover no filtro da lista de papéis, que exibe todos os papéis concedidos a esse principal.

  2. Clique na lixeira para excluir ao lado do principal no papel desejado para remover esse papel do principal.

  3. Na caixa de diálogo de confirmação, você tem a opção de remover esse principal de todos os papéis no job. Clique em Remover para remover a principal do papel.

gcloud

Crie uma política do IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Use o comando gcloud run jobs set-iam-policy:

gcloud run jobs set-iam-policy JOB_NAME policy.json

Veja uma lista de valores aceitáveis para MEMBER_TYPE na página de conceitos do IAM. Veja uma lista de valores aceitáveis para ROLE em Papéis do IAM do Cloud Run.

Ver participantes

É possível ver os principais de serviços e jobs.

Ver principais em um serviço

Para ver os principais de um serviço:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do serviço que você quer ver para principais e papéis. (Não clique no próprio serviço.)

  3. Selecione o serviço que você quer ver para participantes e papéis.

  4. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  5. A lista de papéis e os principais serão mostrados, agrupados por papel concedido.

gcloud

Use o comando gcloud run services get-iam-policy:

gcloud run services get-iam-policy SERVICE_NAME

Ver principais em um job

Para ver os principais de um job:

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do job a que você quer adicionar principais. (Não clique no job em si.)

  3. Selecione o job de que você quer ver os principais e papéis.

  4. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  5. A lista de papéis e os principais serão mostrados, agrupados por papel concedido.

gcloud

Use o comando gcloud run jobs get-iam-policy:

gcloud run jobs get-iam-policy JOB_NAME

Controlar acesso em todos os serviços e jobs em um projeto

Se você quiser conceder papéis a principais em todos os serviços e jobs em um projeto, use o IAM para envolvidos no projeto.

IU do Console

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Encontre o participante para quem você quer conceder um papel para todo o projeto.

  3. Clique no Lápis de edição no lado direito da linha do participante.

  4. Clique em Adicionar outro papel e escolha aquele que você quer.

  5. Clique em Salvar.

gcloud

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

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=MEMBER_TYPE \
  --role=ROLE

em que MEMBER_TYPE é o tipo de participante (por exemplo, user:email@domain.com) e ROLE é o papel (por exemplo, roles/run.admin).

Os tipos de participantes allUsers e allAuthenticatedUsers não podem ser aplicados no nível do projeto e, em vez disso, precisam ser adicionados a cada serviço individualmente.

Desativar o invocador do Cloud Run para serviços

É possível desativar ou reativar a verificação do IAM do Invocador do Cloud Run para qualquer serviço do Cloud Run. A verificação é aplicada por padrão.

Para desativar ou reativar a verificação do IAM do invocador em um serviço, você precisa ter as seguintes permissões:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Essas permissões estão incluídas nos papéis Proprietário e Administrador do Cloud Run. Confira Papéis do IAM do Cloud Run para ver a lista completa de papéis e permissões associadas.

Desativar a verificação do IAM do invocador do Cloud Run

  1. Substitua a restrição de política da organização constraints/run.requireInvokerIam no nível da organização ou do projeto, conforme necessário. É possível usar tags para definir regras mais detalhadas para serviços específicos do Cloud Run.

    Para remover a restrição de política do console do Google Cloud:

    1. Acessar IAM

    2. Clique na guia Políticas da organização.

    3. Encontre a política Permitir IAM do invocador desativado (Cloud Run) e selecione Editar política no menu "Ações".

    4. Verifique se a política está configurada como Não aplicada.

    5. Clique em Definir política.

  2. Desative a verificação:

    Console

    1. Acessar o Cloud Run

    2. Clique em Criar serviço se estiver configurando um novo serviço e preencha a página inicial de configurações de serviço conforme necessário. Se você estiver configurando um serviço atual, clique nele e em Segurança.

    3. Desmarque Usar o Cloud IAM para autenticar as solicitações recebidas.

    4. Clique em Criar ou Salvar.

    gcloud

    • Use a sinalização --no-invoker-iam-check:

      gcloud run deploy SERVICE_NAME --no-invoker-iam-check

      em que SERVICE_NAME é o nome do serviço.

    YAML

    1. Para visualizar e fazer o download da configuração:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Atualize a anotação run.googleapis.com/invoker-iam-disabled::

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
         annotations:
            run.googleapis.com/invoker-iam-disabled: true
         name: SERVICE_NAME

      em que SERVICE_NAME é o nome do serviço do Cloud Run.

    3. Substitua o serviço pela nova configuração usando o seguinte comando:

      gcloud run services replace service.yaml

Verifique se a verificação está desativada após a implantação, navegando até o endpoint HTTPS do serviço.

Ative novamente a verificação do IAM do invocador do Cloud Run.

Para reativar a verificação:

Console

  1. Acessar o Cloud Run

  2. Clique no serviço e em Segurança.

  3. Selecione Usar o Cloud IAM para autenticar as solicitações recebidas.

  4. Clique em Salvar.

gcloud

  • Atualize o serviço transmitindo a flag --invoker-iam-check:

    gcloud beta run services SERVICE_NAME --invoker-iam-check

    em que SERVICE_NAME é o nome do serviço.

YAML

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize a anotação run.googleapis.com/invokerIamCheckDisabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invokerIamCheckDisabled: false
        name: SERVICE_NAME

    em que SERVICE_NAME é o nome do serviço do Cloud Run.

Confira se a verificação foi reativada após a implantação acessando o endpoint HTTPS do serviço.

Próximas etapas

Saiba como autenticar desenvolvedores, serviços e usuários com segurança para os serviços que você acabou de proteger.