Usar autenticação com destinos HTTP

O Cloud Scheduler poderá chamar destinos HTTP que exigem autenticação se você tiver configurado uma conta de serviço associada com as credenciais apropriadas.

Configurar a conta de serviço

  1. Identifique uma conta de serviço atual para usá-la na chamada do Cloud Scheduler do destino HTTP ou crie uma nova conta para essa finalidade. A conta de serviço precisa pertencer ao mesmo projeto em que os jobs do Cloud Scheduler foram criados. Essa será a conta de serviço do cliente.

  2. Se seu destino faz parte do Google Cloud, atualize sua conta de serviço ao cliente concedendo a função IAM necessária. Cada serviço no Google Cloud requer um papel diferente. Para o Cloud Run, por exemplo, você precisaria adicionar a função Cloud Run Invoker e assim por diante. O serviço de recebimento verifica automaticamente o token gerado. Se o destino estiver fora do Google Cloud, o serviço de recebimento precisará verificar manualmente o token.

  3. A conta de serviço padrão do Cloud Scheduler também precisa estar presente no projeto e ter o papel Cloud Scheduler Service Agent concedido a ela. Isso é necessário para que ele possa gerar tokens de cabeçalho em nome da conta de serviço do cliente e criar uma autenticação no destino. Com esse papel, a conta de serviço do Cloud Scheduler é definida automaticamente quando você ativa a API Cloud Scheduler, a menos que você a tenha habilitado antes de 19 de março de 2019. Se esse for o caso, você precisa adicionar o papel manualmente.

Criar um job do programador com autenticação

Para criar um job que use autenticação, você precisa adicionar o tipo de token e o endereço de e-mail que identifica a conta de serviço do cliente à solicitação create-job:

Console

  1. Especifique a frequência como sempre.
  2. Especifique HTTP como o tipo de destino.
  3. Adicione o URL e o método HTTP como sempre.
  4. Na lista Cabeçalho de autenticação, selecione o tipo de token. O OIDC (token de ID) geralmente é usado exceto para APIs do Google hospedadas em *.googleapis.com, já que essas APIs esperam um token de acesso OAuth.
  5. Em Conta de serviço, especifique o e-mail da conta de serviço do cliente.
  6. Público-alvo é opcional e limita os destinatários do token OIDC. Normalmente, o URL de destino do job (sem parâmetros de URL). Se não for especificado, por padrão, todo o URL será usado como o público-alvo (incluindo parâmetros de solicitação).

gcloud

gcloud scheduler jobs create http JOB_ID \
  --schedule="FREQUENCY" --uri=URI \
  --oidc-service-account-email=CLIENT_SERVICE_ACCOUNT_EMAIL

Substitua:

  • JOB_ID: um nome para o job. Ele precisa ser exclusivo no projeto. Observe que não é possível reutilizar um nome de job em um projeto mesmo se você excluir o job associado a ele.
  • FREQUENCY: o intervalo do job é a frequência de execução do job, por exemplo, every 3 hours ou every 10 mins. É possível usar aqui qualquer string compatível com o formato crontab. Embora não seja mais recomendado o uso dele, a sintaxe cron do App Engine legada ainda é compatível com jobs existentes.
  • URI: o URL totalmente qualificado do endpoint.
  • --oidc-service-account-email ou --oauth-service-account-email: define o tipo de token. O OIDC geralmente é usado exceto para APIs do Google hospedadas em *.googleapis.com, já que essas APIs esperam um token OAuth.
  • CLIENT_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço do cliente.
  • Outros parâmetros opcionais estão disponíveis e são descritos na referência da linha de comando gcloud.

Escolher tipos de token

Para autenticar entre o Cloud Scheduler e um destino HTTP, o Cloud Scheduler cria um token de cabeçalho com base na conta de serviço do cliente, identificada pelo e-mail e envia-o, usando HTTPS, para o destino. É possível usar um token de ID (OIDC) ou um token OAuth (de acesso). O OIDC geralmente é usado exceto para APIs do Google hospedadas em *.googleapis.com, já que essas APIs esperam um token OAuth.

Adicionar manualmente o papel de agente de serviço do Cloud Scheduler à conta de serviço do Cloud Scheduler

Isso é necessário somente se você ativou a API Cloud Scheduler antes de 19 de março de 2019.

Console

  1. No console, acesse a página Configurações.

    Acesse configurações

  2. Encontre e copie o número do projeto.

  3. No console, acesse a página IAM.

    Acessar IAM

  4. Clique em Add (Adicionar). O painel Adicionar participantes é aberto.

  5. No campo Novos participantes, adicione um endereço de e-mail com o formato:

    service-PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com
    

    Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud.

  6. Na lista Selecionar um papel, selecione Service Management > Cloud Scheduler Service Agent.

  7. Clique em Save.

gcloud

  1. Encontre seu número do projeto:

    gcloud projects describe PROJECT_ID --format='table(projectNumber)'
    

    Substitua PROJECT_ID pelo ID do projeto.

  2. Copie o número.

  3. Conceda à conta de serviço do Cloud Scheduler o papel Cloud Scheduler Service Agent:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com \
       --role roles/cloudscheduler.serviceAgent
    

    Substitua:

    • PROJECT_ID: o ID do projeto
    • PROJECT_NUMBER: o número do projeto que você copiou anteriormente.