Exemplo: acesso externo usando OAuth e referências¶
Este tópico fornece um exemplo que descreve como usar referências para permitir que provedores concedam acesso a um ponto de extremidade externo ao Snowflake. Este exemplo usa um segredo do OAuth2 e uma integração de acesso externo para permitir o acesso.
Importante
Este exemplo mostra o método manual usando referências em que os próprios consumidores devem criar as integrações. Para novos apps, a Snowflake recomenda o uso de concessão automatizada de privilégios com especificações de app. Consulte Solicitação de integrações de acesso externo (EAIs) com especificações do aplicativo para integrações de acesso externo e Solicitação de integrações de segurança com especificações de aplicativos para integrações de segurança.
Adição de referências ao arquivo do manifesto¶
Para habilitar o acesso a um ponto de extremidade externo usando OAuth, um provedor pode adicionar as seguintes entradas no arquivo de manifesto:
Referência do EXTERNAL ACCESS INTEGRATION ao privilégio USAGE
Referência do SECRET ao privilégio READ
O exemplo de arquivo de manifesto a seguir mostra como definir essas referências:
Nota
Essas referências não podem ter a propriedade multi_valued definida como verdadeira.
Referências a segredos e objetos de acesso externo também exigem uma função configuration_callback no script de configuração. Consulte Adição da função configuration_callback ao script de configuração para obter mais informações.
Adição da função configuration_callback ao script de configuração¶
Após adicionar referências para a integração de acesso secreto e externo, você deve adicionar a função configuration_callback ao script de configuração. Para criar uma integração de acesso externo ou segredo, o aplicativo deve ser capaz de determinar valores para a porta do host, o tipo de segredo, a autorização e o ponto de extremidade do token para OAuth etc. O configuration_callback fornece essas informações da conta do consumidor para o aplicativo.
O Snowsight executa este procedimento de retorno de chamada para preencher a caixa de diálogo de configuração que solicita ao usuário que configure os objetos. O procedimento precisa ser concedido a uma função de aplicativo para execução.
Nota
configuration_callback só é suportado para integração de acesso externo e objetos secretos.
A função de retorno de chamada tem os seguintes requisitos:
A função de retorno de chamada deve aceitar um argumento contendo um nome de referência. Isso permite que a mesma função de retorno de chamada manipule múltiplas referências.
A função de retorno de chamada deve retornar um objeto JSON bem formado. O objeto JSON contém as seguintes propriedades:
typeIndica o tipo de mensagem. Os valores válidos são:
CONFIGURATION: retorna uma carga útil com os valores de configuração para o objeto com base no tipo de objeto.ERROR: retorna um erro com a mensagem associada que é exibida em Snowsight.
payloadContém o conteúdo da resposta com base no valor da propriedade
typee o tipo de objeto que está sendo configurado.
A assinatura para o retorno de chamada de configuração é:
No script de instalação, você deve conceder o privilégio USAGE para as funções do aplicativo que são usadas para configurar o aplicativo para que elas tenham permissão para chamar o procedimento armazenado. O exemplo a seguir mostra como conceder o privilégio USAGE em um procedimento armazenado:
A função de retorno de chamada retorna um objeto JSON. Consulte Formato JSON para a resposta de retorno de chamada de configuração para obter mais informações.
O exemplo a seguir mostra uma função de retorno de chamada típica para manipular acesso externo e referências de segredo.
Esta função faz o seguinte:
Para uma referência a uma integração de acesso externo, o procedimento retorna um objeto JSON contendo as informações de configuração necessárias. Consulte Formato JSON para integração de acesso externo para obter mais informações.
Para uma referência a um segredo, o procedimento retorna um objeto JSON contendo uma configuração de segredo do tipo OAuth2. Consulte Formato JSON para referências de segredo para obter mais informações.
Como usar a permissão Python SDK para segredos e integrações de acesso externo¶
Python Permission SDK suporta objetos de integração de acesso externo e de segredo. No entanto, o comportamento é ligeiramente diferente para esses objetos.
Quando um provedor chama permission.request_reference() e passa o nome de uma referência com um object_type valor de SECRET ou EXTERNAL ACCESS INTEGRATION, Snowsight executa automaticamente o seguinte:
Chama a função
configuration_callbackno script de configuração.Valida os valores retornados pela função
configuration_callback.Exibe a caixa de diálogo de configuração para o consumidor.
Nota
Se um provedor configurar uma integração de acesso externo com a propriedade payload.allow_secrets definida como LIST, não é necessário fazer uma chamada separada para solicitar uma referência para o segredo. A configuração do segredo é implicitamente incluída como parte da configuração de integração de acesso externo.