Uso de tokens de acesso programático para autenticação¶
Você pode usar um token de acesso programático para se autenticar nos seguintes pontos de extremidade do Snowflake:
Nota
Ainda não há suporte para o uso de tokens de acesso programático para autenticação nos pontos de extremidade do Snowpark Container Services.
Você também pode usar um token de acesso programático como substituto de uma senha da seguinte forma:
Aplicativos de terceiros que se conectam ao Snowflake (como Tableau e PowerBI).
Snowflake APIs e bibliotecas (como a Snowpark API e a Snowflake Python API.
Clientes de linha de comando do Snowflake (como o Snowflake CLI e SnowSQL.
Você pode gerar tokens de acesso programático para usuários humanos (usuários com TYPE=PERSON) e usuários de serviço (usuários com TYPE=SERVICE).
Pré-requisitos¶
Você deve cumprir os seguintes pré-requisitos para gerar e usar tokens de acesso programático:
Requisitos da política de redes¶
Por padrão, o 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:
Para usuários de serviço (onde TYPE=SERVICE para o usuário), você só pode gerar ou usar um token se o usuário estiver sujeito a uma política de redes.
Esse pré-requisito limita o uso do token a solicitações de um conjunto específico de endereços ou identificadores de rede.
Para usuários humanos (onde TYPE=PERSON para o usuário), você pode gerar um token mesmo que o usuário não esteja sujeito a uma política de redes, mas o usuário deve estar sujeito a uma política de redes para se autenticar com esse token.
Se um usuário humano que não estiver sujeito a uma política de redes precisar usar um token de acesso programático para autenticação, você poderá ignorar temporariamente o requisito de ter uma política de redes, mas não recomendamos isso. Consulte Geração de um token de acesso programático.
Nota
Os usuários não podem ignorar a própria política de redes.
A política de redes pode ser ativada para todos os usuários da conta ou para um usuário específico.
Para alterar esse requisito, crie ou modifique uma política de autenticação que especifique uma política de token de acesso programático.
Execute o comando CREATE AUTHENTICATION POLICY ou ALTER AUTHENTICATION POLICY. Na cláusula PAT_POLICY, defina NETWORK_POLICY_EVALUATION 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, para criar uma política de autenticação que remova o requisito de política de redes, mas que aplique qualquer política de redes à qual o usuário esteja sujeito:
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
);
Em seguida, aplica a política de autenticação a uma conta ou usuário.
Como outro exemplo, alterar uma política de autenticação existente para remover o requisito da política de redes e impedir a aplicação de qualquer política de redes à qual o usuário esteja sujeito:
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
NETWORK_POLICY_EVALUATION = NOT_ENFORCED
);
Requisitos da política de autenticação¶
Se houver uma política de autenticação que limite os métodos de autenticação de um usuário, o usuário não poderá gerar e usar tokens de acesso programático, a menos que a lista AUTHENTICATION_METHODS dessa política inclua 'PROGRAMMATIC_ACCESS_TOKEN'
.
Por exemplo, suponha que uma política de autenticação limite os usuários ao uso dos métodos OAuth e de senha para autenticação:
CREATE AUTHENTICATION POLICY my_auth_policy
...
AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD')
...
Os usuários não podem gerar e usar tokens de acesso programático, a menos que você adicione 'PROGRAMMATIC_ACCESS_TOKEN'
à lista AUTHENTICATION_METHODS. Você pode usar o comando ALTER AUTHENTICATION POLICY para atualizar essa lista.
Por exemplo:
ALTER AUTHENTICATION POLICY my_auth_policy
SET AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD', 'PROGRAMMATIC_ACCESS_TOKEN');
Configuração do tempo de expiração padrão e máximo¶
Os administradores (usuários com a função ACCOUNTADMIN) podem definir as seguintes configurações que afetam o tempo de expiração dos tokens de acesso programático:
Configuração do tempo máximo de expiração¶
Por padrão, você pode especificar um tempo de expiração de até 365 dias para um token. Se quiser reduzir esse tempo para um período menor, crie ou modifique uma política de autenticação que especifique uma política de token de acesso programático com um tempo máximo de expiração.
Execute o comando CREATE AUTHENTICATION POLICY ou ALTER AUTHENTICATION POLICY. Na cláusula PAT_POLICY, defina MAX_EXPIRY_IN_DAYS como um valor que varia de 1
a 365
.
Por exemplo, para criar uma política de autenticação que defina o máximo para 100 dias:
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
MAX_EXPIRY_IN_DAYS=100
);
Em seguida, aplica a política de autenticação a uma conta ou usuário.
Como outro exemplo, para alterar uma política de autenticação existente e definir o máximo para 90 dias:
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
MAX_EXPIRY_IN_DAYS=90
);
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.
Configuração do tempo de expiração padrão¶
Por padrão, um token de acesso programático expira após 15 dias. Se quiser alterar isso, crie ou modifique uma política de autenticação que especifique uma política de token de acesso programático com uma expiração padrão.
Execute o comando CREATE AUTHENTICATION POLICY ou ALTER AUTHENTICATION POLICY. Na cláusula PAT_POLICY, defina DEFAULT_EXPIRY_IN_DAYS como um valor que varia de 1
até o tempo máximo de expiração.
Por exemplo, para criar uma política de autenticação que defina o padrão como 5 dias:
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
DEFAULT_EXPIRY_IN_DAYS=5
);
Em seguida, aplica a política de autenticação a uma conta ou usuário.
Como outro exemplo, para alterar uma política de autenticação existente para definir o padrão para 30 dias:
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
DEFAULT_EXPIRY_IN_DAYS=30
);
Privilégios necessários para tokens de acesso programático¶
Para criar e gerenciar um token de acesso programático, você precisa usar uma função à qual foram concedidos os seguintes privilégios:
Para usuários humanos (com TYPE=PERSON), você não precisa de nenhum privilégio especial para gerar, modificar, descartar ou exibir um token de acesso programático para si mesmo.
Se estiver gerando, modificando, descartando ou exibindo um token de acesso programático para um usuário diferente ou um usuário de serviço (com TYPE=SERVICE), o usuário deverá usar uma função que tenha o privilégio OWNERSHIP ou MODIFY PROGRAMMATIC AUTHENTICATION METHODS nesse usuário.
Por exemplo, suponha que você queira conceder aos usuários com a função personalizada
my_service_owner_role
a capacidade de gerar e gerenciar tokens de acesso programático ao usuário do serviçomy_service_user
. Você pode conceder o privilégio MODIFY PROGRAMMATIC AUTHENTICATION METHODS no usuáriomy_service_user
para a funçãomy_service_owner_role
:GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER my_service_user TO ROLE my_service_owner_role;
Geração de um token de acesso programático¶
Você pode gerar um token de acesso programático no Snowsight ou executando comandos SQL.
Faça login no Snowsight.
Selecione Admin » Users & Roles.
Selecione o usuário para o qual deseja gerar o token de acesso programático.
Em Programmatic access tokens, selecione Generate new token.
Na caixa de diálogo New programmatic access token, insira as seguintes informações:
No campo Name, digite um nome para o token.
No nome, você só pode usar letras, números e sublinhados. O nome deve começar com uma letra ou um sublinhado. As letras do nome são armazenadas e resolvidas como caracteres maiúsculos.
No campo Comment, insira um comentário descritivo sobre o token.
Após criar o token, esse comentário é exibido sob o token na seção Programmatic access tokens.
Em Expires in, escolha o número de dias após os quais o token deve expirar.
Se estiver gerando o token em nome de um usuário para um serviço (se o objeto USER tiver TYPE=SERVICE), ou se quiser restringir o escopo das operações que podem ser realizadas, selecione One specific role (recommended) e selecione a função que deve ser usada para avaliação de privilégios e criação de objetos.
Quando você usa esse token para autenticação, todos os objetos que cria são de propriedade dessa função, e essa função é usada para avaliação de privilégios.
Nota
As funções secundárias não são usadas, mesmo que DEFAULT_SECONDARY_ROLES esteja definido como (“ALL”) para o usuário.
Se, em vez disso, você selecionar Any of my roles, todos os objetos que criar pertencentes à sua função primária e os privilégios serão avaliados em relação às suas funções ativas.
Selecione Generate.
Copie ou faça o download do token de acesso programático gerado para que você possa usar o token para autenticação.
Nota
Depois de fechar essa caixa de mensagem, você não poderá copiar ou fazer download desse token.
O novo token está listado na seção Programmatic access tokens.
Conforme observado anteriormente, para usar um token de acesso programático, o usuário associado ao token deve estar sujeito a uma política de redes, a menos que você configure uma política de autenticação para alterar esse requisito.
Se um usuário humano que não estiver sujeito a uma política de redes precisar usar um token de acesso programático para autenticação, você poderá ignorar temporariamente o requisito de ter uma política de redes selecionando » Bypass requirement for network policy.
Nota
Bypass requirement for network policy não permite que os usuários ignorem a política de redes em si.
Execute ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN (PAT), especificando um nome para o token.
Se estiver gerando o token para si mesmo, omita o parâmetro
username
. Por exemplo, para gerar um token chamadoexample_token
:ALTER USER ADD PROGRAMMATIC ACCESS TOKEN example_token;
Se estiver gerando o token em nome de um usuário para uma pessoa (se o objeto USER tiver TYPE=PERSON), especifique o nome do usuário. Por exemplo, para gerar um token chamado
example_token
para o usuárioexample_user
:ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token;
Dica
Você pode usar a palavra-chave PAT como uma forma mais curta de especificar as palavras-chave PROGRAMMATIC ACCESS TOKEN.
Observe o seguinte:
Se estiver gerando o token em nome de um usuário para um serviço (se o objeto USER tiver TYPE=SERVICE) ou se quiser restringir o escopo das operações que podem ser realizadas, defina ROLE_RESTRICTION como a função que deve ser usada para avaliação de privilégios e criação de objetos.
Essa deve ser uma função que tenha sido concedida ao usuário. Você só pode especificar essa função ao gerar o token.
Quando você usa esse token para autenticação, todos os objetos que cria são de propriedade dessa função, e essa função é usada para avaliação de privilégios.
Nota
As funções secundárias não são usadas, mesmo que DEFAULT_SECONDARY_ROLES esteja definido como (“ALL”) para o usuário.
Por exemplo, suponha que você queira gerar um token chamado
example_service_user_token
para o usuário do serviçoexample_service_user
. Quando o usuário do serviço se autentica com esse token, a funçãoexample_service_user_role
(que foi concedida a esse usuário do serviço) deve ser usada para avaliar os privilégios e possuir quaisquer objetos criados pelo usuário.Para gerar um token para esse caso, execute a seguinte instrução:
ALTER USER IF EXISTS example_service_user ADD PROGRAMMATIC ACCESS TOKEN example_service_user_token ROLE_RESTRICTION = 'example_service_user_role';
Se você omitir ROLE_RESTRICTION, todos os objetos que criar pertencentes à sua função primária e os privilégios serão avaliados em relação às suas funções ativas.
Para especificar quando o token deve expirar (substituindo o tempo de expiração padrão), defina o parâmetro DAYS_TO_EXPIRY como o número de dias após os quais o token deve expirar.
Você pode especificar um valor de
1
(para 1 dia) até o valor do tempo máximo de expiração.Por exemplo, para gerar um token de acesso programático que expira após 10 dias:
ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token DAYS_TO_EXPIRY = 10 COMMENT = 'An example of a token that expires in 10 days';
Conforme observado anteriormente, para usar um token de acesso programático, o usuário associado ao token deve estar sujeito a uma política de redes, a menos que você configure uma política de autenticação para alterar esse requisito.
Para usuários humanos (em que a propriedade TYPE do usuário é PERSON) que não estão sujeitos a uma política de redes, você pode ignorar temporariamente o requisito de ter uma política de redes definindo MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT como o número de minutos durante os quais deseja ignorar esse requisito.
Por exemplo, suponha que você seja um usuário que não esteja sujeito a uma política de redes e queira usar um token de acesso programático para autenticação. Você pode ignorar o requisito de ter uma política de redes por 4 horas definindo MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT como 240.
Nota
A configuração de MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT não permite que os usuários ignorem a política de redes em si.
ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN imprime o token na coluna token_secret
na saída:
+---------------+-----------------+
| token_name | token_secret |
|---------------+-----------------|
| EXAMPLE_TOKEN | ... (token) ... |
+---------------+-----------------+
Nota
A saída desse comando é o único lugar em que o token aparece. Copie o token da saída para usá-lo na autenticação em um ponto de extremidade.
Após criar um token de acesso programático, você não pode alterar a data de expiração. Você deve revogar o token e gerar um novo token com o novo tempo de expiração.
Se tiver especificado uma função para o token de acesso programático e essa função for revogada do usuário, o token de acesso programático usará a função do sistema PUBLIC.
Uso de um token de acesso programático¶
As seções a seguir explicam como usar um token de acesso programático como senha e para autenticação em um ponto de extremidade do Snowflake:
Uso de um token de acesso programático como senha¶
Para autenticar com um token de acesso programático como senha, você pode especificar o token para o valor da senha nas configurações do driver ou na chamada para se conectar ao Snowflake.
Por exemplo, se estiver usando o Snowflake Connector para Python, você pode especificar o token de acesso programático como o argumento password
ao chamar o método snowflake.connector.connect
.
conn = snowflake.connector.connect(
user=USER,
password=<programmatic_access_token>,
account=ACCOUNT,
warehouse=WAREHOUSE,
database=DATABASE,
schema=SCHEMA
)
Da mesma forma, você pode usar tokens de acesso programático no lugar de uma senha em aplicativos de terceiros (como o Tableau ou PowerBI). Cole o token de acesso programático no campo da senha.
Nota
Por padrão, o uso de tokens de acesso programático exige que uma política de redes seja ativada para um usuário ou para todos os usuários da conta. Para usar tokens de acesso programático com um aplicativo de terceiros, você deve criar uma política de redes que permita solicitações dos intervalos de endereços IP do aplicativo de terceiros.
Uso de um token de acesso programático para autenticação em um ponto de extremidade¶
Para autenticar com um token de acesso programático, defina os seguintes cabeçalhos HTTP na solicitação:
Authorization: Bearer token_secret
X-Snowflake-Authorization-Token-Type: PROGRAMMATIC_ACCESS_TOKEN
(opcional)
Por exemplo, se estiver usando um cURL para enviar uma solicitação a um ponto de extremidade da Snowflake REST API:
curl --location 'https://myorganization-myaccount.snowflakecomputing.com/api/v2/databases' \
--header "Authorization: Bearer <token_secret>"
Como outro exemplo, se você estiver usando cURL para enviar uma solicitação ao ponto de extremidade da Snowflake SQL API:
curl -si -X POST https://myorganization-myaccount.snowflakecomputing.com/api/v2/statements \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Bearer <token_secret>" \
--data '{"statement": "select 1"}'
Se a solicitação falhar com um erro PAT_INVALID
, o erro pode ter ocorrido por um dos seguintes motivos:
O usuário associado ao token de acesso programático não foi encontrado.
A validação falhou.
A função associada ao token de acesso programático não foi encontrada.
O usuário não está associado ao token de acesso programático especificado.
Gerenciamento de tokens de acesso programático¶
As seções a seguir explicam como usar, modificar, listar, girar e revogar tokens de acesso programático:
Nota
Não é possível modificar, renomear, girar ou revogar um token de acesso programático em uma sessão em que você usou um token de acesso programático para autenticação.
Listagem de tokens de acesso programático¶
Você pode listar o token de acesso programático de um usuário no Snowsight ou executar comandos SQL.
Faça login no Snowsight.
Selecione Admin » Users & Roles.
Selecione o usuário que possui o token de acesso programático.
Os tokens de acesso programático para o usuário estão listados em Programmatic access tokens.
Execute o comando SHOW USER PROGRAMMATIC ACCESS TOKENS. Por exemplo, para visualizar informações sobre os tokens de acesso programático associados ao usuário example_user
:
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
Nota
Após sete dias, os tokens de acesso programático expirados são excluídos e não aparecem mais no Snowsight nem na saída do comando SHOW USER PROGRAMMATIC ACCESS TOKENS.
Como renomear um token de acesso programático¶
Você pode alterar o nome de um token de acesso programático no Snowsight ou executar comandos SQL.
Faça login no Snowsight.
Selecione Admin » Users & Roles.
Selecione o usuário associado ao token de acesso programático.
Em Programmatic access tokens, localize o token de acesso programático e selecione
» Edit.
No campo Name, altere o nome do token e selecione Save.
Execute ALTER USER … MODIFY PROGRAMMATIC ACCESS TOKEN … RENAME TO. Por exemplo:
ALTER USER IF EXISTS example_user MODIFY PROGRAMMATIC ACCESS TOKEN old_token_name RENAME TO new_token_name;
Rotação de um token de acesso programático¶
Você pode girar um token de acesso programático no Snowsight ou executar comandos SQL.
A rotação de um token retorna um novo segredo de token que tem o mesmo nome e um tempo de expiração estendido. A rotação de um token também expira o segredo do token existente. Use o novo token para se autenticar no Snowflake.
Faça login no Snowsight.
Selecione Admin » Users & Roles.
Selecione o usuário associado ao token de acesso programático.
Em Programmatic access tokens, localize o token de acesso programático e selecione
» Rotate.
Se quiser que o segredo do token anterior expire imediatamente, selecione Expire current secret immediately.
Selecione Rotate token.
Copie ou faça o download do token de acesso programático gerado para que você possa usar o token para autenticação.
Nota
Depois de fechar essa caixa de mensagem, você não poderá copiar ou fazer download desse token.
Execute o comando ALTER USER … ROTATE PROGRAMMATIC ACCESS TOKEN (PAT).
Por exemplo, para girar o token de acesso programático example_token
associado ao usuário example_user
:
ALTER USER IF EXISTS example_user ROTATE PROGRAMMATIC ACCESS TOKEN example_token;
Se quiser especificar quando o token antigo expira, defina EXPIRE_ROTATED_TOKEN_AFTER_HOURS como o número de horas antes da expiração do token antigo. Por exemplo, para expirar o token antigo imediatamente:
ALTER USER IF EXISTS example_user
ROTATE PROGRAMMATIC ACCESS TOKEN example_token
EXPIRE_ROTATED_TOKEN_AFTER_HOURS = 0;
O comando imprime o token na coluna token_secret
na saída:
+---------------+-----------------+-------------------------------------+
| token_name | token_secret | rotated_token_name |
|---------------+-----------------+-------------------------------------|
| EXAMPLE_TOKEN | ... (token) ... | EXAMPLE_TOKEN_ROTATED_1744239049066 |
+---------------+-----------------+-------------------------------------+
Nota
A saída desse comando é o único lugar em que o novo token aparece. Copie o token da saída para usá-lo na autenticação em um ponto de extremidade.
A saída também inclui o nome do token mais antigo que foi rotacionado:
Se quiser saber quando esse token expira, você pode usar o comando SHOW USER PROGRAMMATIC ACCESS TOKENS e procurar o nome do token. Por exemplo:
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
+--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------+ | name | user_name | role_restriction | expires_at | status | comment | created_on | created_by | mins_to_bypass_network_policy_requirement | rotated_to | |--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------| | EXAMPLE_TOKEN | EXAMPLE_USER | MY_CUSTOM_ROLE | 2025-05-09 07:18:47.360 -0700 | ACTIVE | | 2025-04-09 07:18:47.360 -0700 | EXAMPLE_USER | NULL | NULL | | EXAMPLE_TOKEN_ROTATED_1744239049066 | EXAMPLE_USER | MY_CUSTOM_ROLE | 2025-04-10 15:21:49.652 -0700 | ACTIVE | | 2025-04-09 15:21:49.652 -0700 | EXAMPLE_USER | NULL | EXAMPLE_TOKEN | +--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------+
Se quiser revogar esse token, você pode usar o comando ALTER USER … REMOVE PROGRAMMATIC ACCESS TOKEN (PAT) e especificar o nome do token mais antigo. Por exemplo:
ALTER USER IF EXISTS example_user REMOVE PROGRAMMATIC ACCESS TOKEN EXAMPLE_TOKEN_ROTATED_1744239049066;
+-------------------------------------------------------------------------------------+ | status | |-------------------------------------------------------------------------------------| | Programmatic access token EXAMPLE_TOKEN_ROTATED_1744239049066 successfully removed. | +-------------------------------------------------------------------------------------+
Revogação de um token de acesso programático¶
Você pode revogar um token de acesso programático no Snowsight ou executar comandos SQL.
Faça login no Snowsight.
Selecione Admin » Users & Roles.
Selecione o usuário associado ao token de acesso programático.
Em Programmatic access tokens, localize o token de acesso programático e selecione
» Delete.
Execute o comando ALTER USER … REMOVE PROGRAMMATIC ACCESS TOKEN (PAT).
Por exemplo, para revogar o token de acesso programático example_token
associado ao usuário example_user
:
ALTER USER IF EXISTS example_user REMOVE PROGRAMMATIC ACCESS TOKEN example_token;
Reativação de um token de acesso programático desativado¶
Quando você desativa o acesso de login de um usuário ou o Snowflake bloqueia o login de um usuário, os tokens de acesso programático desse usuário são automaticamente desativados.
Nota
Os tokens de acesso programático não são desativados quando um usuário é temporariamente bloqueado (por exemplo, devido a cinco ou mais tentativas com falha de autenticação).
Se você executar o comando SHOW USER PROGRAMMATIC ACCESS TOKENS, o valor na coluna status
será DISABLED
para tokens associados a esse usuário.
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
+---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------+
| name | user_name | role_restriction | expires_at | status | comment | created_on | created_by | mins_to_bypass_network_policy_requirement | rotated_to |
|---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------|
| EXAMPLE_TOKEN | EXAMPLE_USER | MY_ROLE | 2025-04-28 12:13:46.431 -0700 | DISABLED | NULL | 2025-04-13 12:13:46.431 -0700 | EXAMPLE_USER | NULL | NULL |
+---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------+
Se você habilitar posteriormente o acesso de login para esse usuário ou se o Snowflake desbloquear o acesso de login para esse usuário, os tokens de acesso programático para esse usuário permanecerão desativados. Para habilitar os tokens novamente, execute o comando ALTER USER … MODIFY PROGRAMMATIC ACCESS TOKEN (PAT) e defina DISABLED como FALSE. Por exemplo:
ALTER USER example_user MODIFY PROGRAMMATIC ACCESS TOKEN example_token SET DISABLED = FALSE;
Como obter informações sobre um token de acesso programático a partir do segredo¶
Se você precisar de informações sobre um token de acesso programático, com o segredo desse token, chame a função SYSTEM$DECODE_PAT. Você pode usar essa função se o segredo tiver sido comprometido e quiser saber o usuário associado ao token, o nome do token e o estado do token.
Por exemplo:
SELECT SYSTEM$DECODE_PAT('abC...Y5Z');
+------------------------------------------------------------------------+
| SYSTEM$DECODE_PAT('☺☺☺...☺☺☺') |
|------------------------------------------------------------------------|
| {"STATE":"ACTIVE","PAT_NAME":"MY_EXAMPLE_TOKEN","USER_NAME":"MY_USER"} |
+------------------------------------------------------------------------+
Práticas recomendadas¶
Se precisar armazenar um token de acesso programático, faça-o de forma segura (por exemplo, usando uma senha ou um gerenciador de segredos).
Evite expor tokens de acesso programático no código.
Restrinja o uso do token a uma função específica ao gerar o token.
Revise e alterne regularmente os tokens de acesso programático. Os usuários podem definir o tempo de expiração ao gerar o token, e os administradores podem reduzir o tempo máximo de expiração de todos os tokens para incentivar a rotação de tokens.
Limitações¶
Você só pode restringir um token de acesso programático a uma função ao gerar o token. Após gerar o token, você não pode alterar ou remover a função à qual ele está restrito.
Você só pode definir o tempo de expiração de um token de acesso programático ao gerar o token. Após gerar o token, você não pode alterar o tempo de expiração. Você pode revogar um token de acesso programático e gerar um novo token com um tempo de expiração diferente.
Você só pode visualizar o segredo de um token de acesso programático quando o cria. Após criar um token de acesso programático, você só pode visualizar informações sobre o token e não o segredo do token.
Os administradores podem listar todos os tokens de acesso programático de um determinado usuário, mas não podem listar todos os tokens de acesso programático de uma conta.
Você não pode recuperar um token de acesso programático após revogá-lo.