Há duas maneiras de criar um serviço público do Cloud Run:
- Desativar a verificação do IAM do invocador do Cloud Run (recomendado).
- Atribuir o papel do IAM de invocador do Cloud Run ao tipo de membro
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 por domínio em uma política da organização.
Para desativar a verificação:
Console
No Google Cloud console, acesse a página do Cloud Run:
Clique em Criar serviço se estiver configurando um novo serviço e preencha a página de configurações iniciais do serviço conforme necessário.
Se você estiver configurando um serviço atual, clique nele e na guia Segurança.
Selecione Permitir acesso público.
Clique em Criar ou Salvar.
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 umgoogle_cloud_run_v2_service
recurso 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 serviço do Cloud Run.
- REGION: a Google Cloud região, 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
Noconsole, acesse a página Serviços do Cloud Run: Google Cloud
Clique no serviço e em Segurança.
Selecione Exigir autenticação e Identity and Access Management (IAM).
Clique em Salvar.
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 umgoogle_cloud_run_v2_service
recurso 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 serviço do Cloud Run.
- REGION: a Google Cloud região, 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.
Atribuir o papel do IAM de invocador do Cloud Run ao tipo de membro allUsers
É possível permitir o acesso público a um serviço atribuindo o papel do IAM de invocador do Cloud Run 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:
Noconsole, acesse a página Serviços do Cloud Run: Google Cloud
À esquerda do serviço que você quer tornar público, clique na caixa de seleção. Não clique no serviço em si.
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, talvez seja necessário clicar em Mostrar painel de informações e em 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ê vai receber uma solicitação para verificar se quer tornar esse recurso público. Clique em Permitir acesso público para aplicar a mudança à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
Permitir acesso público para o 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 umgoogle_cloud_run_v2_service
recurso 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.