CREATE AUTHENTICATION POLICY

Cria uma nova política de autenticação no esquema atual ou especificado ou substitui uma política de autenticação existente. Você pode usar políticas de autenticação para definir controles de autenticação e requisitos de segurança para contas ou usuários.

Esse comando é compatível com as seguintes variantes:

Consulte também:

ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES, CREATE OR ALTER <objeto>

Sintaxe

CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

Sintaxe da variante

CREATE OR ALTER AUTHENTICATION POLICY

Cria uma nova política de autenticação, se ela ainda não existir, ou altera uma política de autenticação existente para a definida na instrução. Uma instrução CREATE OR ALTER AUTHENTICATION POLICY segue as regras de sintaxe de uma instrução CREATE AUTHENTICATION POLICY e tem as mesmas limitações de uma instrução ALTER AUTHENTICATION POLICY.

CREATE OR ALTER AUTHENTICATION POLICY <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros obrigatórios

name

Especifica o identificador da política de autenticação.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

Parâmetros opcionais

AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )

Cuidado

A restrição por método de autenticação pode ter consequências indesejadas, como o bloqueio de conexões de driver ou integrações de terceiros.

Uma lista de métodos de autenticação permitidos durante o login. Este parâmetro aceita um ou mais dos seguintes valores:

ALL

Permitir todos os métodos de autenticação.

SAML

Permite integrações de segurança SAML2. Se SAML estiver presente, uma opção de login SSO será exibida. Se SAML não estiver presente, uma opção de login SSO não aparecerá.

PASSWORD

Permite que os usuários se autentiquem usando nome de usuário e senha.

OAUTH

Permite OAuth externo.

KEYPAIR

Permite autenticação do par de chaves.

PROGRAMMATIC_ACCESS_TOKEN

Permite que os usuários se autentiquem com um token de acesso programático.

Padrão: ALL.

MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )

Uma lista de métodos de autenticação que impõem autenticação multifator (MFA) durante o login. Os métodos de autenticação não listados neste parâmetro não solicitam autenticação multifator.

Os seguintes métodos de autenticação são compatíveis com MFA:

  • SAML

  • PASSWORD

Este parâmetro aceita um ou mais dos seguintes valores:

SAML

Solicita MFA aos usuários, se estiverem inscritos em MFA, ao autenticar com integrações SAML2 de segurança.

PASSWORD

Solicita MFA aos usuários, caso estejam inscritos para MFA, ao autenticar com um nome de usuário e senha.

Padrão: ('PASSWORD').

MFA_ENROLLMENT = { REQUIRED | OPTIONAL }

Determina se um usuário deve se registrar na autenticação multifator.

REQUIRED

Obriga os usuários a se inscreverem para MFA. Se esse valor for usado, o parâmetro CLIENT_TYPES deverá incluir SNOWFLAKE_UI, visto que Snowsight é o único lugar onde os usuários podem se registrar na autenticação multifator (MFA).

OPTIONAL

Os usuários podem escolher se desejam se inscrever para MFA.

Padrão: REQUIRED.

MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) )

Especifica os métodos de autenticação multifator (MFA) que os usuários podem usar como um segundo fator de autenticação. Você pode especificar mais de um método.

ALL

Os usuários podem usar uma chave de acesso, um aplicativo autenticador ou o Duo como segundo fator de autenticação.

PASSKEY

Os usuários podem usar uma chave de acesso como segundo fator de autenticação.

TOTP

Os usuários podem usar um aplicativo autenticador como segundo fator de autenticação.

DUO

Os usuários podem usar o Duo como segundo fator de autenticação.

Padrão: ALL.

CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )

Uma lista de clientes que podem ser autenticados com Snowflake.

Se um cliente tentar se conectar e não for um dos valores válidos de CLIENT_TYPES listados abaixo, a tentativa de login falhará.

Se você definir MFA_ENROLLMENT como REQUIRED, deverá incluir SNOWFLAKE_UI na lista CLIENT_TYPES para permitir que os usuários se inscrevam em MFA.

Se você quiser excluir SNOWFLAKE_UI da lista CLIENT_TYPES, deverá definir MFA_ENROLLMENT como OPTIONAL.

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.

Este parâmetro aceita um ou mais dos seguintes valores:

ALL

Permitir que todos os clientes se autentiquem.

SNOWFLAKE_UI

Snowsight ou Classic Console, as interfaces da Web do Snowflake.

Cuidado

If SNOWFLAKE_UI is not included in the CLIENT_TYPES list while MFA_ENROLLMENT is set to REQUIRED, or MFA_ENROLLMENT is unspecified, MFA enrollment doesn’t work.

DRIVERS

Os drivers permitem acesso ao Snowflake a partir de aplicativos escritos em linguagens suportadas. Por exemplo, os drivers Go, JDBC, .NET e Snowpipe Streaming.

Cuidado

Se DRIVERS não estiver incluído na lista CLIENT_TYPES, a ingestão automatizada poderá parar de funcionar.

SNOWFLAKE_CLI

Um cliente de linha de comando para se conectar ao Snowflake e para gerenciar cargas de trabalho centradas no desenvolvedor e operações SQL.

SNOWSQL

Um cliente de linha de comando para conexão com o Snowflake.

Padrão: ALL.

SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )

Uma lista de integrações de segurança às quais a política de autenticação está associada. Este parâmetro não tem efeito quando SAML ou OAUTH não estão na lista AUTHENTICATION_METHODS.

Todos os valores da lista SECURITY_INTEGRATIONS devem ser compatíveis com os valores da lista AUTHENTICATION_METHODS. Por exemplo, se SECURITY_INTEGRATIONS contiver uma integração de segurança SAML e AUTHENTICATION_METHODS contiver OAUTH, não será possível criar a política de autenticação.

ALL

Permitir todas as integrações de segurança.

Padrão: ALL.

PAT_POLICY = ( list_of_properties )

Especifica as políticas para tokens de acesso programático. Defina isso como uma lista delimitada por espaço de uma ou mais das seguintes propriedades e valores:

DEFAULT_EXPIRY_IN_DAYS = number_of_days

Especifica o tempo de expiração padrão (em dias) para um token de acesso programático. Você pode especificar um valor de 1 até o tempo máximo (que pode ser especificado pela configuração MAX_EXPIRY_IN_DAYS).

O tempo de expiração padrão é de 15 dias.

Para obter mais informações, consulte Configuração do tempo de expiração padrão.

MAX_EXPIRY_IN_DAYS = number_of_days

Especifica o número máximo de dias que podem ser definidos para o tempo de expiração de um token de acesso programático. Você pode especificar um valor de 1 a 365.

O tempo de expiração máximo padrão é de 365 dias.

Nota

Se houver tokens de acesso programático existentes com tempos de expiração que excedam o novo tempo máximo de expiração, as tentativas de autenticação com esses tokens falharão.

Por exemplo, suponha que você gere um token de acesso programático chamado my_token com o tempo de expiração de 7 dias. Se você alterar posteriormente o tempo máximo de expiração de todos os tokens para 2 dias, a autenticação com my_token falhará porque o tempo de expiração do token excede o novo tempo máximo de expiração.

Para obter mais informações, consulte Configuração do tempo máximo de expiração.

NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }

Especifica como os requisitos de política de redes são tratados para tokens de acesso programático.

Por padrão, um usuário deve estar sujeito a uma política de redes com uma ou mais regras de rede para gerar ou usar tokens de acesso programático:

  • Os usuários do serviço (com TYPE=SERVICE) devem estar sujeitos a uma política de redes para gerar e usar tokens de acesso programático.

  • Os usuários humanos (com TYPE=PERSON) devem estar sujeitos a uma política de redes para usar tokens de acesso programático.

Para substituir esse comportamento, defina essa propriedade como um dos seguintes valores:

ENFORCED_REQUIRED (comportamento padrão)

O usuário deve estar sujeito a uma política de redes para gerar e usar tokens de acesso programático.

Se o usuário estiver sujeito a uma política de redes, a política de redes será aplicada durante a autenticação.

ENFORCED_NOT_REQUIRED

O usuário não precisa estar sujeito a uma política de redes para gerar e usar tokens de acesso programático.

Se o usuário estiver sujeito a uma política de redes, a política de redes será aplicada durante a autenticação.

NOT_ENFORCED

O usuário não precisa estar sujeito a uma política de redes para gerar e usar tokens de acesso programático.

Se o usuário estiver sujeito a uma política de redes, a política de redes não será aplicada durante a autenticação.

Por exemplo:

PAT_POLICY=(
  DEFAULT_EXPIRY_IN_DAYS=30
  MAX_EXPIRY_IN_DAYS=365
  NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
);
Copy
COMMENT = 'string_literal'

Especifica uma descrição da política.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

CREATE AUTHENTICATION POLICY

Esquema

OWNERSHIP

Política de autenticação

  • Uma função deve ser concedida ou herdar o privilégio OWNERSHIP no objeto para criar um objeto temporário com o mesmo nome do objeto que já existe no esquema.

  • Necessário para executar uma instrução CREATE OR ALTER AUTHENTICATION POLICY para uma política de autenticação existente.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Depois de criar uma política de autenticação, você deve usar o comando ALTER ACCOUNT ou ALTER USER para defini-la em uma conta ou usuário antes que o Snowflake aplique a política.

  • Se você quiser atualizar uma política de autenticação existente e precisar ver a definição da política, execute o comando DESCRIBE AUTHENTICATION POLICY ou a função GET_DDL.

  • As cláusulas OR REPLACE e IF NOT EXISTS são mutuamente exclusivas. Elas não podem ser usadas na mesma instrução.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplo

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

CREATE AUTHENTICATION POLICY restrict_client_types_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Auth policy that only allows access through the web interface';
Copy

Defina a autenticação multifator e atualize a lista de clientes:

CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
  MFA_ENROLLMENT = REQUIRED
  MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Copy

Para obter mais exemplos, consulte Políticas de autenticação.