Ativar a autorização binária para o Cloud Run

Neste guia, mostramos como configurar a autorização binária para aplicar a implantação baseada em política dos jobs e serviços do Cloud Run.

Antes de começar

Para configurar o Cloud Run e ativar APIs, faça o seguinte:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  7. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  13. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  14. Ativar a autorização binária em um serviço atual do Cloud Run

    É possível ativar a aplicação da autorização binária em um serviço atual. Para ativar a aplicação depois de ativá-la, talvez seja necessário implantar uma revisão ou atualizar o tráfego do serviço.

    É possível ativar a aplicação da autorização binária em um serviço atual usando o console Google Cloud ou a Google Cloud CLI:

    Console

    1. Acesse a página do Cloud Run no console do Google Cloud .

      Acessar o Cloud Run

    2. Clique no serviço.

    3. Clique na guia Segurança.

    4. Para ativar a aplicação da autorização binária no serviço, clique em Ativar.

    5. Opcional: para configurar a política de autorização binária, clique em Configurar política.

    gcloud

    Ative a autorização binária no serviço e implante-o:

    gcloud run services update SERVICE_NAME --binary-authorization=default
    

    Substitua SERVICE_NAME por um nome para o serviço.

    YAML

    1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Atualize a anotação run.googleapis.com/binary-authorization: da seguinte maneira:

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        annotations:
          run.googleapis.com/binary-authorization: POLICY
        name: SERVICE
      spec:
        template:

      Substitua:

      • SERVICE: o nome do Cloud Run
      • POLICY: defina como default
    3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

    Ativar a autorização binária em um job atual do Cloud Run

    É possível ativar a aplicação da autorização binária em um job atual usando o consoleGoogle Cloud ou a Google Cloud CLI:

    Console

    1. Acesse a página de jobs do Cloud Run no console Google Cloud .

      Acessar o Cloud Run

    2. Clique no job para abrir os detalhes.

    3. Clique na guia Configuração.

    4. Em Autorização binária, selecione uma política na lista.

    5. Clique em Aplicar para ativar a aplicação da autorização binária no job.

    6. Opcional: para configurar a política de autorização binária, clique em Configurar política.

    gcloud

    Ative a autorização binária no job:

    gcloud run jobs update JOB_NAME --binary-authorization=POLICY
    

    Substitua:

    • JOB_NAME: o nome do job.
    • POLICY: a política que você quer aplicar. Use o valor default para usar a política padrão.

    Recomendamos que você exija uma autorização binária para o Cloud Run configurando uma política da organização para fazer isso. A autorização binária pode ser desativada pelos desenvolvedores do Cloud Run se a política não estiver configurada.

    Conferir a política

    Para analisar a política, clique em Ver política.

    Para mais informações, consulte Como configurar uma política de autorização binária.

    Falha na implantação do serviço ou do job

    Se a implantação do job ou serviço falhar por violar a política de autorização binária, talvez você veja um erro como este:

    Revision REVISION_NAME uses an unauthorized container image.
    Container image IMAGE_NAME is not authorized by policy.
    

    O erro também contém informações sobre o motivo pelo qual a imagem violou a política. Nesse caso, é possível usar a implantação forçada para ignorar a aplicação da política e implantar a imagem.

    Ativar a autorização binária em um novo serviço

    É possível ativar a autorização binária em um novo serviço usando o console Google Cloud ou a Google Cloud CLI:

    Console

    1. Acesse a página do Cloud Run:

      Acesse o Cloud Run

    2. Clique em Criar serviço.

    3. No formulário Criar serviço:

      1. Selecione o Cloud Run como a plataforma de desenvolvimento.
      2. Selecione a região em que você quer que o serviço esteja localizado.
      3. Digite o nome do serviço.
      4. Clique em Avançar para acessar a página Configurar a primeira revisão do serviço.
      5. Selecione Implantar uma revisão de uma imagem de contêiner atual.
      6. Digite ou selecione a imagem a ser implantada.
      7. Expanda a seção Configurações avançadas.
      8. Clique na guia Security.
      9. Marque a caixa de seleção Verificar a implantação do contêiner com autorização binária.

      10. Opcional: clique em Configurar política para configurar a política de autorização binária. Para saber mais sobre como configurar uma política, consulte Como configurar uma política.

      11. Implante o serviço.

    gcloud

    Ative a autorização binária no serviço e implante-o:

      gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION
    

    Substitua:

    • SERVICE_NAME: um nome para o serviço.
    • IMAGE_URL: a imagem que você quer implantar.
    • REGION: a região em que você quer implantar o serviço.

    Ativar a autorização binária em um novo job

    É possível ativar a autorização binária em um novo job usando uma das seguintes opções:

    Console

    1. Acesse a página de jobs do Cloud Run:

      Acessar jobs do Cloud Run

    2. Clique em Criar job para exibir o formulário Criar job.

      1. No formulário, especifique a imagem do contêiner que contém o código do job ou selecione uma opção em uma lista de contêineres implantados anteriormente.
      2. O nome do job é gerado automaticamente a partir da imagem do contêiner. É possível editar ou mudar o nome do job conforme necessário. Não é possível alterar o nome de um job depois que ele é criado.
      3. Selecione a região em que você quer que o job esteja localizado.
      4. Especifique o número de tarefas que você quer executar no job. Todas as tarefas precisam ser bem-sucedidas para que o job seja concluído. Por padrão, as tarefas são executadas em paralelo.
    3. Clique em Contêiner, variáveis e secrets, conexões, segurança para definir outras propriedades do job.

      • Clique na guia Configurações. Na seção Recursos, configure o seguinte:

        1. No menu suspenso Memória, especifique a quantidade de memória necessária. O padrão é o mínimo necessário, 512 MiB.
        2. No menu CPU, especifique a quantidade de CPU necessária. O padrão é o mínimo necessário, 1 CPU.
      • Na seção Capacidade da tarefa:

        1. Em Tempo limite da tarefa, especifique o período máximo em segundos em que a tarefa pode ser executada, até 168 horas (7 dias). Cada tarefa precisa ser concluída dentro do tempo especificado. O padrão é de 10 minutos.

        2. Em Número de novas tentativas por tarefa com falha, especifique o número de novas tentativas em caso de falhas de tarefa. O padrão é três novas tentativas.

      • Na seção Paralelismo:

        1. Na maioria dos casos, é possível selecionar Executar o máximo possível de tarefas simultaneamente.
        2. Se você precisar definir um limite menor devido a restrições de escalonamento nos recursos acessados pelo job, selecione Limitar o número máximo de tarefas simultâneas e especifique o número de tarefas simultâneas no campo Limite de paralelismo personalizado.
    4. Quando terminar a configuração, clique em Criar para criar o job no Cloud Run.

    5. Para executar o job, consulte Executar jobs ou executar jobs em uma programação.

    gcloud

    1. Crie um novo job com a autorização binária ativada:

      gcloud run jobs create JOB_NAME \
        --image IMAGE_URL OPTIONS \
        --binary-authorization=POLICY \
        --region=REGION

      Substitua:

      • JOB_NAME: o nome do job que você quer criar. É possível omitir esse parâmetro, mas será solicitado o nome do job se você omiti-lo.
      • POLICY: a política que você quer aplicar. Use o valor default para usar a política padrão.
      • IMAGE_URL: uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
      • REGION: a região em que o job será executado.
      • OPTIONS: qualquer uma das opções disponíveis descritas na página de criação de jobs do Cloud Run.
    2. Aguarde a conclusão da criação do job. Após a conclusão, o console exibe uma mensagem de sucesso.

    3. Para executar o job, consulte Executar jobs ou executar jobs em uma programação.

    Quando você cria um novo job, o agente de serviço do Cloud Run precisa ser capaz de acessar o contêiner, o que é o caso por padrão.

    YAML

    1. Crie um novo arquivo job.yaml com este conteúdo:

      apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB
        annotations:
          run.googleapis.com/binary-authorization: POLICY
      spec:
        template:
          spec:
            containers:
            - image: IMAGE

      Substitua:

      • JOB: o nome do seu job do Cloud Run
      • IMAGE: o URL da imagem do contêiner
      • POLICY: defina como default
    2. Implante o novo job usando este comando:

      gcloud run jobs replace job.yaml

    A seguir