ALTER USER

Modifica as propriedades e os parâmetros de objeto/sessão para um usuário existente no sistema:

  • Os administradores podem usar este comando para alterar propriedades e padrões de parâmetros para quaisquer usuários para os quais os administradores tenham os privilégios correspondentes.

  • Os usuários individuais podem usar este comando para alterar propriedades específicas e qualquer padrão de parâmetros de sessão para si mesmos. Para obter mais detalhes, consulte Notas de uso (neste tópico).

Também pode ser usado para abortar todas as consultas (e outras instruções SQL) enviadas pelo usuário.

Consulte também:

CREATE USER , DROP USER, SHOW PARAMETERS, SHOW USERS , DESCRIBE USER

Sintaxe

ALTER USER [ IF EXISTS ] [ <name> ] RENAME TO <new_name>

ALTER USER [ IF EXISTS ] [ <name> ] RESET PASSWORD

ALTER USER [ IF EXISTS ] [ <name> ] ABORT ALL QUERIES

ALTER USER [ IF EXISTS ] [ <name> ] ADD DELEGATED AUTHORIZATION OF ROLE <role_name> TO SECURITY INTEGRATION <integration_name>

ALTER USER [ IF EXISTS ] [ <name> ] REMOVE DELEGATED { AUTHORIZATION OF ROLE <role_name> | AUTHORIZATIONS } FROM SECURITY INTEGRATION <integration_name>

ALTER USER [ IF EXISTS ] [ <name> ] mfaActions

ALTER USER [ IF EXISTS ] [ <name> ] SET { AUTHENTICATION | PASSWORD | SESSION } POLICY <policy_name>

ALTER USER [ IF EXISTS ] [ <name> ] UNSET { AUTHENTICATION | PASSWORD | SESSION } POLICY

ALTER USER [ IF EXISTS ] [ <name> ] SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER USER [ IF EXISTS ] [ <name> ] UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER USER [ IF EXISTS ] [ <name> ] SET { [ objectProperties ] [ objectParams ] [ sessionParams ] }

ALTER USER [ IF EXISTS ] [ <name> ] UNSET { <object_property_name> | <object_param_name> | <session_param_name> } [ , ... ]
Copy

Onde:

mfaActions ::=
  {
    ENROLL MFA
    SET DEFAULT_MFA_METHOD = { PASSKEY | TOTP | DUO }
    REMOVE MFA METHOD <mfa_method>
    MODIFY MFA METHOD <mfa_method> SET COMMENT = '<string>'
  }
Copy
objectProperties ::=
    PASSWORD = '<string>'
    LOGIN_NAME = <string>
    DISPLAY_NAME = <string>
    FIRST_NAME = <string>
    MIDDLE_NAME = <string>
    LAST_NAME = <string>
    EMAIL = <string>
    MUST_CHANGE_PASSWORD = TRUE | FALSE
    DISABLED = TRUE | FALSE
    DAYS_TO_EXPIRY = <integer>
    MINS_TO_UNLOCK = <integer>
    DEFAULT_WAREHOUSE = <string>
    DEFAULT_NAMESPACE = <string>
    DEFAULT_ROLE = <string>
    DEFAULT_SECONDARY_ROLES = ( 'ALL' )
    MINS_TO_BYPASS_MFA = <integer>
    DISABLE_MFA = TRUE | FALSE
    RSA_PUBLIC_KEY = <string>
    RSA_PUBLIC_KEY_FP = <string>
    RSA_PUBLIC_KEY_2 = <string>
    RSA_PUBLIC_KEY_2_FP = <string>
    TYPE = PERSON | SERVICE | LEGACY_SERVICE | NULL
    COMMENT = '<string>'
Copy
objectParams ::=
    ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE
    ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = TRUE | FALSE
    NETWORK_POLICY = <string>
    PREVENT_UNLOAD_TO_INLINE_URL = TRUE | FALSE
    PREVENT_UNLOAD_TO_INTERNAL_STAGES = TRUE | FALSE
Copy
sessionParams ::=
    ABORT_DETACHED_QUERY = TRUE | FALSE
    AUTOCOMMIT = TRUE | FALSE
    BINARY_INPUT_FORMAT = <string>
    BINARY_OUTPUT_FORMAT = <string>
    DATE_INPUT_FORMAT = <string>
    DATE_OUTPUT_FORMAT = <string>
    DEFAULT_NULL_ORDERING = <string>
    ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE
    ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE
    JSON_INDENT = <num>
    LOCK_TIMEOUT = <num>
    QUERY_TAG = <string>
    ROWS_PER_RESULTSET = <num>
    S3_STAGE_VPCE_DNS_NAME = <string>
    SEARCH_PATH = <string>
    SIMULATED_DATA_SHARING_CONSUMER = <string>
    STATEMENT_TIMEOUT_IN_SECONDS = <num>
    STRICT_JSON_OUTPUT = TRUE | FALSE
    TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE
    TIMESTAMP_INPUT_FORMAT = <string>
    TIMESTAMP_LTZ_OUTPUT_FORMAT = <string>
    TIMESTAMP_NTZ_OUTPUT_FORMAT = <string>
    TIMESTAMP_OUTPUT_FORMAT = <string>
    TIMESTAMP_TYPE_MAPPING = <string>
    TIMESTAMP_TZ_OUTPUT_FORMAT = <string>
    TIMEZONE = <string>
    TIME_INPUT_FORMAT = <string>
    TIME_OUTPUT_FORMAT = <string>
    TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string>
    TWO_DIGIT_CENTURY_START = <num>
    UNSUPPORTED_DDL_ACTION = <string>
    USE_CACHED_RESULT = TRUE | FALSE
    WEEK_OF_YEAR_POLICY = <num>
    WEEK_START = <num>
Copy

Nota

Para fins de legibilidade, a lista completa de parâmetros de sessão que podem ser definidos para um usuário não está incluída aqui. Para uma lista completa de todos os parâmetros de sessão com suas descrições, bem como parâmetros de conta e objeto, consulte Parâmetros.

Parâmetros

name

Especifica o identificador do usuário a ser alterado. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Se o identificador for omitido, a instrução modificará o usuário ativo (ou seja, logado). As restrições descritas em Notas de uso (neste tópico) se aplicam.

RENAME TO new_name

Especifica o novo identificador do usuário; deve ser único para sua conta.

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

RESET PASSWORD

Gera um URL, que pode ser compartilhado com o usuário, que abre uma página da web a partir da qual o usuário pode inserir uma nova senha. O URL gerado é válido para um único uso e expira após 4 horas.

Note que a especificação deste parâmetro não invalida a senha atual do usuário. O usuário pode continuar a usar sua senha atual até redefini-la usando o URL.

Se você deseja invalidar sua senha atual, use SET PASSWORD = 'string' em vez disso, o que muda sua senha para um novo valor.

ABORT ALL QUERIES

Aborta todas as consultas e outras instruções SQL atualmente em execução ou programadas pelo usuário, independentemente do warehouse no qual as consultas estão em execução/agendadas.

Note que o usuário ainda pode entrar no Snowflake e iniciar novas consultas.

Se você quiser abortar todas as consultas em execução/agendadas e impedir que o usuário entre no Snowflake ou inicie novas consultas, especifique SET DISABLED = TRUE em vez disso.

ADD DELEGATED AUTHORIZATION OF ROLE role_name TO SECURITY INTEGRATION integration_name;

Adiciona o consentimento do usuário para iniciar uma sessão usando uma função específica para uma determinada integração.

Para obter mais detalhes, consulte Adição de autorizações delegadas para consentimento do usuário do OAuth.

REMOVE DELEGATED AUTHORIZATION OF ROLE role_name FROM SECURITY INTEGRATION integration_name , . REMOVE DELEGATED AUTHORIZATIONS FROM SECURITY INTEGRATION integration_name

Revoga o consentimento para o usuário:

  • A primeira sintaxe revoga o consentimento para uma integração de segurança específica para uma função específica. Isto tem o efeito de revogar qualquer token de acesso OAuth associado à integração e à função específica.

  • A segunda sintaxe revoga todo o consentimento de uma integração de segurança especificada. Isto tem o efeito de revogar qualquer token de acesso OAuth associado à integração.

Para obter mais detalhes, consulte:

{ AUTHENTICATION | PASSWORD | SESSION } POLICY policy_name

Especifica uma das seguintes políticas para o usuário:

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Especifica o nome da tag e o valor da cadeia de caracteres dela.

O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.

Para obter informações sobre como especificar tags em uma instrução, consulte Cota de tags para objetos.

Propriedades do objeto (objectProperties)

SET property_name = property_value [ ... ] , . UNSET property_name [ , ... ]

Especifica uma (ou mais) propriedade do objeto a serem definidas ou não para o uso. A remoção de uma propriedade de objeto a redefine como padrão.

TYPE = { PERSON | SERVICE | LEGACY_SERVICE | NULL }

Altera o tipo de usuário. É possível definir esta propriedade para diferenciar entre usuários humanos, de serviço e de serviço legado. Para obter informações sobre as características desses tipos de usuários, consulte Tipos de usuários.

PERSON

Um usuário que é um usuário humano que interage com o Snowflake.

SERVICE

Um usuário que é um serviço ou aplicativo que interage com o Snowflake sem intervenção humana.

Se um usuário tiver sua propriedade TYPE definida como SERVICE usando o comando ALTER USER, as propriedades incompatíveis permanecerão armazenadas, mas não serão retornadas por comandos como DESCRIBE USER. As propriedades incompatíveis não podem ser definidas usando o comando ALTER USER.

Se um usuário, com sua propriedade TYPE definida como SERVICE, for alterado para um usuário com sua propriedade TYPE definida como PERSON ou NULL, as propriedades incompatíveis serão restauradas e poderão ser alteradas, incluindo sua propriedade PASSWORD.

LEGACY_SERVICE

Um usuário com a propriedade TYPE definida como LEGACY_SERVICE representa uma integração não interativa. É semelhante ao SERVICE, mas permite autenticação por senha e SAML.

NULL

Funciona da mesma forma que PERSON.

DISABLE_MFA = { TRUE | FALSE }

O efeito desse parâmetro depende do fato de o usuário ter se inscrito voluntariamente em MFA ou ter sido obrigado a se inscrever.

  • Se o usuário estiver sujeito a uma política de autenticação que exija o uso de MFA, a definição desse parâmetro como TRUE limpa os métodos MFA para o usuário. Na próxima vez que o usuário fizer login, ele será solicitado a adicionar um novo método de MFA que poderá ser usado como um segundo fator de autenticação.

  • Se o usuário se inscreveu voluntariamente em MFA, a definição desse parâmetro como TRUE permite que o usuário da senha se autentique sem um segundo fator de autenticação.

Para obter informações sobre as outras propriedades do objeto que você pode definir (por exemplo, PASSWORD, LOGIN_NAME, DEFAULT_ROLE), consulte CREATE USER.

Consulte Notas de uso (neste tópico) para obter detalhes mais gerais sobre a configuração e o cancelamento de propriedades.

Parâmetros de objeto (objectParams)

SET ...

Especifica um ou mais parâmetros a serem definidos para o usuário (separados por espaços em branco, vírgulas ou novas linhas):

ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }

Controla como as consultas que falham devido a erros de sintaxe ou análise aparecem em um histórico de consultas. Se FALSE, os conteúdos de uma consulta com falha é editado das exibições, páginas e funções que fornecem um histórico de consulta.

Este parâmetro controla o comportamento do usuário que visualiza o histórico da consulta, não do usuário que executou a consulta.

Somente os usuários com uma função que recebeu ou herdou o privilégio AUDIT podem definir o parâmetro ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR.

ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = { TRUE | FALSE }

Controla se as mensagens de erro relacionadas a objetos seguros são editadas nos metadados. Para obter mais informações sobre a edição de mensagens de erro para objetos seguros, consulte Objetos seguros: edição de informações em mensagem de erro.

Somente os usuários com uma função que recebeu ou herdou o privilégio AUDIT podem definir o parâmetro ENABLE_UNREDACTED_SECURE_OBJECT_ERROR.

Ao usar o comando ALTER USER para definir o parâmetro TRUE para um usuário específico, modifique o usuário que deseja ver as mensagens de erro redigidas nos metadados, não o usuário que causou o erro.

NETWORK_POLICY = string

Especifica a política de redes que está ativa para o usuário.

Consulte também Notas de uso (neste tópico) para detalhes mais gerais sobre como definir e remover parâmetros.

UNSET ...

Especifica as propriedades a serem removidas para a usuário, o que as restaura para os padrões.

  • NETWORK_POLICY

  • SESSION POLICY

  • TAG tag_name [ , tag_name ... ]

Parâmetros de sessão (sessionParams)

SET session_param_name = param_value [ ... ] , . UNSET session_param_name [ , ... ]

Especifica um (ou mais) parâmetros de sessão a serem definidos ou não para o usuário. O cancelamento de um parâmetro de sessão o redefine como padrão.

Para obter mais detalhes sobre os parâmetros da sessão que você pode definir (ABORT_DETACHED_SESSION, AUTOCOMMIT etc.), consulte Parâmetros.

Consulte também Notas de uso (neste tópico) para detalhes mais gerais sobre como definir e remover parâmetros.

Ações de autenticação multifator (MFA) (mfaActions)

user ENROLL MFA

Registra o usuário especificado na autenticação multifator (MFA) e solicita que ele adicione um segundo fator de autenticação.

  • Se o usuário tiver um e-mail verificado, o Snowflake enviará um e-mail solicitando que ele adicione um método de autenticação de MFA.

  • Se o usuário não tiver um e-mail verificado, o Snowflake retornará o URL de uma página que solicita que o usuário adicione um método de autenticação de MFA.

SET DEFAULT_MFA_METHOD = { PASSKEY | TOTP | DUO }

Se o usuário atual tiver mais de um método de MFA, especifique qual deles será usado como o segundo fator de autenticação.

user REMOVE MFA METHOD mfa_method

Remove um método de MFA que o usuário especificado configurou anteriormente. O usuário não pode mais usar o método de MFA como um segundo fator de autenticação.

Para obter o identificador de mfa_method, execute o comando SHOW MFA METHODS e encontre o valor na coluna name.

[ user ] MODIFY MFA METHOD mfa_method SET COMMENT = 'string'

Define um nome descritivo para o método de MFA especificado.

Para obter o identificador de mfa_method, execute o comando SHOW MFA METHODS e encontre o valor na coluna name.

Os usuários podem omitir user para definir um nome descritivo para seus próprios métodos de MFA.

Notas de uso

  • Somente a função com o privilégio OWNERSHIP para o usuário, ou uma função superior, pode executar este comando para modificar a maioria das propriedades de usuário.

    Dica

    Ao alterar a senha de um usuário usando SET PASSWORD = 'string', recomendamos também especificar MUST_CHANGE_PASSWORD = TRUE para forçar o usuário a entrar na interface da web e alterar sua senha antes que ele possa entrar no Snowflake por qualquer outra interface (por exemplo, SnowSQL ou outro aplicativo cliente).

    Opcionalmente, use RESET PASSWORD para gerar um URL para uma página da web que o usuário possa acessar para alterar sua senha.

  • Somente os usuários com a função ACCOUNTADMIN podem definir os seguintes parâmetros:

    • PREVENT_UNLOAD_TO_INLINE_URL

    • PREVENT_UNLOAD_TO_INTERNAL_STAGES

  • Os usuários individuais podem executar o comando ALTER USER em si mesmos (isto é, especificando seu nome de usuário/identificador no comando) e alterar o seguinte:

    • DEFAULT_WAREHOUSE

    • DEFAULT_NAMESPACE

    • DEFAULT_ROLE

    • Qualquer um de seus padrões de parâmetros de sessão

    Note que os usuários não podem usar este comando para mudar sua senha. Por razões de segurança, o Snowflake só permite aos usuários mudar suas senhas de dentro da interface da web.

    No entanto, um administrador com os privilégios apropriados pode usar este comando com SET PASSWORD = 'string' para alterar a senha de um usuário.

    Dica

    Ao alterar a senha de um usuário, recomendamos também especificar MUST_CHANGE_PASSWORD = TRUE para forçar o usuário a entrar na interface da web e alterar sua senha antes que ele possa entrar no Snowflake por qualquer outra interface (por exemplo, SnowSQL ou outro aplicativo cliente).

    Opcionalmente, use RESET PASSWORD para gerar um URL para uma página da web que o usuário possa acessar para alterar sua senha.

  • Uma instrução ALTER USER não verifica que os objetos padrão (DEFAULT_WAREHOUSE, DEFAULT_NAMESPACE e DEFAULT_ROLE) existem. Observe que DEFAULT_SECONDARY_ROLES não aceita um nome de objeto como valor, mas uma instrução ALTER USER verifica que um valor suportado é especificado.

  • Você pode definir e remover propriedades de múltiplos objetos e parâmetros de objeto/sessão com uma única instrução ALTER:

    • Ao definir várias propriedades/parâmetros, separe-os com espaços em branco, vírgulas ou novas linhas.

    • Ao remover várias propriedades/parâmetros, eles devem ser separados por uma vírgula. Além disso, ao remover uma propriedade/parâmetro, especifique somente o nome; especificar um valor para a propriedade/parâmetro retornará um erro.

  • Se você especificar SET DISABLED = TRUE para um usuário:

    • Todas as consultas e outras instruções SQL atualmente em execução ou programadas pelo usuário são abortadas e o usuário não pode iniciar consultas adicionais.

    • O usuário fica bloqueado no Snowflake e não pode entrar novamente no sistema.

    Se você quiser apenas abortar todas as consultas/instruções em execução e programadas para um usuário, use ABORT ALL QUERIES em vez disso.

  • Se a propriedade TYPE do usuário for SERVICE, os seguintes comandos não poderão ser usados:

    • ALTER USER RESET PASSWORD

    • ALTER USER SET DISABLE_MFA = TRUE

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Renomear user1 como user2:

ALTER USER user1 RENAME TO user2;
Copy

Definir a senha de um usuário chamado user1 como H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt e exigir que o usuário altere sua senha acessando a interface da web do Snowflake:

ALTER USER user1 SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
Copy

Altere o tipo de usuário para um aplicativo que interage com o Snowflake de forma programática:

ALTER USER user1 SET TYPE = SERVICE;
Copy

Remover um comentário existente de um usuário:

ALTER USER user1 UNSET COMMENT;
Copy

Não ativar nenhuma função secundária por padrão:

ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ();
Copy

Ativar todas as funções secundárias por padrão:

ALTER USER user1 UNSET DEFAULT_SECONDARY_ROLES;
Copy

OR

ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ('ALL');
Copy