Solicitação de integrações de segurança com especificações de aplicativos

Este tópico descreve como configurar um Snowflake Native App para usar as especificações de aplicativo para solicitar acesso às integrações de segurança na conta do consumidor. As integrações de segurança permitem que um aplicativo se conecte a um serviço de autenticação de terceiros, como o OAuth.

Acesso a provedores de autenticação de terceiros a partir de um aplicativo

Para implementar um serviço de autenticação de terceiros, o Snowflake fornece integrações de segurança. Uma integração de segurança permite que um aplicativo se conecte a um serviço de autenticação de terceiros, como o OAuth.

Nota

Os Snowflake Native Apps só oferecem suporte a integrações de segurança do tipo API_AUTHENTICATION. Para obter mais informações, consulte CREATE SECURITY INTEGRATION (Autenticação de API externa).

Fluxo de trabalho de especificação de aplicativos para integrações de segurança

Este é o fluxo de trabalho geral de configuração de aplicativo para uso de uma integração de segurança:

  1. Os provedores configuram a concessão automatizada de privilégios para o aplicativo. Isso concede privilégios ao aplicativo para criar uma integração de segurança.

    Nota

    As especificações de aplicativo exigem que manifest_version = 2 seja definido no arquivo de manifesto.

  2. Os provedores adicionam o privilégio CREATE INTEGRATION ao arquivo de manifesto.

  3. Os provedores adicionam instruções SQL ao script de configuração para criar os seguintes objetos, conforme necessário:

    Os provedores podem adicionar esses comandos diretamente no script de configuração, de modo que esses objetos sejam criados quando o aplicativo for instalado. Alternativamente, esses comandos podem ser adicionados a um procedimento armazenado que é chamado no momento da execução para criar esses objetos.

  4. Os consumidores aprovam as informações relacionadas à integração do OAuth quando configuram o aplicativo. Para saber como os consumidores visualizam e aprovam especificações de aplicativos, consulte Aprovar conexões com recursos externos usando especificações de aplicativo.

Definição da especificação de aplicativo para integrações de segurança

Para uma integração de segurança, a definição da especificação de aplicativo inclui as propriedades necessárias para se conectar a um provedor de terceiros. Para o OAuth, a definição da especificação do aplicativo depende do tipo de OAuth. A tabela a seguir lista a definição de especificações do aplicativo para cada tipo:

Tipo de integração de segurança

Valores definidos na especificação de aplicativo

CLIENT_CREDENTIALS

  • OAUTH_TOKEN_ENDPOINT (obrigatório)

  • OAUTH_ALLOWED_SCOPES (obrigatório)

AUTHORIZATION_CODE_GRANT

  • OAUTH_TOKEN_ENDPOINT (obrigatório)

  • OAUTH_AUTHORIZATION_ENDPOINT (opcional)

JWT

  • OAUTH_TOKEN_ENDPOINT (obrigatório)

  • OAUTH_AUTHORIZATION_ENDPOINT (opcional)

Definição da versão do arquivo de manifesto

Para habilitar a concessão automatizada de privilégios para um aplicativo, defina a versão no início do arquivo de manifesto, conforme mostrado no exemplo a seguir:

manifest_version: 2
Copy

Adicionar o privilégio CREATE INTEGRATION ao arquivo de manifesto

Para permitir que um aplicativo crie uma integração de segurança, adicione o privilégio CREATE INTEGRATION ao arquivo de manifesto, como mostrado no exemplo a seguir:

manifest_version: 2
...
privileges:
  - CREATE INTEGRATION
      description: "Allows the app to create security integrations to access external auth providers"
...
Copy

Esta entrada na seção privileges do arquivo de manifesto especifica que o aplicativo usa uma integração de segurança. Para que o aplicativo use a concessão automatizada de privilégios, o arquivo de manifesto também exige manifest_version: 2.

Adicionar uma integração de segurança ao script de configuração

As integrações de segurança permitem que um aplicativo se conecte a um serviço de autenticação de terceiros, como o OAuth. Para criar uma integração de segurança para um aplicativo, adicione o comando CREATE SECURITY INTEGRATION (Autenticação de API externa) ao script de configuração, como mostrado no exemplo a seguir:

CREATE SECURITY INTEGRATION external_oauth_provider
  TYPE = API_AUTHENTICATION
  AUTH_TYPE = OAUTH2
  OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
  OAUTH_CLIENT_ID = 'YOUR_CLIENT_ID'
  OAUTH_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
  OAUTH_GRANT = 'CLIENT_CREDENTIALS'
  OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
  OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default')
  ENABLED = TRUE;
Copy

Este exemplo mostra como criar uma integração de segurança para se conectar ao Microsoft SharePoint usando o OAuth com credenciais de cliente. Consulte outros métodos aceitos para conexão com um provedor do OAuth em CREATE SECURITY INTEGRATION (Autenticação de API externa).

Criar uma especificação de aplicativo para uma integração de segurança

O exemplo a seguir mostra como criar uma especificação de aplicativo para uma integração de segurança usando o tipo CLIENT_CREDENTIALS OAuth:

ALTER APPLICATION SET SPECIFICATION oauth_app_spec
  TYPE = SECURITY_INTEGRATION
  LABEL = 'Connection to an external OAuth provider'
  DESCRIPTION = 'Integrates an external identity provider in the app'
  OAUTH_TYPE = 'CLIENT_CREDENTIALS'
  OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
  OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default');
Copy

Nota

Os valores que você fornece ao criar a especificação de aplicativo devem ser os mesmos que você usa na criação da integração de segurança no script de configuração.

Para obter informações sobre o uso de outros tipos de OAuth, consulte ALTER APPLICATION SET SPECIFICATIONS.

Aprovação da especificação do aplicativo na conta de consumidor

Depois que o provedor configura o aplicativo para criar a integração de segurança e a especificação do aplicativo, os consumidores podem visualizar a especificação e aprová-la ou rejeitá-la conforme necessário no momento da configuração. Para obter mais informações, consulte Aprovar conexões com recursos externos usando especificações de aplicativo.