Etapa 5: criar uma política de segurança do GCP para o serviço de proxy no console¶
Nas etapas anteriores, você criou uma Google Cloud Function que pode ser chamada por qualquer pessoa que tenha o ponto de extremidade correto do gateway de API do Google Cloud. A menos que você queira que o ponto de extremidade seja aberto ao público, você deve protegê-lo criando uma política de segurança no gateway de API do Google Cloud.
Este tópico fornece instruções para a criação de uma política de segurança para o gateway de API adicionando uma seção securityDefinitions
personalizada ao arquivo de configuração para a definição de API.
Importante
O Snowflake recomenda enfaticamente a criação de uma política de segurança para o gateway de API. Após completar essa etapa, somente o Snowflake pode chamar sua Cloud Function pelo gateway de API.
Neste tópico:
Etapa anterior¶
Atualizar o arquivo de configuração¶
Nota
O nome do arquivo de configuração é registrado no campo Configuration File Name
da sua planilha de rastreamento.
Adicione ou atualize a seguinte seção
securityDefinitions
no arquivo de configuração. Adicione isso imediatamente acima da seçãoschemes
do arquivo de configuração e no mesmo nível de recuo.securityDefinitions: <security-def-name>: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "<gmail service account>" x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<gmail service account>"
Na seção:
Substitua
<security-def-name>
por um nome de definição de segurança único (por exemplo,snowflakeAccess01
). Se você adicionou a definição de segurança temporária na etapa 2 do tutorial (Etapa 2: criar o serviço de proxy (Google Cloud API Gateway) no console), isso já está feito.Além disso, registre esse nome no campo
Security Definition Name
da sua planilha de rastreamento.Substitua
<gmail service account>
pelo valor do campoAPI_GCP_SERVICE_ACCOUNT
em sua planilha de rastreamento. Adicione o valor em dois lugares do arquivo de configuração:Campo
x-google-issuer
Campo
x-google-jwks_uri
(anexado ao final do campo)
Atualize a seção
post:
do arquivo de configuração para fazer referência à definição de segurança que você criou acima.Abaixo do campo
operationId
, adicione:security: - <security-def-name>: []
Isso deve ter um recuo no mesmo nível que o campo
operationId
.Substitua
<security-def-name>
pelo valor do campoSecurity Definition Name
em sua planilha de rastreamento, caso ainda não tenha feito isso.Certifique-se de incluir um hífen e um espaço em branco antes do nome da definição de segurança, como mostrado acima.
Certifique-se de incluir os colchetes vazios (
[]
) após os dois pontos.
Por exemplo:
security: - snowflakeAccess01: []
Salve o arquivo de configuração.
Seu arquivo de configuração atualizado deve ser semelhante ao seguinte:
swagger: '2.0'
info:
title: API Gateway config for Snowflake external function
description: This configuration file connects the API Gateway resource to the remote service (Cloud Function).
version: 1.0.0
securityDefinitions:
snowflakeAccess01:
authorizationUrl: ""
flow: "implicit"
type: "oauth2"
x-google-issuer: "<API_GCP_SERVICE_ACCOUNT>"
x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<API_GCP_SERVICE_ACCOUNT>"
schemes:
- https
produces:
- application/json
paths:
/demo-func-resource:
post:
summary: Echo the input
operationId: operationID
security:
- snowflakeAccess01: []
x-google-backend:
address: <Cloud Function Trigger URL>
protocol: h2
responses:
'200':
description: <DESCRIPTION>
schema:
type: string
Recarregar o arquivo atualizado¶
Após atualizar o arquivo de configuração, você deve recarregar o arquivo no Google Cloud Console:
Na página Gateways, clique no nome do seu gateway.
Clique em EDIT.
Em API Config, clique na caixa intitulada Select a Config.
Selecione a opção Create new API config.
Na caixa que contém Upload an API Spec, clique no botão BROWSE.
Selecione o arquivo YAML desejado, que você criou anteriormente. Verifique se ele tem a extensão
.yaml
ou.yml
.Digite o Display Name. Use um nome novo e único, não o nome que você usou anteriormente.
Se Select a Service Account for solicitado, selecione App Engine default service account.
Se você estiver criando uma função para usar na produção (e não como amostra), você pode escolher uma conta de serviço diferente.
A conta de serviço selecionada deve ter privilégios apropriados, incluindo privilégios para chamar a Google Cloud Function.
Agora você deve estar de volta à página do seu gateway de API. Se o campo Config mostrar o antigo nome de exibição do arquivo de configuração de API:
Clique em EDIT.
Em API Config, encontre a caixa Select a Config novamente, e clique na caixa.
Selecione a nova configuração de API.
Clique no botão UPDATE. Isso leva você de volta à lista de gateways de API.
Pode ser necessário esperar alguns minutos enquanto o gateway de API é atualizado. Um ícone pode aparecer à esquerda do nome do gateway de API, indicando que o gateway está sendo atualizado.
Para verificar se a atualização ainda está em andamento, clique no botão REFRESH acima do nome do gateway. Após o ícone à esquerda do nome do gateway desaparecer, o gateway deve estar totalmente atualizado, e você pode continuar para a próxima etapa.
Testar sua função externa¶
Para garantir que sua função externa funcione corretamente com o novo arquivo de configuração de segurança, chame novamente sua função externa.
Para obter mais detalhes, consulte Chamada de uma função externa para GCP.
Próxima etapa¶
Nenhum. Você criou com sucesso uma função externa para o GCP.