Neste tutorial, você encontra uma abordagem para ajudar a proteger funções do Cloud invocadas de serviços hospedados fora do Google Cloud. São casos de uso comum a invocação do Cloud Functions de apps de software como serviço (SaaS), como sistemas de gerenciamento de relacionamento com o cliente (CRM), sistemas de parceiros ou apps da Web voltados ao consumidor.
Este tutorial é voltado a arquitetos, proprietários de produtos e profissionais de TI. Nele você encontra informações sobre como invocar uma Função do Cloud a partir de uma fonte externa, além de discussões de casos de uso comuns voltado à implantação do Cloud Functions.
Esse tutorial presume que há familiarização com o Cloud Functions, o Salesforce, o Node.js e as APIs REST.
Objetivos
- Implantar uma função do Cloud que pode ser invocada por um serviço externo.
- Controlar o acesso à função usando as permissões de gerenciamento de identidade e acesso (IAM, na sigla em inglês).
- Criar uma solicitação JSON Web Token (JWT) e invocar a função do Cloud usando tokens de ID de serviços externos.
- Verifique se apenas os serviços autorizados têm acesso à função protegida.
Custos
Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:
- Cloud Functions
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API Cloud Functions.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API Cloud Functions.
Introdução
O Cloud Functions oferece uma maneira de executar seu código no Google Cloud e invocar as funções sob demanda ou como resposta a eventos.
As empresas contam, no geral, com uma ampla variedade de plataformas e apps em seu ecossistema tecnológico. A integração dessas plataformas e dos dados da empresa armazenados nelas geralmente é fundamental para a agilidade dos negócios. Proteger e salvaguardar dados corporativos e a movimentação de dados entre apps é fundamental para as organizações. Ao integrar seus apps corporativos, como o CRM do Salesforce, com o Cloud Functions, é necessário adotar medidas para proteger a invocação das funções a fim de controlar como e por quem elas são invocadas.
Há muitos benefícios em um mecanismo de controle de acesso bem projetado. Ele ajuda a reduzir a superfície de ataque e emprega os princípios de privilégio mínimo. Além disso, estabelece mecanismos de segurança e controle e ajuda a tornar os custos mais previsíveis, uma vez que é possível limitar a lista de invocadores permitidos.
Para saber como adicionar controle de acesso ao Cloud Functions, confira este tutorial sobre como invocar uma Função do Cloud protegida do CRM do Salesforce. A função é invocada quando um novo registro de cliente é criado na plataforma do CRM do Salesforce e postado para processamento no sistema de registro (um mestre de cliente) do Google Cloud. Embora este tutorial seja voltado ao uso do CRM do Salesforce, a abordagem usada nesta solução pode ser aplicada a como chamar o Cloud Functions de outros apps SaaS.
Para simplificar, a Função do Cloud usada é fornecida em um repositório do GitHub.
Arquitetura
A figura a seguir descreve a arquitetura e as principais etapas para invocar uma Função do Cloud protegida de um serviço externo. É possível implantar, de forma privada, instâncias da Função do Cloud para que apenas usuários e serviços autorizados possam invocar essas funções.
As etapas no diagrama são as seguintes:
- O serviço externo do Salesforce solicita um token de ID usando um JWT assinado.
- Se o JWT for válido, um token de ID assinado será retornado do servidor de autorização do Google.
- O serviço do Salesforce usa o token de ID para realizar uma solicitação de API para a Função do Cloud protegida.
- O contêiner da Função do Cloud valida internamente o token de ID enviado no cabeçalho Authorization Bearer pelo serviço do Salesforce.
- A Função do Cloud é executada com base na validade do token:
- Se o token for válido, o código da Função do Cloud será executado e uma resposta de sucesso será retornada ao serviço de chamada. Outros serviços do Google Cloud podem ser invocados da Função do Cloud, conforme necessário.
- Se o token não for válido, uma resposta de código de status HTTP
401
ou403
será retornada, e o código da função do Cloud não será executado.
Para os fins deste tutorial, o serviço externo que chama a função do Cloud está hospedado na plataforma do Salesforce. A criação de um registro de cliente no CRM do Salesforce aciona o pipeline e invoca as etapas descritas no diagrama. O CRM do Salesforce tem a chave privada da conta de serviço do Google Cloud e executa as etapas descritas no diagrama para chamar a Função do Cloud protegida. Para isso, use uma classe Apex do Salesforce.
Quando um registro de cliente é criado no CRM do Salesforce, um gatilho Apex faz com que um job
que pode ser colocado em fila
na classe Apex (GCPManageCustomersService
) seja executado
de forma assíncrona.
Casos de uso comuns de invocação do Cloud Functions protegido
É possível integrar o Cloud Functions ao seu ecossistema, onde ele pode servir de base no seu processo corporativo completo. O Cloud Functions pode ser usado para as seguintes tarefas:
Inserir dados da empresa no Google Cloud para armazenamento e processamento analítico, como registros de clientes de sistemas de CRM de front-end.
Criar ou atualizar dados de clientes mantidos em armazenamentos de backup, como o Firestore e o Cloud SQL, quando esses armazenamentos funcionam como mestres de clientes (ou seja, o sistema de registro).
Recuperar dados transacionais, como pedidos, solicitações de serviço, agendamentos de serviço e detalhes do produto, de armazenamentos de dados no Google Cloud. Isso pode ser realizado para criar visualizações em 360 graus do cliente em uma plataforma SaaS, como o Salesforce.
Transformar arquivos de dados recebidos de organizações parceiras, que devem ser analisados, processados e carregados em um data lake ou em um armazenamento de dado no Google Cloud.
Analisar dados de interação do cliente, como envios de formulários ou uploads de imagens ou documentos em um site, para gerar insights usando o BigQuery e o BigQuery ML.
Neste tutorial, você implementará o primeiro caso de uso: como inserir dados da empresa no Google Cloud. Quando os dados do cliente são criados no CRM do Salesforce, eles são enviados ao Google Cloud através da invocação de uma Função do Cloud protegida.
O novo registro do cliente pode ser processado conforme necessário no Google Cloud. Alguns padrões comuns incluem a inserção do registro do cliente em um mestre do cliente para processamento analítico, como Cloud SQL, Firestore ou BigQuery. O presente tutorial não inclui uma seção sobre como processar esses registros.
Como inicializar seu ambiente
No console, clique em Ativar o Cloud Shell.
Use o Cloud Shell para todos os comandos do terminal neste tutorial.
No Cloud Shell, defina o projeto criado ou selecionado como projeto padrão. Substitua project-id pelo ID do projeto do Cloud.
gcloud config set project project-id
Atribua configurações padrão para região e zona:
gcloud config set run/region us-central1 gcloud config set compute/zone us-central1-a
Neste tutorial, use
us-central1
eus-central1-a
como a região e a zona padrão, respectivamente.
Como criar a Função do Cloud protegida
A primeira etapa é criar a Função do Cloud que será posteriormente invocada.
Clonar o repositório de origem
No Cloud Shell, clone o repositório do GitHub que contém a Função do Cloud de amostra e os artefatos do Salesforce:
git clone https://github.com/GoogleCloudPlatform/salesforce-cloud-functions-crm-tutorial
Altere para o diretório criado ao clonar o repositório:
cd salesforce-cloudfunc-integration
Revisar o código no diretório
O diretório contém dois diretórios, chamados salesforce
e
manage-customer-func
. O diretório salesforce
tem os seguintes
arquivos de código Apex do Salesforce:
- arquivo
CustomerAccounts.trigger
. Ele contém um código que aciona um job que pode ser colocado em fila na classeGCPManageCustomersService
quando uma nova conta de cliente é criada. - classe
GCPManageCustomersService
. Esse arquivo contém o código para solicitar um token de ID do Google em troca de um JWT gerado, bem como invoca a Função do Cloud. - Arquivos de metadados XML do Salesforce.
O diretório manage-customer-func
tem os arquivos de código do Node.js para a Função do Cloud chamada
secureFunction
, em conjunto com os arquivos de empacotamento que descrevem
as dependências da Função do Cloud.
Criar uma conta de serviço do serviço externo do Salesforce para invocar a função
É uma prática recomendada o gerenciamento rigoroso do acesso a serviços e recursos implantados no Google Cloud seguindo o princípio de privilégio mínimo. Nesta seção, você criará uma conta de serviço do serviço SaaS externo que tem acesso à Função do Cloud.
Console
Crie uma conta de serviço:
No console, acesse a página Contas de serviço.
Selecione o projeto.
Clique em
Criar conta de serviço.No campo Nome da conta de serviço, insira o nome
function-invoker-sa
. O console preenche o campo ID da conta de serviço com base nesse nome.Opcional: preencha o campo Descrição da conta de serviço.
Clique em Criar e continuar.
Clique em Selecionar um papel e, em seguida, selecione Invocador de funções do Cloud.
Para concluir a criação da conta de serviço, clique em Concluído.
Não feche a janela do navegador. Você vai usar isso na próxima etapa.
Faça o download de uma chave JSON para a conta de serviço que você acabou de criar:
- Na página Contas de serviço do console, clique no endereço de e-mail da conta de serviço que você criou.
- Na guia Chaves, clique em Adicionar chave e em Criar nova chave.
Na caixa de diálogo Criar chave privada, selecione P12 e clique em Criar. Um arquivo de chave P12 é salvo no seu computador.
Armazene o arquivo de chave com segurança, porque ele pode ser usado para autenticar como sua conta de serviço. Se quiser, é possível mover e renomear esse arquivo.
Depois de salvar o arquivo de chave, na caixa de diálogo Chave privada salva no seu computador, clique em Fechar.
No Cloud Shell, clique em Mais more_vert e selecione Fazer upload de um arquivo.
Para fazer upload do arquivo de chave da conta de serviço para o Cloud Shell, selecione o arquivo de chave project-id
-NNNNNN.p12
que você baixou anteriormente e clique em Abrir. (A string NNNNNN é um conjunto de números gerados como parte do nome do arquivo de chave.)No Cloud Shell, acesse o diretório principal:
cd $HOME
Renomeie o arquivo de chave carregado para usar um nome mais simples que possa ser usado posteriormente no tutorial:
mv ${DEVSHELL_PROJECT_ID}-NNNNNN.p12 external-service-invoker-sa.p12
gcloud
Acesse o diretório principal:
cd $HOME
Crie uma variável de ambiente para manter o nome da conta de serviço que será criada:
export SERVICE_ACCOUNT_NAME=function-invoker-sa
Crie uma conta de serviço:
gcloud beta iam service-accounts create ${SERVICE_ACCOUNT_NAME} \ --display-name ${SERVICE_ACCOUNT_NAME}
Gere uma chave P12 para a conta de serviço e faça o download dela:
gcloud iam service-accounts keys create ~/external-service-invoker-sa.p12 \ --key-file-type p12 \ --iam-account ${SERVICE_ACCOUNT_NAME}@${DEVSHELL_PROJECT_ID}.iam.gserviceaccount.com
O download da chave P12 é realizado no diretório principal (
$HOME
) do Cloud Shell. A saída observada no Cloud Shell também indica o local onde foi realizado o download da chave.\
Implante a Função do Cloud
Implante a Função do Cloud como uma função protegida. Somente usuários e contas de serviço que receberam permissão para acessá-la poderão invocar a função. Você configurará o acesso do IAM na próxima etapa para estabelecer as permissões.
No Cloud Shell, mude para o diretório
manage-customer-func
:cd manage-customer-func
Implante a função:
gcloud functions deploy secureFunction \ --runtime nodejs8 \ --trigger-http
Verifique se a função foi implantada:
gcloud functions describe secureFunction
Uma implantação bem-sucedida é indicada por um status pronto semelhante ao seguinte:
status: ACTIVE timeout: 60s httpsTrigger: url: https://us-central1-[PROJECT_ID].cloudfunctions.net/secureFunction
Anote o URL
httpsTrigger
. Ele será necessário mais tarde.
Conceder acesso à função implantada
Em seguida, atribua um papel apropriado à conta de serviço criada para
acessar a Função do Cloud secureFunction
. Remova, além disso, a
conta do allUsers
que é adicionada automaticamente. Como resultado, apenas a
conta de serviço pode invocar a Função do Cloud.
Console
No console, abra a página do Cloud Functions.
Selecione
secureFunction
na lista de funções.Se o painel de informações não estiver aberto, clique em Mostrar painel de informações na barra de ferramentas.
Na guia Permissões, clique em Adicionar membros.
Na caixa Novos membros, insira
function-invoker-sa
para procurar pela conta de serviço que precisa acessar sua função e, em seguida, selecione a conta de serviço.Na lista Selecionar um papel, selecione Cloud Functions e, em seguida, o papel Invocador do Cloud Functions.
Clique em Salvar.
Na guia Permissões, expanda o papel Invocador do Cloud Functions.
Na linha do membro
allUsers
, clique no botão Excluir delete e, então, em Remover para confirmar. O acesso público é então removido dessa função.
gcloud
Atribua o papel Invocador da Função do Cloud à conta de serviço criada para permitir o acesso à função implantada:
gcloud beta functions add-iam-policy-binding secureFunction \ --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${DEVSHELL_PROJECT_ID}.iam.gserviceaccount.com \ --role=roles/cloudfunctions.invoker
Remova o membro
allUsers
do papel Invocador da Função do Cloud:gcloud beta functions remove-iam-policy-binding secureFunction \ --member=allUsers \ --role=roles/cloudfunctions.invoker
Como criar um serviço do Salesforce para invocar a função protegida
Na sua organização do Salesforce, é preciso configurar o código Apex necessário para invocar o fluxo do processo corporativo. Use a CLI do Salesforce (SFDX) para implantar o código do Salesforce e a configuração necessária em uma organização de rascunho. Se quiser, poderá promover essas alterações implantadas posteriormente em ambientes de produção.
A lista a seguir resume as tarefas que devem ser executadas na sua organização do Salesforce. As instruções detalhadas nesta seção abordam de forma pormenorizada cada tarefa.
- Configure a CLI do Salesforce.
- Crie uma organização de rascunho e envie o código do repositório clonado para essa organização.
- Crie uma chave Java Keystore (JKS) a partir da chave exportada P12 da conta de serviço do Google Cloud e importe a chave JKS para o serviço do Salesforce.
- Preencha o objeto do tipo de metadados personalizados com dados relevantes para sua configuração do Google Cloud. Isso inclui o endpoint da função a ser invocada, o e-mail da conta de serviço e o endpoint do token que pode ser usado pelo serviço do Salesforce para solicitar um token de ID.
- Revise a classe Apex criada e verifique se os nomes do campo de tipo de metadados personalizados e o nome da chave JKS estão referenciados corretamente no código Apex.
- Crie um registro de cliente no CRM do Salesforce. Isso invoca o
código
CustomerAccounts.trigger
, que inicia o processo de envio dos novos dados de registro do cliente para o Google Cloud.
Configurar a CLI do Salesforce
Nesta seção, você instalará a CLI do Salesforce e configurará suaa autorização.
Instalar a CLI do Salesforce
No Cloud Shell, acesse o diretório principal:
cd $HOME
Instale a CLI do Salesforce na sessão do Cloud Shell:
wget https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz
Descompacte o arquivo .tar baixado:
tar -xvf sfdx-linux-amd64.tar.xz
Adicione o binário do Salesforce ao caminho:
export PATH="$PATH:${HOME}/sfdx-cli-v7.8.1-8f830784cc-linux-x64/bin"
Agora já é possível executar comandos usando a CLI do Salesforce.
Verifique se a CLI foi configurada corretamente:
sfdx
A saída é a seguinte:
Serão exibidas as informações da versão e uma lista de comandos.
Em Configuração na sua organização do Salesforce, na caixa Pesquisa rápida, insira
Dev Hub
e selecione Dev Hub:Ative o Dev Hub:
Esta etapa permite configurar uma organização de rascunho para implantar o código no tutorial.
No Cloud Shell, gere um certificado e um par de chaves para autenticar sua organização do Salesforce a partir da CLI do SFDX:
openssl req -x509 -sha256 -nodes -days 36500 -newkey \ rsa:2048 -keyout salesforce.key -out \ salesforce.crt
Você será solicitado a inserir detalhes para identificar o certificado. Para este tutorial, esses valores não são importantes. Dessa forma, pressione Enter para aceitar os padrões.
No Cloud Shell, clique em Mais more_vert e selecione Fazer o download do arquivo.
Na caixa Caminho do arquivo totalmente qualificado, insira o seguinte nome de arquivo e clique em Fazer o download:
salesforce.crt
Com isso, o certificado gerado é baixado na sua máquina local. Faça upload do certificado em sua organização do Salesforce no próximo procedimento.
Criar um app de conexão na organização do Salesforce (Dev Hub) para autorizar a CLI do Salesforce
Dependendo da edição da organização do Salesforce, use uma das etapas a seguir para criar um app conectado:
- No Lightning Experience, use o App Manager para criar
apps conectados. Em Configuração em sua organização do Salesforce, na
caixa Pesquisa rápida, insira
App
e selecione App Manager. Clique em Novo app conectado. - Na versão Classic do Salesforce, em Configuração em sua organização do Salesforce, na
caixa Pesquisa rápida, insira
Apps
e selecione Apps (em Versão e, em seguida, Criar). No painel Apps conectados, clique em Novo.
- No Lightning Experience, use o App Manager para criar
apps conectados. Em Configuração em sua organização do Salesforce, na
caixa Pesquisa rápida, insira
Insira o e-mail de contato e outras informações relevantes no app.
Selecione Ativar configurações do OAuth.
Para o valor de URL de callback, insira
http://localhost:1717/OauthRedirect
.Para ativar a opção de usar assinaturas digitais, clique em Escolher arquivo e selecione o arquivo de certificado
salesforce.crt
baixado anteriormente.Esse certificado serve como a chave pública usada para autenticar e conectar o cliente de SFDX em execução em uma sessão do Cloud Shell à organização Dev Hub do Salesforce.
Clique nos seguintes escopos do OAuth para adicioná-los aos Escopos do OAuth selecionados e, em seguida, clique na seta Adicionar para selecioná-los:
- Acessar e gerenciar seus dados (API)
- Faça solicitações em seu nome a qualquer momento (refresh_token, offline_access)
Fornecer acesso aos dados pela Web (Web)
Clique em Salvar.
Anote o token do cliente exibido.
Clique em Gerenciar e, em seguida, em Editar políticas para alterar as políticas do OAuth.
Defina Usuários permitidos como Os usuários aprovados pelo administrador são pré-autorizados e confirme.
Defina o relaxamento de IP como Relaxar restrições de IP.
Clique em Salvar.
Clique em Gerenciar perfis e adicione o perfil Administrador do sistema.
Isso permite aos usuários que adotam esse perfil fazer login na CLI do SFDX.
Clique em Salvar.
Concluir as etapas de autorização da CLI do Salesforce
No Cloud Shell, crie uma variável de ambiente para manter o token do cliente criado pelo Connected App na etapa anterior:
export CONSUMER_KEY=your-consumer-key
Substitua your-consumer-key pelo token do cliente.
Crie uma variável de ambiente para manter o nome de usuário da organização do Salesforce criada anteriormente neste tutorial:
export SALESFORCE_USERNAME=your-salesforce-username
Substitua your-salesforce-username pelo seu nome de usuário do Salesforce.
No Cloud Shell, autentique-se na sua organização do Salesforce com uma concessão JWT:
sfdx force:auth:jwt:grant \ -u ${SALESFORCE_USERNAME} \ -f $(pwd)/salesforce.key -i ${CONSUMER_KEY}
Será exibida uma mensagem indicando que a autorização foi concedida.
Para mais informações sobre como autorizar sua organização usando o fluxo baseado em JWT, consulte Autorizar uma organização usando o fluxo baseado em JWT na documentação do Salesforce.
Enviar os metadados do Salesforce para uma organização de rascunho
No Cloud Shell, acesse o diretório do repositório clonado:
cd salesforce-cloudfunc-integration
Crie uma organização de rascunho para testar o repositório clonado para este tutorial.
sfdx force:org:create \ --setdefaultusername \ --definitionfile salesforce/config/project-scratch-def.json \ --targetdevhubusername ${SALESFORCE_USERNAME} \ --setalias gcp-func-test-scratch-org
Recomenda-se usar uma organização de rascunho para essa finalidade, que fornece um espaço seguro para testar novos pacotes e repositórios clonados.
Acesse o subdiretório
salesforce
:cd salesforce
Envie os metadados e o código para a organização de rascunho:
sfdx force:source:push
Gere um URL para a organização de rascunho:
sfdx force:org:open
Clique no URL gerado para acessar a organização de rascunho no seu navegador.
Criar um arquivo de keystore JKS com a chave P12 exportada
Os certificados e pares de chaves do Salesforce são usados para a comunicação SSL autenticada entre o serviço do Salesforce e os sites e servidores externos. O serviço do Salesforce precisa armazenar com segurança a chave P12 da conta de serviço do Google Cloud gerada anteriormente neste tutorial. As chaves no serviço do Salesforce precisam ser armazenadas no formato JKS (Java KeyStore).
No Cloud Shell, adicione a chave P12 a um arquivo de keystore JKS chamado
salesforce.jks
no diretório principal:keytool \ -importkeystore \ -srckeystore $HOME/external-service-invoker-sa.p12 \ -destkeystore $HOME/salesforce.jks \ -srcstoretype pkcs12 \ -srcstorepass notasecret \ -deststorepass notasecret \ -deststoretype jks \ -destalias google_cloud \ -srcalias privatekey
No Cloud Shell, clique em Mais more_vert e em Fazer o download do arquivo.
Na caixa Caminho do arquivo totalmente qualificado, insira o seguinte nome de arquivo e clique em Fazer o download:
salesforce.jks
Com isso, é feito o download do keystore gerado no seu computador local.
Importar o arquivo JKS para a organização de rascunho do Salesforce
Conclua as etapas, então, para ativar o provedor de identidade do Salesforce.com e fazer upload da chave JKS.
Em Configuração em sua organização do Salesforce, na caixa Pesquisa rápida, insira
Identity
e clique em Provedor de identidade para acessar a página de configuração do Provedor de identidade.Clique em Ativar provedor de identidade e, em seguida, em Salvar para aceitar o certificado.
Em Configuração, na caixa Pesquisa rápida, insira
Certificate
e selecione Gerenciamento de certificados e chaves.Clique em Importar do Keystore.
Clique em Escolher arquivo e selecione o arquivo JKS baixado anteriormente.
Na caixa Senha do Keystore, digite
notasecret
.Clique em Salvar.
Verifique se o rótulo do certificado é chamado de
google_cloud
. O rótulo é importante uma vez que esse nome é usado pela classe Apex na referência ao certificado.
Criar registros de objeto do tipo metadados personalizados
O envio do repositório através da CLI do Salesforce cria um objeto de tipo de metadado personalizado para você. É necessário preencher os detalhes nesse objeto criando um registro, conforme indicado nesta seção. O registro é referenciado na classe Apex e usado para mapear metadados relevantes na Função do Cloud chamada a partir do serviço do Salesforce.
Em Configuração na organização de rascunho do Salesforce, na caixa Pesquisa rápida, insira
Custom metadata
e selecione Tipos de metadados personalizados.Será exibido um tipo de metadados personalizados chamado Chave da GCP.
Ao lado de Chave da GCP, clique em Gerenciar registros.
Clique em Novo para criar um novo registro e, em seguida, insira:
- Rótulo. Insira
GCP Function Invoker
. E-mail do cliente. Insira o endereço da conta de serviço criada no seguinte formato:
function-invoker-sa@project-id.iam.gserviceaccount.com
Substitua project-id pelo ID do projeto do Cloud para este tutorial.
Endpoint do segmento da função. Insira o URL do endpoint
httpsTrigger
da Função do Cloud:https://us-central1-project-id.cloudfunctions.net/secureFunction
Endpoint do token. Insira
https://www.googleapis.com/oauth2/v4/token
- Rótulo. Insira
Clique em Salvar.
Criar uma configuração de site remoto na organização de rascunho do Salesforce
Adicione uma Configuração de site remoto para fazer chamadas do Apex à função do Cloud do Google Cloud e aos endpoints do token da organização de rascunho do Salesforce.
- Em Configuração em sua organização do Salesforce, na caixa Pesquisa rápida, insira
Remote
e selecione Configurações de site remoto. - Clique em Novo site remoto.
- Em Nome do site remoto, insira
GCPCloudFunction
. Em URL do site remoto, insira o endpoint
httpsTrigger
da Função do Cloud:https://us-central1-project-id.cloudfunctions.net/secureFunction
Clique em Salvar.
Crie outra configuração de site remoto clicando em Novo site remoto.
Em Nome do site remoto, insira
GCPToken
.Em URL do site remoto, insira
https://www.googleapis.com
.Clique em Salvar.
Como testar a Função do Cloud
Para testar a Função do Cloud, execute dois testes:
- Acione o serviço do Salesforce para invocar a Função do Cloud usando um token válido.
- Invoque a Função do Cloud do Google Cloud sem nenhum token. Isso confirma que a Função do Cloud não pode ser chamada, a menos que você esteja autenticado.
Invocar a Função do Cloud a partir do serviço do Salesforce usando um token de ID válido
Na organização do Salesforce, clique no ícone do Acesso rápido aos apps.
Na barra de pesquisa, pesquise
Accounts
.Nos resultados, clique em Contas.
Clique em Nova para criar uma nova conta.
Em Nome, insira Conta de teste.
Clique em Salvar.
A criação da conta aciona a classe Apex, que invoca a Função do Cloud
secureFunction
.
Verificar se a Função do Cloud foi invocada
Você confirma que o registro foi recebido com sucesso pela Função do Cloud analisando os registros do Cloud Logging.
No Cloud Shell, visualize os registros gerados pela Função do Cloud
secureFunction
:gcloud functions logs read secureFunction
Se a Função do Cloud foi invocada, será exibido o nome do cliente
Test Account
criado no serviço do Salesforce nos registros.
Invocar a Função do Cloud sem nenhum token
Agora é possível verificar se apenas usuários autenticados e autorizados podem acessar a Função do Cloud.
Faça uma solicitação não autenticada para a Função do Cloud:
curl https://us-central1-${DEVSHELL_PROJECT_ID}.cloudfunctions.net/secureFunction
A resposta é um código de status HTTP
403 Forbidden
que confirma que o acesso foi negado:<html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>403 Forbidden</title> </head> <body text=#000000 bgcolor=#ffffff> <h1>Error: Forbidden</h1> <h2>Your client does not have permission to get URL <code>/secureFunction</code> from this server.</h2> <h2></h2> </body></html>
Limpeza
A maneira mais fácil de eliminar o faturamento é excluir o projeto criado para o tutorial.
Exclua o projeto
- No console, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Excluir recursos do Salesforce
Além disso, é necessário excluir a organização da Edição para desenvolvedor do Salesforce e a organização de rascunho associada criada para este tutorial.
Desativar a organização da Edição para desenvolvedor
- Em "Configuração" na organização do Salesforce (Dev Hub), na caixa Pesquisa rápida,
insira
Company
e selecione Informações da empresa. - Clique em Informações da empresa.
Clique no botão Desativar organização.
Excluir a organização de rascunho
No Cloud Shell, execute o seguinte comando para excluir a organização de rascunho do Salesforce:
sfdx force:org:delete -u gcp-func-test-scratch-org
A seguir
- Saiba mais sobre como fazer streaming de dados para o BigQuery usando o Cloud Functions.
- Explore arquiteturas de referência, diagramas, tutoriais e práticas recomendadas sobre o Google Cloud. Confira o Centro de arquitetura do Cloud.