Há duas maneiras de criar um serviço público do Cloud Run:
- Desative a verificação do IAM do invocador do Cloud Run (recomendado).
- Atribua o papel de invocador do Cloud Run do IAM ao tipo de assinatura
allUsers.
Funções exigidas
Para desativar ou reativar a verificação do IAM do invocador em um serviço, você precisa ter as seguintes permissões:
run.services.createrun.services.updaterun.services.setIamPolicy
Essas permissões estão incluídas no papel de
administrador do Cloud Run
(roles/run.admin). 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
A maneira recomendada de criar um serviço público é desativar a verificação do IAM do invocador do Cloud Run. O Cloud Run aplica essa verificação por padrão. Use essa solução quando o projeto estiver sujeito à restrição de compartilhamento restrito de domínio em uma política da organização.
Para desativar a verificação:
Console
No console do Google Cloud , acesse o Cloud Run:
Selecione Serviços no menu de navegação do Cloud Run:
Se você estiver configurando um novo serviço, clique em Implantar contêiner e preencha a página de configurações de serviço inicial.
Se você estiver configurando um serviço atual, clique nele e na guia Segurança.
Selecione Permitir acesso público.
Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.
gcloud
Para um novo serviço, use o comando
gcloud run deploycom a flag--no-invoker-iam-check:gcloud run deploy SERVICE_NAME --no-invoker-iam-check
Substitua
SERVICE_NAMEpelo nome do serviço.Para um serviço atual, use o comando
gcloud run services updatecom a flag--no-invoker-iam-check:gcloud run services update SERVICE_NAME --no-invoker-iam-check
Substitua SERVICE_NAME pelo nome do serviço.
YAML
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
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
Substitua SERVICE_NAME pelo nome do serviço do Cloud Run.
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
invoker_iam_disabled = true
template {
containers {
image = "IMAGE_URL"
}
}
}
Substitua:
- SERVICE: o nome do seu serviço do Cloud Run.
- REGION: a região do Google Cloud , por exemplo,
europe-west1. IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
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
No console do Google Cloud , acesse a página Serviços do Cloud Run:
Clique no serviço e na guia Segurança.
Selecione Exigir autenticação e Identity and Access Management (IAM).
Clique em Visualizar as diferenças e reimplantar e em Implantar alterações.
gcloud
Atualize o serviço transmitindo a flag
--invoker-iam-check:gcloud run services update SERVICE_NAME --invoker-iam-check
Substitua
SERVICE_NAMEpelo nome do serviço.
YAML
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
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: 'false' name: SERVICE_NAME
Substitua
SERVICE_NAMEpelo nome do serviço do Cloud Run.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
invoker_iam_disabled = false
template {
containers {
image = "IMAGE_URL"
}
}
}
Substitua:
- SERVICE: o nome do seu serviço do Cloud Run.
- REGION: a região do Google Cloud , por exemplo,
europe-west1. IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Confira se a verificação foi reativada após a implantação acessando o endpoint HTTPS do serviço.
Configurar a política da organização para a verificação do IAM do invocador do Cloud Run
Se você for administrador, poderá restringir a capacidade de
desativar a verificação do IAM do invocador
usando a restrição gerenciada constraints/run.managed.requireInvokerIam.
Essa restrição não é aplicada por padrão.
Atribua o papel de invocador do Cloud Run do IAM ao tipo de assinatura allUsers.
É possível permitir o acesso público 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 no
papel de administrador do Cloud Run. Confira
Papéis do IAM do Cloud Run
para ver a lista completa de papéis e permissões associadas.
Console
Para um serviço do Cloud Run existente:
No console do Google Cloud , acesse a página Serviços do Cloud Run:
À esquerda do serviço que você quer tornar público, clique na caixa de seleção. Não clique no próprio serviço.
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.
Clique em Adicionar principal.
No campo Novos participantes, insira o valor allUsers.
No menu Selecionar um papel, selecione o papel Invocador do Cloud Run.
Clique em Salvar.
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 e selecione Permitir acesso público na seção Autenticação para disponibilizar o serviço publicamente. Para tornar um serviço particular, selecione Exigir autenticação.
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
Permita o acesso público ao SERVICE atual usando:
gcloud run services set-iam-policy SERVICE policy.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform: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:
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.