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.
Como configurar a conta de serviço
- 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.
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 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
- Especifique a frequência como sempre.
- Especifique o HTTP como tipo de destino.
- Adicione o URL e o método como sempre.
- 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. - Adicione o e-mail da conta de serviço ao cliente na caixa de texto
Service account
.
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:
${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.- 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.
${URI}
é o URL completo do endpoint.--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.${CLIENT_SERVICE_ACCOUNT_EMAIL}
é o e-mail da conta de serviço ao cliente.- 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
- Encontre o número do projeto na página de configurações do projeto do Google Cloud.
- Copie o número.
- Abra a página do Admin Console do IAM.
- Clique em
Add
. A telaAdd members
é aberta. 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.
Na lista suspensa
Select a role
, escolhaService Management
->Cloud Scheduler Service Agent
Clique em
Save
.
Uso da gcloud
Encontre seu número do projeto:
gcloud projects describe [project-id] --format='table(projectNumber)'
Substituindo [project-id] pelo ID do projeto.
Copie o número.
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.