Uso de políticas de sessão

Este tópico fornece exemplos sobre como usar políticas de sessão.

Política de sessão padrão

As etapas a seguir são um guia representativo para criar uma política de sessão e configurar a política de sessão em uma conta ou usuário.

Esses passos pressupõem uma abordagem de gerenciamento centralizado no qual uma função personalizada chamada policy_admin possui a política da sessão (ou seja, tem o privilégio OWNERSHIP da política da sessão) e é responsável por definir a política de sessão de uma conta ou usuário (ou seja, tem o privilégio APPLY SESSION POLICY sobre ACCOUNT ou o privilégio APPLY SESSION POLICY ON USER).

Nota

Para definir uma política em uma conta, a função personalizada policy_admin deve ter as seguintes permissões:

  • USAGE no banco de dados e no esquema que contém a política de sessão.

  • CREATE SESSION POLICY no esquema que contém a política de sessão.

Siga os passos a seguir para implementar uma política de sessão.

  1. Crie uma função personalizada que permita aos usuários criar e gerenciar políticas de sessão. Ao longo deste exemplo, a função personalizada é policy_admin, embora a função possa ter qualquer nome apropriado.

    Se a função personalizada já existir, continue para o próximo passo.

    Caso contrário, crie a função personalizada policy_admin:

    USE ROLE USERADMIN;
    
    CREATE ROLE policy_admin;
    
    Copy
  2. Conceda privilégios à função personalizada.

    Se a função personalizada policy_admin ainda não tiver os seguintes privilégios, conceda-os como mostrado abaixo:

    • USAGE no banco de dados e no esquema que conterá a política de sessão.

    • CREATE SESSION POLICY no esquema que conterá a política de sessão.

    • APPLY SESSION POLICY na conta.

    • APPLY SESSION POLICY em cada usuário, se você planeja definir políticas de sessão em nível de usuário.

    USE ROLE SECURITYADMIN;
    
    GRANT USAGE ON DATABASE mydb TO ROLE policy_admin;
    
    GRANT USAGE, CREATE SESSION POLICY ON SCHEMA mydb.policies TO ROLE policy_admin;
    
    GRANT APPLY SESSION POLICY ON ACCOUNT TO ROLE policy_admin;
    
    Copy

    Se for associar uma política de sessão a um usuário individual:

    GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin;
    
    Copy

    Para obter mais informações, consulte Resumo de comandos, operações e privilégios.

  3. Crie uma nova política de sessão.

    USE ROLE policy_admin;
    
    CREATE SESSION POLICY mydb.policies.session_policy_prod_1
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      COMMENT = 'Session policy for the prod_1 environment';
    
    Copy

    Para obter mais informações, consulte CREATE SESSION POLICY.

  4. Defina a política de sessão da conta com o comando ALTER ACCOUNT ou um usuário com o comando ALTER USER.

    USE ROLE policy_admin;
    
    ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;
    
    ALTER USER jsmith SET SESSION POLICY my_database.my_schema.session_policy_prod_1;
    
    Copy

    Importante

    Para substituir uma política de sessão que já está definida para uma conta ou usuário, primeiro desative a política de sessão e depois defina a nova política de sessão para a conta ou usuário. Por exemplo:

    ALTER ACCOUNT UNSET session policy;
    
    ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_2;
    
    Copy

Especificar funções secundárias em uma política de sessão

As seções a seguir detalham como especificar funções secundárias em uma política de sessão:

Para obter mais informações sobre funções secundárias em uma política de sessão, consulte Funções secundárias em uma política de sessão.

Definir a propriedade em uma política de sessão

O administrador de segurança pode criar uma nova política de sessão ou modificar uma política de sessão existente para definir a propriedade ALLOWED_SECONDARY_ROLES. Por exemplo:

  • Crie uma nova política de sessão para permitir todas as funções secundárias:

    CREATE OR REPLACE SESSION POLICY prod_env_session_policy
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      ALLOWED_SECONDARY_ROLES = ('ALL')
      COMMENT = 'session policy for use in the prod_1 environment';
    
    Copy
  • Modifique uma política de sessão existente para proibir funções secundárias:

    ALTER SESSION POLICY prod_env_session_policy
      SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy

    O comando ALTER SESSION POLICY pode modificar o valor da propriedade se a propriedade já estiver definida.

Para detalhes sobre a sintaxe, consulte Gerenciamento de políticas de sessão.

Você pode usar o comando DESCRIBE SESSION POLICY ou chamar a função GET_DDL para exibir o valor da propriedade ALLOWED_SECONDARY_ROLES.

Desconfigurar a propriedade em uma política de sessão

Você pode usar um comando ALTER SESSION POLICY para desconfigurar funções secundárias na política de sessão:

ALTER SESSION POLICY prod_env_session_policy
  UNSET ALLOWED_SECONDARY_ROLES;
Copy

Proibir funções secundárias para todos os usuários na conta

Para impedir que todos os usuários em uma conta usem funções secundárias, defina uma política de sessão na conta que não permita funções secundárias para a sessão. Por exemplo:

  1. Modifique uma política de sessão para proibir funções secundárias:

    ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy
  2. Atribuir a política de sessão à conta:

    ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy;
    
    Copy

Se um usuário tentar ativar funções secundárias com um comando USE SECONDARY ROLES, como USE SECONDARY ROLES analyst;, a seguinte mensagem de erro ocorrerá:

SQL execution error: USE SECONDARY ROLES '[ANALYST]' not allowed as per session policy.

Proibir funções secundárias para um usuário específico

Para impedir que um usuário específico use funções secundárias, defina uma política de sessão para o usuário que não permita funções secundárias para a sessão. Por exemplo, se essa política de sessão já existir:

ALTER USER jsmith SET SESSION POLICY prod_env_session_policy;
Copy

Se houver uma política de sessão definida na conta, a política de sessão atribuída ao usuário substituirá a política de sessão na conta.

Se o usuário executar um comando USE SECONDARY ROLES para ativar funções secundárias, como USE SECONDARY ROLES (ANALYST, DATA_SCIENTIST);, ele verá a seguinte mensagem de erro:

SQL execution error: USE SECONDARY ROLES '[ANALYST, DATA_SCIENTIST]' not allowed as per session policy.

Permitir que um usuário utilize funções secundárias específicas

Para permitir que um usuário utilize funções secundárias específicas, faça o seguinte:

  1. Crie uma política de sessão que especifique as funções secundárias que um usuário pode usar:

    CREATE OR REPLACE SESSION POLICY prod_env_session_policy
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      ALLOWED_SECONDARY_ROLES = (DATA_SCIENTIST, ANALYST)
      COMMENT = 'session policy for user secondary roles data_scientist and analyst';
    
    Copy
  2. Defina a política de sessão no usuário:

    ALTER USER bsmith SET SESSION POLICY prod_env_session_policy;
    
    Copy

O usuário pode ativar as funções secundárias conforme necessário com um comando USE SECONDARY ROLES. Por exemplo:

  • Ative todas as funções secundárias:

    USE SECONDARY ROLES ALL;
    
    Copy
  • Ative DATA_SCIENTIST como uma função secundária:

    USE SECONDARY ROLES DATA_SCIENTIST;
    
    Copy

Para detalhes sobre a sintaxe, consulte USE SECONDARY ROLES.

Replicar a política de sessão para uma conta de destino

Você pode replicar uma política de sessão e suas referências, que são as atribuições a um usuário ou à conta, da conta de origem para a conta de destino, usando a replicação de banco de dados e a replicação de conta. Para obter mais detalhes, consulte:

Para obter detalhes sobre como replicar uma política de sessão que especifica funções secundárias, consulte replicar políticas de sessão com funções secundárias.