Conceder direitos do chamador restritos a um executável em um aplicativo

Este tópico descreve como conceder direitos de chamador restritos a um executável em um aplicativo.

Sobre os direitos do proprietário e os direitos restritos do chamador em um aplicativo

Em um Snowflake Native App, os executáveis são executados com direitos de proprietário ou com direitos restritos do chamador. No contexto do Snowflake Native App Framework, os seguintes tipos de executáveis são compatíveis:

  • Procedimentos armazenados de propriedade do aplicativo

  • Serviços disponíveis em aplicativos com contêineres

Direitos do proprietário:

Os executáveis que usam os direitos do proprietário são executados com os privilégios concedidos ao proprietário do executável. Por padrão, os executáveis em um aplicativo usam os direitos do proprietário. Em um aplicativo, o proprietário do executável é o próprio aplicativo.

Direitos restritos do chamador:

Os direitos restritos do chamador permitem que um executável seja executado com os direitos do chamador, mas restringem os privilégios do chamador com os quais o executável é executado. Com direitos restritos do chamador, um executável pertencente a um aplicativo não pode ser executado com um privilégio específico, a menos que um administrador na conta do consumidor permita isso explicitamente usando o comando /sql-reference/sql/grant-caller.

Privilégios necessários para conceder direitos de chamador restritos a um aplicativo

Para conceder concessões de chamador a um aplicativo como consumidor, você deve usar a função ACCOUNTADMIN ou usar uma função que tenha o privilégio MANAGE CALLER GRANTS. Para obter mais informações, consulte GRANT CALLER.

Conceder concessões de chamador a um executável em um aplicativo usando Snowsight

Usando Snowsight, você pode conceder concessões de chamador a um aplicativo em objetos na conta do consumidor.

Nota

Para executar outras tarefas, inclusive revogar as concessões do chamador de um aplicativo ou conceder o direito do chamador a uma tabela específica, você deve usar os comandos SQL apropriados.

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Data Products » Apps.

  3. Selecione um aplicativo.

  4. Clique no ícone Settings na barra de ferramentas e selecione a guia Privileges.

  5. Se o aplicativo for compatível com direitos restritos do chamador, a seção Restricted caller’s rights será exibida na guia Privileges.

    Nota

    Você só pode conceder concessões ao chamador na Snowsight se o provedor tiver configurado o aplicativo para exibir a UI dos direitos restritos do chamador.

  6. Clique em Add grants.

  7. Selecione um Access scope.

    Isso determina se os direitos do chamador se aplicam a um esquema, a um banco de dados ou ao nível da conta. Você deve selecionar a opção com o menor escopo possível para evitar conceder direitos desnecessários ao aplicativo.

    Cuidado

    Tenha cuidado ao selecionar o escopo de nível de conta, que pode conceder direitos de chamador ao aplicativo em todos os tipos de objetos compatíveis.

  8. Se você selecionou o escopo do esquema ou do banco de dados, selecione o esquema ou o banco de dados conforme necessário.

Nota

Você pode selecionar vários esquemas ou bancos de dados. Você também pode selecionar esquemas em diferentes bancos de dados.

  1. Clique em Next.

  2. Selecione o tipo de objeto aos quais os direitos do chamador serão concedidos.

    Use a pesquisa para encontrar um tipo de objeto. A lista de tipos de objetos depende do escopo que você escolheu acima.

    Quando você seleciona um tipo de objeto, a entrada do objeto na lista se expande para os privilégios disponíveis para cada tipo de objeto.

  3. Selecione os privilégios que deseja conceder.

    Você pode selecionar vários privilégios para cada tipo de objeto. Você também pode selecionar privilégios para outros tipos de objetos.

    Nota

    O Snowflake concede automaticamente o privilégio USAGE a todos os objetos que você selecionar.

  4. Clique em Next.

  5. Selecione Grant summary para verificar o escopo, os tipos de objeto e os privilégios que você selecionou.

    Nota

    Todos os objetos do tipo selecionado que forem criados no futuro serão criados com os mesmos privilégios usando o escopo e os tipos de objeto selecionados.

  6. Selecione SQL para visualizar os comandos GRANT CALLER que a Snowsight executará.

    Nota

    Se necessário, você pode copiar esses comandos e executá-los manualmente em uma planilha.

  7. Clique em Save

O escopo, os objetos e os privilégios que você selecionou são exibidos em Restricted caller’s rights section.

Para modificar os privilégios selecionados, clique em Edit e selecione ou desmarque os privilégios conforme necessário.

Conceder concessões de chamador a um executável em um aplicativo usando SQL

Ao configurar um aplicativo que solicita direitos restritos do chamador, execute as seguintes tarefas para conceder concessões do chamador ao aplicativo:

  1. Verifique a listagem do aplicativo para verificar se o provedor comunicou que o aplicativo tem executáveis RCR.

  2. Conceda as concessões do chamador conforme mencionado na listagem. O exemplo a seguir mostra como usar o comando GRANT CALLER para conceder o privilégio SELECT em todas as tabelas de um banco de dados e esquema específicos:

    GRANT CALLER USAGE ON DATABASE db1
      TO APPLICATION hello_snowflake_app;
    GRANT CALLER USAGE ON SCHEMA db1.sch1
      TO APPLICATION hello_snowflake_app;
    GRANT INHERITED CALLER SELECT ON ALL TABLES IN SCHEMA db.sch1
      TO APPLICATION hello_snowflake_app;
    
    Copy

    Esse comando permite que um executável com direitos restritos de chamador acesse a execução de consultas em todas as tabelas com o esquema e o banco de dados db.sch1. Além de conceder o privilégio SELECT em todas as tabelas, você também deve conceder USAGE no banco de dados e no esquema.