Referência de API para acesso a segredos

You can use Java, Python, or Scala to retrieve credentials contained in a secret you created with the CREATE SECRET statement. This topic lists the methods for getting information from a secret. These are available with APIs included in Snowflake.

API De Java para acesso secreto

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

Nota

You can also use the Java API in Scala code.

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.

public CloudProviderToken getCloudProviderToken(String cloudProviderSecretName)

Obtém um token do provedor de nuvem com os valores que você pode usar para criar uma sessão com um provedor de nuvem, como o AWS. Retorna um com.snowflake.snowpark_java.types.CloudProviderToken com os seguintes métodos:

  • String getAccessKeyId

  • String getSecretAccessKey

  • String getToken

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.

get_cloud_provider_token(cloud_provider_secret_name)

Obtém um objeto do provedor de nuvem com valores que podem ser usados para criar uma sessão com um provedor de nuvem, como o AWS. Retorna um tipo com os seguintes atributos:

  • access_key_id

  • secret_access_key

  • token

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.12
  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.12
  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