Gerenciamento de políticas de sessão

Este tópico descreve as sessões do Snowflake e as políticas de sessão e fornece instruções para configurar as políticas de sessão em nível de conta ou de usuário.

Privilégios de política de sessão

O Snowflake oferece suporte aos seguintes privilégios de política de sessão para determinar se um usuário pode criar, definir e ser proprietário de políticas de sessão.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Privilégio

Uso

CREATE SESSION POLICY

Permite a criação de uma nova política de sessão em um esquema.

APPLY SESSION POLICY

Permite aplicar qualquer política de sessão no nível da conta ou do usuário.

OWNERSHIP

Concede total controle sobre a política da sessão. Necessário para alterar a maioria das propriedades de uma política de sessão.

Resumo de comandos, operações e privilégios

A seguinte tabela resume a relação entre as operações DDL da política de sessão e seus privilégios necessários.

Operação

Privilégio necessário

Criar política de sessão

Uma função com o privilégio CREATE SESSION POLICY no esquema.

Alterar política de sessão

Uma função com o privilégio OWNERSHIP na política de sessão.

Descartar política de sessão

Uma função com o privilégio OWNERSHIP na política de sessão.

Descrever política de sessão

Uma função com o privilégio OWNERSHIP na política de sessão ou . o privilégio APPLY SESSION POLICY na conta.

Mostrar as políticas de sessão

Uma função com o privilégio OWNERSHIP na política de sessão ou . o privilégio APPLY SESSION POLICY na conta.

Definir e remover definição da política de sessão

Para contas, uma função com o privilégio APPLY SESSION POLICY na conta e o privilégio OWNERSHIP na política da sessão, ou uma função com o privilégio APPLY SESSION POLICY na conta e o privilégio APPLY ON SESSION POLICY em uma política específica da sessão.

Para os usuários, uma função com o privilégio APPLY SESSION POLICY em USER <nome_usuário>.

Referência DDL da política de sessão

O Snowflake fornece os seguintes comandos DDL para gerenciar os objetos da política de sessão:

Para definir ou remover a definição de uma política de sessão na conta, execute o comando ALTER ACCOUNT como mostrado abaixo.

ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;
Copy
ALTER ACCOUNT UNSET SESSION POLICY;
Copy

Para definir ou remover a definição de uma política de sessão em nível de usuário, execute o comando ALTER USER como mostrado abaixo.

ALTER USER jsmith SET SESSION POLICY mydb.policies.session_policy_prod_1_jsmith;
Copy
ALTER USER jsmith UNSET SESSION POLICY;
Copy

Auditoria de políticas de sessão

  • Você pode consultar a exibição Exibição SESSION_POLICIES para retornar uma linha para cada política de sessão e seus metadados na sua conta Snowflake.

  • Você pode chamar a função POLICY_REFERENCES para retornar uma linha para cada usuário atribuído à política de sessão especificada e uma linha para a política de sessão atribuída à conta Snowflake.

    Atualmente, apenas a seguinte sintaxe é suportada para as políticas da sessão:

    POLICY_REFERENCES( POLICY_NAME => '<session_policy_name>' )
    
    Copy

    Em que session_policy_name é o nome completo e qualificado da política de sessão.

    Por exemplo, execute a seguinte consulta para retornar uma linha para cada usuário ao qual é atribuída a política de sessão chamada session_policy_prod_1, que é armazenada no banco de dados chamado my_db e o esquema chamado my_schema:

    SELECT *
    FROM TABLE(
      my_db.INFORMATION_SCHEMA.POLICY_REFERENCES(
        POLICY_NAME => 'my_db.my_schema.session_policy_prod_1'
      ));
    
    Copy

Solução de problemas das políticas de sessão

  • Se uma política de sessão for atribuída a uma conta ou a um usuário e o banco de dados ou esquema que contém a política de sessão for descartado, e depois uma nova política de sessão for atribuída à conta ou ao usuário, o usuário não estará sujeito ao(s) valor(es) de tempo de limite de sessão ociosa da nova política de sessão.

    A solução é remover a definição da política de sessão original da conta usando um comando ALTER ACCOUNT ou do usuário usando um comando ALTER USER, como mostrado neste tópico.

  • A tabela a seguir resume algumas mensagens de erro que podem ocorrer com as políticas de sessão.

    Comportamento

    Mensagem de erro

    Ação de solução de problemas

    Não é possível criar uma política de sessão.

    Não é possível executar CREATE SESSION POLICY. Esta sessão não dispõe de um banco de dados atual. Chame “USE DATABASE” ou use um nome qualificado.

    Especifique um banco de dados antes de executar CREATE SESSION POLICY ou de usar o nome do objeto totalmente qualificado na instrução CREATE SESSION POLICY.

    Não é possível criar uma política de sessão.

    Erro de controle de acesso SQL: privilégios insuficientes para operar no esquema “<schema_name>”.

    Verifique se a função que está executando a instrução CREATE SESSION POLICY tem o privilégio CREATE SESSION POLICY no SCHEMA.

    Não é possível criar uma política de sessão.

    Erro de compilação SQL: o banco de dados “<database_name>” não existe ou não está autorizado.

    Verifique se o banco de dados existe e se a função que está executando a instrução CREATE SESSION POLICY tem o privilégio USAGE no esquema em que a política da sessão deve existir.

    Não é possível executar uma instrução descritiva.

    Erro de compilação SQL: O esquema ‘<nome_do_esquema>” não existe ou não é autorizado.

    Verifique se a função que está executando a instrução DESC SESSION POLICY tem o privilégio OWNERSHIP na política da sessão ou o privilégio APPLY na política de sessão.

    Não é possível descartar uma política de sessão.

    Erro de compilação SQL: a política de sessão “<policy_name>” não existe ou não é autorizada.

    Verifique se a função que está executando a instrução DROP SESSION POLICY tem o privilégio OWNERSHIP para a política da sessão.

    Não é possível descartar uma política de sessão.

    Não é possível descartar a política de sessão <policy_name> porque ela está vinculada a uma conta.

    Remova a definição da política de sessão da conta com uma instrução ALTER ACCOUNT e tente executar a instrução de descarte novamente.

    Não é possível definir uma política de sessão para uma conta.

    A política de sessão “<policy_name> já está vinculada à conta <account_name>.

    Uma conta só pode ter uma política de sessão ativa. Determine qual política de sessão deve ser definida para a conta. . Se necessário, remova a definição da política de sessão atual da conta com um comando ALTER ACCOUNT. Em seguida, defina a outra política de sessão para a conta com outro comando ALTER ACCOUNT.

    Não é possível definir um valor de tempo limite.

    Erro de compilação SQL: valor inválido “<integer>” para propriedade “session_idle_timeout_mins”.

    O valor de tempo limite da sessão, em minutos, deve ser um número inteiro entre 5 e 240. . Escolha um número inteiro válido para o tempo limite da sessão e execute novamente a instrução CREATE ou ALTER SESSION POLICY.

    Não é possível atualizar uma política de sessão existente.

    Erro de compilação SQL: a política de sessão “<policy_name>” não existe ou não é autorizada.

    Verifique o nome da política de sessão, a sintaxe do comando ALTER SESSION POLICY e os privilégios para operar na política, no banco de dados e no esquema da sessão.