Referência de API para acesso a segredos

Você pode usar Java ou Python para recuperar credenciais contidas em um segredo criado com a instrução CREATE SECRET. Este tópico lista os métodos para obter informações de um segredo. Eles estão disponíveis com APIs incluídas no Snowflake.

API De Java para acesso secreto

Para código em Java, use a classe com.snowflake.snowpark_java.types.SnowflakeSecrets.

A tabela a seguir lista métodos para acessar dados em um segredo.

Método

Descrição

public String getGenericSecretString(String genericStringSecretName)

Obtém a cadeia de caracteres de token genérica mantida pelo segredo especificado por genericStringSecretName. Retorna uma cadeia de caracteres de token válida.

public String getOAuthAccessToken(String oauthSecretName)

Obtém o token de acesso OAuth2 mantido pelo segredo especificado por oauthSecretName. Retorna uma cadeia de caracteres de token OAuth2.

public String getSecretType(String secretName)

Obtém o tipo de segredo especificado por secretName. Retorna o valor do parâmetro TYPE definido para este segredo quando ele foi criado com a instrução CREATE SECRET.

public UsernamePassword getUsernamePassword(String usernamePasswordSecretName)

Obtém o nome de usuário e a senha do segredo especificado por usernamePasswordSecretName. Retorna um com.snowflake.snowpark_java.types.UsernamePassword com nome de usuário e senha.

Para usar a classe SnowflakeSecrets:

  1. Disponibilize a biblioteca Snowpark para seu código manipulador usando a cláusula PACKAGES conforme descrito em CREATE FUNCTION.

  2. No código do gerenciador, importe com.snowflake.snowpark_java.types.SnowflakeSecrets.

  3. Construa um objeto SnowflakeSecrets e chame um dos métodos listados acima para acessar o segredo.

O código no exemplo a seguir recupera o valor definido para a cláusula TYPE quando o segredo foi criado com CREATE SECRET. Aqui, o segredo oauth_token é do tipo OAUTH2.

CREATE OR REPLACE FUNCTION get_secret_type()
RETURNS STRING
LANGUAGE JAVA
HANDLER = 'SecretTest.getSecretType'
EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
PACKAGES = ('com.snowflake:snowpark:latest')
SECRETS = ('cred' = oauth_token )
AS
$$
import com.snowflake.snowpark_java.types.SnowflakeSecrets;

public class SecretTest {
  public static String getSecretType() {
    SnowflakeSecrets sfSecrets = SnowflakeSecrets.newInstance();

    String secretType = sfSecrets.getSecretType("cred");

    return secretType;
  }
}
$$;
Copy

API de Python para acesso secreto

Para código em Python, use o módulo _snowflake exposto às UDFs de Python que é executado no Snowflake. A tabela a seguir lista funções _snowflake para acessar dados em um segredo.

Função

Descrição

get_generic_secret_string(generic_string_secret_name)

Obtém a cadeia de caracteres de token genérica mantida pelo segredo especificado por generic_string_secret_name. Retorna uma cadeia de caracteres de token válida.

get_oauth_access_token(oauth_secret_name)

Obtém o token de acesso OAuth2 mantido pelo segredo especificado por oauth_secret_name. Retorna uma cadeia de caracteres de token OAuth2.

get_secret_type(secret_name)

Obtém o tipo de segredo especificado por secret_name. Retorna o valor do parâmetro TYPE definido para este segredo quando ele foi criado com a instrução CREATE SECRET.

get_username_password(username_password_secret_name)

Obtém o nome de usuário e a senha do segredo especificado por username_password_secret_name. Retorna um objeto com atributos username e password.

Para usar o módulo _snowflake no código do gerenciador, importe-o como faria com outro módulo.

O código no exemplo a seguir recupera o valor definido para a cláusula TYPE quando o segredo foi criado com CREATE SECRET. Aqui, o segredo oauth_token é do tipo OAUTH2.

CREATE OR REPLACE FUNCTION get_secret_type()
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = 3.8
HANDLER = 'get_secret'
EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
SECRETS = ('cred' = oauth_token )
AS
$$
import _snowflake

def get_secret():
  secret_type = _snowflake.get_secret_type('cred')
  return secret_type
$$;
Copy

O código no exemplo a seguir recupera o nome de usuário e a senha mantidos pelo segredo.

CREATE OR REPLACE FUNCTION get_secret_username_password()
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = 3.8
HANDLER = 'get_secret_username_password'
EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
SECRETS = ('cred' = credentials_secret )
AS
$$
import _snowflake

def get_secret_username_password():
  username_password_object = _snowflake.get_username_password('cred');

  username_password_dictionary = {}
  username_password_dictionary["Username"] = username_password_object.username
  username_password_dictionary["Password"] = username_password_object.password

  return username_password_dictionary
$$;
Copy