Como usar a 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 que tenha 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. Essa será a conta de serviço do cliente.
  1. 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.

  2. O próprio Cloud Scheduler deve ter uma conta de serviço própria com a função Cloud Scheduler Service Agent concedida. 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.

Como criar um job do programador com autenticação

Para criar um trabalho que usa autenticação, você precisa adicionar duas informações à sua solicitação create-job:

  • O tipo de token que você escolheu usar
  • O endereço de e-mail que identifica a conta de serviço do cliente

    Como usar o Console

    1. Especifique a frequência como sempre.
    2. Especifique o HTTP como tipo de destino.
    3. Adicione o URL e o método como sempre.
    4. Selecione o tipo de token no menu suspenso Auth header. Observe que o OIDC geralmente é usado , exceto para APIs do Google hospedadas em *.googleapis.com: essas APIs esperam um token OAuth.
    5. Adicione o e-mail da conta de serviço ao cliente na caixa de texto Service account.

    image

    Uso da gcloud

    Sintaxe:

     gcloud scheduler jobs create http ${JOB_ID} --schedule="every 10 mins" --uri=${URI} --oidc-service-account-email=${CLIENT_SERVICE_ACCOUNT_EMAIL}
    

    Onde:

    1. ${JOB_ID} é um nome para o job. Ele precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.
    2. A programação, também conhecida como frequência, ou intervalo do job, é a frequência em que o job é executado, por exemplo, a cada três horas. É possível usar aqui qualquer string compatível com o formato crontab. Os desenvolvedores também podem usar a sintaxe de cron do App Engine se estiverem familiarizados com o antigo cron do App Engine legado.
    3. ${URI} é o URL completo do endpoint.
    4. --oidc-service-account-email ou --oauth-service-account-email define o tipo de token. Observe que o OIDC geralmente é usado , exceto para APIs do Google hospedadas em *.googleapis.com: essas APIs esperam um token OAuth.
    5. ${CLIENT_SERVICE_ACCOUNT_EMAIL} é o e-mail da conta de serviço ao cliente.
    6. Há mais opções de parâmetros descritas na referência da linha de comando do gcloud.

Como escolher tipos de token

Para realizar a autenticação 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 o envia até o destino por meio do HTTPS. É possível usar um token OIDC ou um token OAuth. O OIDC geralmente é usado , exceto para APIs do Google hospedadas em *.googleapis.com: essas APIs esperam um token OAuth.

Como adicionar manualmente o papel Cloud Scheduler Service Agent a sua conta de serviço

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

Como usar o console

  1. Encontre o número do projeto na página de configurações do projeto do Google Cloud.
  2. Copie o número.
  3. Abra a página do Admin Console do IAM.
  4. Clique em Add. A tela Add members é aberta.
  5. Na caixa de diálogo "Novos membros", adicione um endereço de e-mail no seguinte formato:

    service-[project-number]@gcp-sa-cloudscheduler.iam.gserviceaccount.com
    

    Substitua [project-number] pelo número do seu projeto acima.

  6. Na lista suspensa Select a role, escolha Service Management -> Cloud Scheduler Service Agent

  7. Clique em Save.

Uso da gcloud

  1. Encontre seu número do projeto:

    gcloud projects describe [project-id] --format='table(projectNumber)'
    

    Substituindo [project-id] pelo ID do projeto.

  2. Copie o número.

  3. Conceda à conta de serviço do Cloud Scheduler a função Cloud Scheduler Service Agent, usando o número do projeto que você copiou:

    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] pelo ID do projeto e [project-number] pelo número do projeto acima.