Políticas de autenticação

As políticas de autenticação fornecem controle sobre como um cliente ou usuário se autentica, permitindo que você especifique:

  • Os clientes que os usuários podem usar para se conectar ao Snowflake, como Snowsight ou Classic Console, drivers ou SnowSQL (cliente CLI). Para obter mais informações, consulte Limitações.

  • Os métodos de autenticação permitidos, como SAML, senhas, OAuth ou autenticação de par de chaves.

  • As integrações de segurança SAML2 disponíveis aos usuários durante a experiência de login. Por exemplo, se houver diversas integrações de segurança, você poderá especificar qual provedor de identidade (IdP) pode ser selecionado e usado para autenticação.

    Se você estiver usando políticas de autenticação para controlar qual IdP um usuário pode usar para autenticar, poderá refinar ainda mais esse controle usando as propriedades ALLOWED_USER_DOMAINS e ALLOWED_EMAIL_PATTERNS das integrações de segurança SAML2 associadas aos IdPs. Para obter mais detalhes, consulte Uso de vários provedores de identidade para autenticação federada.

Você pode definir políticas de autenticação na conta ou nos usuários da conta. Se você definir uma política de autenticação na conta, a política de autenticação será aplicada a todos os usuários da conta. Se você definir uma política de autenticação para uma conta e um usuário, a política de autenticação em nível de usuário substituirá a política de autenticação em nível de conta.

Nota

Se você já tem acesso ao fluxo de login do primeiro identificador, será necessário migrar sua conta do parâmetro de conta SAML_IDENTITY_PROVIDER incompatível usando a função SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

Casos de uso

A lista a seguir descreve casos de uso não exaustivos para políticas de autenticação:

  • Você deseja controlar os fluxos de login de usuário quando há diversas opções de login.

  • Você deseja controlar os métodos de autenticação, tipos de clientes específicos e integrações de segurança disponíveis para usuários específicos ou para todos os usuários.

  • Você tem clientes criando serviços com base no Snowflake usando drivers Snowflake, mas os clientes não querem que seus usuários acessem o Snowflake por meio de Snowsight ou Classic Console.

  • Você deseja oferecer vários provedores de identidade como opções de autenticação para usuários específicos.

Limitações

A propriedade CLIENT_TYPES de uma política de autenticação é um método de melhor esforço para bloquear logins de usuários com base em clientes específicos. Não deve ser usado como controle exclusivo para estabelecer um limite de segurança.

Considerações

  • Certifique-se de que os métodos de autenticação e as integrações de segurança listados nas suas políticas de autenticação não entrem em conflito. Por exemplo, se você adicionar uma integração de segurança SAML2 na lista de integrações de segurança permitidas e permitir apenas OAuth como método de autenticação permitido, não será possível criar uma política de autenticação.

  • Use uma política de autenticação não restritiva adicional para administradores caso os usuários sejam bloqueados. Para obter um exemplo, consulte Como evitar um bloqueio.

Precedência da política de segurança

Quando mais de um tipo de política de segurança é ativado, ocorre precedência entre as políticas. Por exemplo, as políticas de redes têm precedência sobre as políticas de autenticação, portanto, se o endereço IP de uma solicitação corresponder a um endereço IP na lista de bloqueados da política de rede, a política de autenticação não será verificada, e a avaliação para na política de redes.

A lista a seguir descreve a ordem em que as políticas de segurança são avaliadas:

  1. Políticas de redes: permitir ou negar endereços IP, VPC IDs e VPCE IDs.

  2. Políticas de autenticação – permitir ou negar clientes, métodos de autenticação e integrações de segurança.

  3. Políticas de senhas (somente para autenticação local): especificam requisitos de senha, como comprimento de caracteres, caracteres, idade da senha, novas tentativas e tempo de bloqueio.

  4. Políticas de sessão: exigem que os usuários se autentiquem novamente após um período de inatividade

Se uma política for atribuída à conta e ao usuário autenticado, a política em nível de usuário será aplicada.

Como combinar o login do primeiro identificador com políticas de autenticação

Por padrão, Snowsight ou Classic Console fornecem uma experiência de login genérica que oferece diversas opções de login, independentemente de as opções serem relevantes para os usuários. Isso significa que a autenticação é tentada independentemente de a opção de login ser válida para o usuário.

Você pode alterar esse comportamento para ativar um fluxo de login com primeiro identificador para Snowsight ou Classic Console. Neste fluxo, o Snowflake solicita ao usuário um endereço de e-mail ou nome de usuário antes de apresentar opções de autenticação. Snowflake usa o endereço de e-mail ou nome de usuário para identificar o usuário e, em seguida, exibe apenas as opções de login que são relevantes para o usuário e permitidas pela política de autenticação definida na conta ou usuário.

Para obter instruções sobre como ativar o fluxo de login do primeiro identificador, consulte Login com primeiro identificador.

A tabela a seguir fornece um exemplo de configuração sobre como as políticas de login e autenticação do primeiro identificador podem ser combinadas para controlar a experiência de login do usuário.

Configuração

Resultado

O parâmetro AUTHENTICATION_METHODS da política de autenticação contém apenas PASSWORD.

Snowflake solicita ao usuário um endereço de e-mail ou nome de usuário e senha.

O parâmetro AUTHENTICATION_METHODS da política de autenticação contém apenas SAML e há uma integração de segurança SAML2 ativa.

O Snowflake redireciona o usuário para a página de login do provedor de identidade se o endereço de e-mail ou nome de usuário corresponder a apenas uma integração de segurança SAML2.

O parâmetro AUTHENTICATION_METHODS da política de autenticação contém PASSWORD e SAML e há uma integração de segurança SAML2 ativa.

O Snowflake exibe um botão SAML SSO se o endereço de e-mail ou nome de usuário corresponder a apenas uma integração de segurança SAML2 e a opção de fazer login com um endereço de e-mail ou nome de usuário e senha.

O parâmetro AUTHENTICATION_METHODS da política de autenticação contém apenas SAML e há diversas integrações de segurança SAML2 ativas.

O Snowflake exibe vários botões SAML SSO se o endereço de e-mail ou nome de usuário corresponder a várias integrações de segurança SAML2.

O parâmetro AUTHENTICATION_METHODS da política de autenticação contém PASSWORD e SAML, e há diversas integrações de segurança SAML2 ativas.

O Snowflake exibe vários botões SAML SSO se o endereço de e-mail ou nome de usuário corresponder a várias integrações de segurança SAML2 e a opção de fazer login com um endereço de e-mail ou nome de usuário e senha.

Criação de uma política de autenticação

Um administrador pode usar o comando CREATE AUTHENTICATION POLICY para criar uma nova política de autenticação, especificando quais clientes podem se conectar ao Snowflake, quais métodos de autenticação podem ser usados e quais integrações de segurança estão disponíveis para os usuários. Por padrão, todos os tipos de clientes, métodos de autenticação e integrações de segurança podem ser usados para conectar-se ao Snowflake. See client type limitations in authentication policies.

Por exemplo, você pode usar os comandos a seguir para criar uma função policy_admin personalizada e uma política de autenticação que permita apenas a autenticação usando Snowsight ou Classic Console, permitindo apenas que uma conta ou usuário seja autenticado usando OAuth ou uma senha:

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;

CREATE OR REPLACE SCHEMA my_schema;
USE SCHEMA my_schema;

CREATE ROLE policy_admin;

GRANT USAGE ON DATABASE my_database TO ROLE policy_admin;
GRANT USAGE ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT CREATE AUTHENTICATION POLICY ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE policy_admin;

USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD');
Copy

Para exemplos detalhados, consulte Exemplo de configurações de login.

Configuração de uma política de autenticação em uma conta ou usuário

Ao definir uma política de autenticação em uma conta ou usuário, as restrições especificadas na política de autenticação se aplicam à conta ou ao usuário. Você pode usar os comandos ALTER ACCOUNT ou ALTER USER para definir uma política de autenticação em uma conta ou usuário.

Em uma planilha Snowsight, use um dos seguintes comandos para definir uma política de autenticação em uma conta ou usuário:

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy

Somente um administrador de segurança (um usuário com a função SECURITYADMIN) ou usuários com uma função que tenha o privilégio APPLY AUTHENTICATION POLICY podem definir políticas de autenticação em contas ou usuários. Para conceder esse privilégio a uma função para que os usuários possam definir uma política de autenticação em uma conta ou usuário, execute um dos seguintes comandos:

GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin
Copy
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
Copy

Para exemplos detalhados, consulte Exemplo de configurações de login.

Rastreamento do uso da política de autenticação

Use a função de tabela do Information Schema POLICY_REFERENCES para retornar uma linha para cada usuário que é atribuído à política de autenticação especificada e uma linha para a política de autenticação atribuída à conta Snowflake.

A seguinte sintaxe é suportada para políticas de autenticação:

POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Copy

Em que authentication_policy_name é o nome completo e qualificado da política de autenticação.

Por exemplo, execute a seguinte consulta para retornar uma linha para cada usuário ao qual é atribuída a política de autenticação chamada authentication_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.authentication_policy_prod_1'
  )
);
Copy

Como evitar um bloqueio

Em situações em que a política de autenticação que rege uma conta é rigorosa, você pode criar uma política de autenticação não restritiva para um administrador usar como opção de recuperação em caso de bloqueio causado por uma integração de segurança. Por exemplo, você pode incluir o método de autenticação PASSWORD somente para o administrador. A política de autenticação no nível do usuário substitui a política mais restritiva no nível da conta.

CREATE AUTHENTICATION POLICY admin_authentication_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
Copy

Você pode então atribuir esta política a um administrador:

ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
Copy

Replicação de políticas de autenticação

Você pode replicar políticas de autenticação usando grupos de failover e replicação. Para obter mais detalhes, consulte Políticas de segurança e replicação.

Exemplo de configurações de login

Esta seção fornece exemplos de como você pode usar e combinar políticas de autenticação e integrações de segurança SAML2 para controlar o fluxo de login e a segurança.

Restrição do acesso do usuário ao Snowflake por tipo de cliente

See client type limitations in authentication policies.

Crie uma política de autenticação chamada restrict_client_type_policy que permita acesso apenas por meio de Snowsight ou Classic Console:

CREATE AUTHENTICATION POLICY restrict_client_type_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Only allows access through the web interface';
Copy

Defina a política de autenticação em um usuário:

ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
Copy

Permissão da autenticação de vários provedores de identidade em uma conta

Crie uma integração de segurança SAML2 que permita aos usuários fazer login por meio de SAML usando Okta como IdP:

CREATE SECURITY INTEGRATION example_okta_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://okta.example.com';
  ...
Copy

Crie uma integração de segurança que permita aos usuários fazer login por meio de SAML usando o Microsoft Azure como um IdP:

CREATE SECURITY INTEGRATION example_azure_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://azure-example_acme.com';
  ...
Copy

Crie uma política de autenticação associada às integrações example_okta_integration e example_azure_integration:

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_INTEGRATION');
Copy

Defina a política de autenticação em uma conta:

ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
Copy

Privilégios e comandos

Referência dos privilégios da política de autenticação

O Snowflake é compatível com os seguintes privilégios de política de autenticação para determinar se os usuários podem criar, definir e possuir políticas de autenticaçã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

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

APPLY AUTHENTICATION POLICY

Permite aplicar uma política de autenticação em nível de conta ou de usuário.

OWNERSHIP

Concede controle total sobre a política de autenticação. Obrigatório para alterar a maioria das propriedades de uma política de autenticação.

Referência do DDL da política de autenticação

Para obter detalhes sobre privilégios e comandos da política de autenticação, consulte a seguinte documentação de referência:

Comando

Privilégio

Descrição

CREATE AUTHENTICATION POLICY

CREATE AUTHENTICATION POLICY em SCHEMA

Cria uma nova política de autenticação.

ALTER AUTHENTICATION POLICY

OWNERSHIP em AUTHENTICATION POLICY

Modifica uma política de autenticação existente.

DROP AUTHENTICATION POLICY

OWNERSHIP em AUTHENTICATION POLICY

Remove uma política de autenticação existente do sistema.

DESCRIBE AUTHENTICATION POLICY

OWNERSHIP em AUTHENTICATION POLICY

Descreve as propriedades de uma política de autenticação existente.

SHOW AUTHENTICATION POLICIES

OWNERSHIP em AUTHENTICATION POLICY ou USAGE em SCHEMA

Lista todas as políticas de autenticação no sistema.