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:

  • Se os usuários devem se registrar na autenticação multifator (MFA).

  • Quais métodos de autenticação exigem autenticação multifator.

  • Os métodos de autenticação permitidos, como SAML, senhas, OAuth, autenticação de par de chaves e tokens de acesso programático.

  • 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.

  • The clients that users can use to connect to Snowflake, such as Snowsight, Snowflake CLI, drivers, or SnowSQL (cliente CLI). The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs..

    By defining a «client policy» within an authentication policy, you can also set the minimum version that is allowed for specific client types.

  • Os tempos de expiração padrão e máximo e requisitos da política de redes para tokens de acesso programático.

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

The following non-exhaustive list describes use cases for authentication policies:

  • Você deseja controlar se um usuário, todos os usuários em uma conta ou métodos de autenticação específicos exigem MFA.

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

  • You want to control the authentication methods, specific client types, minimum versions of clients, and security integrations available to specific users or all users.

  • You have customers building services on top of Snowflake using Snowflake drivers, but the customers do not want their users accessing Snowflake through Snowsight.

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

Limitações

  • The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs..

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

By default, Snowsight provides a generic login experience that provides several options for logging in, regardless if the options are relevant to users. This means that authentication is attempted regardless of whether the login option is a valid option for the user.

You can alter this behavior to enable a identifier-first login flow for Snowsight. In this flow, Snowflake prompts the user for an email address or username before presenting authentication options. Snowflake uses the email address or username to identify the user, and then only displays the login options that are relevant to the user, and are allowed by the authentication policy set on the account or user.

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. The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs..

For example, the following commands create a custom policy_admin role and an authentication policy that allows authentication using Snowsight. The user must authenticate with SAML or a password.

Nota

Para executar este exemplo, substitua <username> no comando GRANT ROLE pelo seu nome de usuário de login.

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;

GRANT ROLE policy_admin TO USER <username>;
USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('SAML', '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

Você também pode definir uma política de autenticação para todos os usuários de um tipo específico. Por exemplo, para definir uma política de autenticação para todos os usuários do tipo SERVICE na conta, mas não para usuários do tipo PERSON, execute o seguinte comando:

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy
  FOR ALL SERVICE USERS;
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 example_user TO ROLE my_policy_admin;
Copy

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

Fortalecer a autenticação de usuário ou conta usando MFA

Para melhorar a segurança dos logins dos usuário, você pode criar uma política de autenticação que exija que os usuários se inscrevam no MFA e, em seguida, aplicar a política de autenticação a usuários individuais ou à conta. Depois que os usuários se inscrevem em MFA, a política de autenticação exige que os usuários se autentiquem com MFA.

Nota

Snowflake is deprecating single-factor password logins. When the rollout is complete, all users who authenticate with a password must enroll in MFA.

Run the following command if you want to create an authentication policy that requires password users to authenticate with MFA when using any Snowflake client, not just Snowsight. Single sign-on (SSO) users won’t be required to use MFA.

CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
  MFA_ENROLLMENT = 'REQUIRED'
  MFA_POLICY=  (
    ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'NONE'
  );
Copy

Run the following command if you want to create an authentication policy that requires password and single sign-on users to authenticate with MFA.

CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
  MFA_ENROLLMENT = 'REQUIRED'
  MFA_POLICY=  (
    ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'ALL'
  );
Copy

Para definir essa política de autenticação para todos os usuários de uma conta, execute a seguinte instrução SQL:

ALTER ACCOUNT SET AUTHENTICATION POLICY require_mfa_authentication_policy;
Copy

Nota

If you set the MFA_ENROLLMENT parameter, then the CLIENT_TYPES parameter must include SNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).

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', 'SNOWFLAKE_CLI', 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

The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs..

Create an authentication policy named restrict_client_type_policy that only allows access through Snowsight:

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

Create a SAML2 security integration that allows users to log in through SAML using Okta as an IdP:

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

Create a security integration that allows users to log in through SAML using Microsoft Entra ID as an IdP:

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

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

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_ENTRA_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.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema. Observe que uma função com privilégio concedido em um esquema permite que essa função resolva o esquema. Por exemplo, uma função com privilégio CREATE concedido em um esquema pode criar objetos nesse esquema sem também ter USAGE concedido nesse esquema.

Privilégio

Objeto

Uso

CREATE

Esquema

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

APPLY AUTHENTICATION POLICY

Conta

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

OWNERSHIP

Política de autenticação

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.