Référence d’API pour l’accès aux secrets

Vous pouvez utiliser Java ou Python pour récupérer les identifiants de connexion contenus dans un secret créé à l’aide de l’instruction CREATE SECRET. Cette rubrique énumère les méthodes permettant d’obtenir des informations à partir d’un secret. Elles sont disponibles avec les APIs incluses dans Snowflake.

API Java pour l’accès aux secrets

Pour le code en Java, utilisez la classe com.snowflake.snowpark_java.types.SnowflakeSecrets.

Le tableau suivant énumère les méthodes permettant d’accéder aux données d’un secret.

Méthode

Description

public String getGenericSecretString(String genericStringSecretName)

Récupère la chaîne de jetons génériques détenue par le secret spécifié par genericStringSecretName. Renvoie une chaîne de jeton valide.

public String getOAuthAccessToken(String oauthSecretName)

Récupère le jeton d’accès OAuth2 détenu par le secret spécifié par oauthSecretName. Renvoie une chaîne de jetons OAuth2.

public String getSecretType(String secretName)

Récupère le type du secret spécifié par secretName. Renvoie la valeur du paramètre TYPE définie pour ce secret lorsqu’il a été créé avec l’instruction CREATE SECRET.

public UsernamePassword getUsernamePassword(String usernamePasswordSecretName)

Récupère le nom d’utilisateur et le mot de passe du secret spécifié par usernamePasswordSecretName. Renvoie un com.snowflake.snowpark_java.types.UsernamePassword contenant un nom d’utilisateur et un mot de passe.

Pour utiliser la classe SnowflakeSecrets :

  1. Mettez la bibliothèque Snowpark à la disposition de votre gestionnaire de code en utilisant la clause PACKAGES comme décrit dans CREATE FUNCTION.

  2. Dans le code de votre gestionnaire, importez com.snowflake.snowpark_java.types.SnowflakeSecrets.

  3. Construisez un objet SnowflakeSecrets et appelez l’une des méthodes énumérées ci-dessus pour accéder au secret.

Le code de l’exemple suivant récupère la valeur définie pour la clause TYPE lorsque le secret a été créé avec CREATE SECRET. Ici, le secret oauth_token est de type 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 Python pour l’accès aux secrets

Pour le code en Python, utilisez le module _snowflake exposé dans des UDFs Python qui s’exécutent dans Snowflake. Le tableau suivant énumère les fonctions _snowflake permettant d’accéder aux données d’un secret.

Fonction

Description

get_generic_secret_string(generic_string_secret_name)

Récupère la chaîne de jetons génériques détenue par le secret spécifié par generic_string_secret_name. Renvoie une chaîne de jeton valide.

get_oauth_access_token(oauth_secret_name)

Récupère le jeton d’accès OAuth2 détenu par le secret spécifié par oauth_secret_name. Renvoie une chaîne de jetons OAuth2.

get_secret_type(secret_name)

Récupère le type du secret spécifié par secret_name. Renvoie la valeur du paramètre TYPE définie pour ce secret lorsqu’il a été créé avec l’instruction CREATE SECRET.

get_username_password(username_password_secret_name)

Récupère le nom d’utilisateur et le mot de passe du secret spécifié par username_password_secret_name. Renvoie un objet avec les attributs username et password.

Pour utiliser le module _snowflake dans le code de votre gestionnaire, importez-le comme vous le feriez pour un autre module.

Le code de l’exemple suivant récupère la valeur définie pour la clause TYPE lorsque le secret a été créé avec CREATE SECRET. Ici, le secret oauth_token est de type 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

Le code de l’exemple suivant permet de récupérer le nom d’utilisateur et le mot de passe détenus par le secret.

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