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:
CREATE OR ALTER AUTHENTICATION POLICY: cria uma política de autenticação, se ela não existir, ou altera uma política de autenticação existente.
- 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>' , ... ] ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' } ]
[ MFA_POLICY= ( <list_of_properties> ) ]
[ PAT_POLICY = ( <list_of_properties> ) ]
[ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
[ COMMENT = '<string_literal>' ]
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>' , ... ] ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' } ]
[ MFA_POLICY= ( <list_of_properties> ) ]
[ PAT_POLICY = ( <list_of_properties> ) ]
[ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
[ COMMENT = '<string_literal>' ]
Parâmetros obrigatórios¶
nameEspecifica 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:
ALLPermitir todos os métodos de autenticação.
SAMLPermite integrações de segurança SAML2. Se
SAMLestiver presente, uma opção de login SSO será exibida. SeSAMLnão estiver presente, uma opção de login SSO não aparecerá.PASSWORDPermite que os usuários se autentiquem usando nome de usuário e senha.
OAUTHPermite OAuth externo.
KEYPAIRPermite autenticação do par de chaves.
PROGRAMMATIC_ACCESS_TOKENPermite que os usuários se autentiquem com um token de acesso programático.
WORKLOAD_IDENTITYPermite que os usuários se autentiquem através de federação de identidades de cargas de trabalho.
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_TYPESlistados abaixo, a tentativa de login falhará.Se você definir
MFA_ENROLLMENTcomoREQUIRED, deverá incluirSNOWFLAKE_UIna listaCLIENT_TYPESpara permitir que os usuários se inscrevam em MFA.Se você quiser excluir
SNOWFLAKE_UIda listaCLIENT_TYPES, deverá definirMFA_ENROLLMENTcomoOPTIONAL.The
CLIENT_TYPESproperty 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.Este parâmetro aceita um ou mais dos seguintes valores:
ALLPermitir que todos os clientes se autentiquem.
SNOWFLAKE_UISnowsight ou Classic Console, as interfaces da Web do Snowflake.
Cuidado
If
SNOWFLAKE_UIis not included in theCLIENT_TYPESlist whileMFA_ENROLLMENTis set toREQUIRED, orMFA_ENROLLMENTis unspecified, MFA enrollment doesn’t work.DRIVERSOs 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
DRIVERSnão estiver incluído na listaCLIENT_TYPES, a ingestão automatizada poderá parar de funcionar.SNOWFLAKE_CLIUm cliente de linha de comando para se conectar ao Snowflake e para gerenciar cargas de trabalho centradas no desenvolvedor e operações SQL.
SNOWSQLUm cliente de linha de comando para conexão com o Snowflake.
Padrão:
ALL.
CLIENT_POLICY = client_type = ( MINIMUM_VERSION = 'version' )Especifica uma política dentro da política de autenticação que define a versão mínima permitida para cada tipo de cliente especificado.
Se CLIENT_TYPES estiver vazio, contiver
ALLou contiverDRIVERS, o parâmetro CLIENT_POLICY aceitará um ou mais dos seguintes clientes de driver (e uma cadeia de caracteres de versão específica). Para qualquer cliente de driver que não seja especificado, a política permite implicitamente qualquer versão desse cliente.Se CLIENT_TYPES contiver outro valor, como
SNOWFLAKE_CLI, e não contiver tambémDRIVERS, especificar qualquer um dos seguintes tipos de cliente resultará em um erro. Você não pode criar (ou alterar) uma política de autenticação de forma que os parâmetros CLIENT_TYPES e CLIENT_POLICY não sejam compatíveis.client_typeUm ou mais valores de tipo de cliente válidos. Este é um conjunto de valores diferente daqueles que o parâmetro CLIENT_TYPES aceita. Não use aspas simples para esses valores.
JDBC_DRIVER(driver Snowflake JDBC)ODBC_DRIVER(driver Snowflake ODBC)PYTHON_DRIVER(driver Snowflake Python)JAVASCRIPT_DRIVER(driver Snowflake Javascript)C_DRIVER(driver Libsnowflakeclient C)GO_DRIVER(driver Snowflake Go)PHP_DRIVER(driver Snowflake PHP PDO)DOTNET_DRIVER(driver Snowflake .NET )SQL_API(SQL API)SNOWPIPE_STREAMING_CLIENT_SDK(SDK cliente do Snowpipe Streaming)PY_CORE(driver principal do Snowflake Python)SPROC_PYTHON(procedimento armazenado do Snowflake Python)PYTHON_SNOWPARK(driver Snowflake Python Snowpark)SQL_ALCHEMY(Snowflake SQLAlchemy)SNOWPARK(Snowpark)SNOWFLAKE_CLIENT(Snowflake Client SDK)
'version'A versão mínima aceita para cada tipo de cliente especificado: uma sequência de três dígitos delimitada por pontos e entre aspas simples. Por exemplo:
'1.0.0'ou'3.14.1'. Tentativas de autenticação com versões de cliente inferiores são bloqueadas quando esta política está em vigor para uma conta ou um usuário.
A propriedade CLIENT_POLICY de uma política de autenticação é um método de melhor esforço para bloquear logins de usuários com base em versões específicas do cliente. Não deve ser usado como controle exclusivo para estabelecer um limite de segurança.
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
SAMLouOAUTHnão estão na listaAUTHENTICATION_METHODS.Todos os valores da lista
SECURITY_INTEGRATIONSdevem ser compatíveis com os valores da listaAUTHENTICATION_METHODS. Por exemplo, seSECURITY_INTEGRATIONScontiver uma integração de segurança SAML eAUTHENTICATION_METHODScontiverOAUTH, não será possível criar a política de autenticação.ALLPermitir todas as integrações de segurança.
Padrão:
ALL.MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' }Determines whether a user must enroll in multi-factor authentication. If this value is used, then the
CLIENT_TYPESparameter must includeSNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).O valor do parâmetro
MFA_ENROLLMENTpode serREQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY. Esse valor faz parte da descontinuação gradual de senhas de fator único do Snowflake e não pode ser definido diretamente. Se você executar um comando DESCRIBE AUTHENTICATION POLICY eMFA_ENROLLMENT = 'REQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY, os usuários com senha deverão se inscrever na MFA se usarem o Snowsight.REQUIREDUsuários humanos que usam autenticação por senha ou login único (SSO) devem se inscrever na MFA.
REQUIRED_PASSWORD_ONLYTodos os usuários humanos que usam autenticação por senha devem se inscrever na MFA, independentemente do cliente que estejam usando. Usuários que usam autenticação SSO não precisam se inscrever.
OPTIONALMantido apenas para compatibilidade com versões anteriores.
Padrão:
OPTIONAL. Para compatibilidade com versões anteriores, você pode criar uma política de autenticação sem especificar umMFA_ENROLLMENTvalor, mas o valor real aplicado não seráOPTIONALporque a Snowflake está mudando para exigir MFA para todos os usuários humanos. Para determinar qual valor está sendo aplicado para uma política de autenticação existente, execute o DESCRIBE AUTHENTICATION POLICY Comando.
MFA_POLICY= ( list_of_properties )Specifies the policies that affect how multi-factor authentication (MFA) is enforced. Set this to a space-delimited list of one or more of the following properties and values:
ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } ... ] )Specifies the multi-factor authentication (MFA) methods that users can use as a second factor of authentication. You can specify more than one method as a comma-delimited list.
ALLOs usuários podem usar uma chave de acesso, um aplicativo autenticador ou o Duo como segundo fator de autenticação.
PASSKEYOs usuários podem usar uma chave de acesso como segundo fator de autenticação.
TOTPOs usuários podem usar um aplicativo autenticador como segundo fator de autenticação.
OTPUser can use a one-time passcode as their second factor of authentication. For more information, see Configuração de administradores para acesso de emergência.
DUOOs usuários podem usar o Duo como segundo fator de autenticação.
Padrão:
ALL.ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = { 'ALL' | 'NONE' }Especifica se a autenticação multifator (MFA) é obrigatória quando os usuários se autenticam com logon único (SSO). Para exigir MFA, especifique
ALL.Default:
NONE
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_daysEspecifica 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 de expiração máximo (que você pode especificar configurando 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_daysEspecifica o número máximo de dias que pode ser definido para o tempo de expiração de um token de acesso programático. Você pode especificar um valor do tempo de expiração padrão (que você pode especificar definindo DEFAULT_EXPIRY_IN_DAYS) 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_tokencom 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 commy_tokenfalhará 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_REQUIREDO 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_ENFORCEDO 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 );
WORKLOAD_IDENTITY_POLICY = ( list_of_properties )Especifica as políticas para federação de identidades de cargas de trabalho. Defina como uma lista delimitada por espaço que contenha uma ou mais das seguintes propriedades e valores:
ALLOWED_PROVIDERS = ( { ALL | AWS | AZURE | GCP | OIDC } [ , { AWS | AZURE | GCP | OIDC } ... ] )Especifica os provedores de identidade de carga de trabalho permitidos pela política de autenticação durante a autenticação de identidade de carga de trabalho. Se esse parâmetro for omitido, todos os provedores de identidade de carga de trabalho serão permitidos.
ALLOs usuários podem se autenticar com qualquer provedor de identidade de carga de trabalho com suporte e configurado.
AWSOs usuários podem ser autenticados com uma função ou usuário do AWS IAM.
AZUREOs usuários podem se autenticar com um token de acesso do Azure Entra ID.
GCPOs usuários podem ser autenticados com um token de ID assinado pelo Google.
OIDCOs usuários podem ser autenticados com um token de ID de um provedor OIDC configurado.
ALLOWED_AWS_ACCOUNTS = ( 'string_literal' [ , 'string_literal' , ... ] )Especifica a lista de IDs de contas da AWS permitido pela política de autenticação durante a autenticação de identidade de carga de trabalho do tipo
AWS.Por padrão, quando um usuário do serviço Snowflake tem uma
WORKLOAD_IDENTITYdo tipoAWS, então o ARN pode fazer referência a qualquer conta da AWS. Se esse parâmetro for definido, então somente os ARNs dos IDs de contas da AWS especificados têm permissão para autenticar.Cada elemento deve ser uma string de 12 dígitos representando o ID da conta da AWS.
Para obter mais informações, consulte Exibir identificadores de contas da AWS.
ALLOWED_AZURE_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )Especifica a lista de emissores do Azure Entra ID permitidos pela política de autenticação durante a autenticação de identidade de carga de trabalho do tipo
AZURE.Por padrão, quando um usuário do serviço Snowflake tem uma
WORKLOAD_IDENTITYdo tipoAZURE, o emissor pode ser qualquer Entra ID de locatário. Se esse parâmetro for definido, então somente os tokens Azure dos emissores especificados têm permissão para autenticação.Cada elemento deve ser um URL de autoridade válido com o seguinte formato:
https://login.microsoftonline.com/tenantId/v2.0
ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )Especifica a lista de emissores OIDC permitidos pela política de autenticação durante a autenticação de identidade de carga de trabalho do tipo
OIDC.Por padrão, quando um usuário do serviço Snowflake tem uma
WORKLOAD_IDENTITYdo tipoOIDC, então o emissor pode ser qualquer emissor OIDC válido. Se esse parâmetro for definido, então apenas tokens dos emissores OIDC especificados podem ser autenticados.Cada elemento deve ser um URL HTTPS válido que contém componentes de esquema, host e, opcionalmente, número de porta e caminho, mas nenhum componente de consulta ou fragmento. O URL não deve conter espaços e não deve exceder 2048 caracteres de comprimento.
Por exemplo:
WORKLOAD_IDENTITY_POLICY=( ALLOWED_PROVIDERS = (AWS, AZURE, GCP, OIDC) ALLOWED_AWS_ACCOUNTS = ('123456789012', '210987654321') ALLOWED_AZURE_ISSUERS = ('https://login.microsoftonline.com/8c7832f5-de56-4d9f-ba94-3b2c361abe6b/v2.0', 'https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0') ALLOWED_OIDC_ISSUERS = ('https://my.custom.oidc.issuer/', 'https://another.custom/oidc/issuer') );
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 |
|
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.
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.
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can’t both be used in the same statement.
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.
Examples¶
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';
Defina a autenticação multifator e atualize a lista de clientes:
CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
MFA_ENROLLMENT = REQUIRED
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Crie uma política de autenticação que inclua uma política de cliente. A política de cliente define a versão mínima para dois clientes de driver específicos:
CREATE AUTHENTICATION POLICY two_driver_policy
CLIENT_TYPES = ('DRIVERS')
CLIENT_POLICY = (
GO_DRIVER = (MINIMUM_VERSION = '1.14.1'),
JDBC_DRIVER = (MINIMUM_VERSION = '3.25.0')
)
COMMENT = 'JDBC and Go Driver minimum versions';
A seguinte tentativa de criar uma política de autenticação falha porque o parâmetro CLIENT_POLICY especifica os drivers que não são permitidos pelo parâmetro CLIENT_TYPES:
CREATE AUTHENTICATION POLICY go_driver_policy_test
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI')
CLIENT_POLICY = (GO_DRIVER = (MINIMUM_VERSION = '1.14.1'));
004800 (22023): Authentication policy can not contain CLIENT_POLICY of 'GO_DRIVER' without including 'DRIVERS' in CLIENT_TYPES.
Para obter mais exemplos, consulte Políticas de autenticação.