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

Etapa 4: criar a função externa para o GCP no Snowflake

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.

  1. Adicione ou atualize a seguinte seção securityDefinitions no arquivo de configuração. Adicione isso imediatamente acima da seção schemes 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>"
    
    Copy

    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 campo API_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)

  2. 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>: []
    
    Copy

    Isso deve ter um recuo no mesmo nível que o campo operationId.

    • Substitua <security-def-name> pelo valor do campo Security 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: []
    
    Copy
  3. 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
Copy

Recarregar o arquivo atualizado

Após atualizar o arquivo de configuração, você deve recarregar o arquivo no Google Cloud Console:

  1. Na página Gateways, clique no nome do seu gateway.

  2. Clique em EDIT.

  3. Em API Config, clique na caixa intitulada Select a Config.

  4. Selecione a opção Create new API config.

  5. Na caixa que contém Upload an API Spec, clique no botão BROWSE.

  6. Selecione o arquivo YAML desejado, que você criou anteriormente. Verifique se ele tem a extensão .yaml ou .yml.

  7. Digite o Display Name. Use um nome novo e único, não o nome que você usou anteriormente.

  8. 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.

  9. 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:

    1. Clique em EDIT.

    2. Em API Config, encontre a caixa Select a Config novamente, e clique na caixa.

    3. Selecione a nova configuração de API.

    4. 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.