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 |
---|---|
|
Récupère la chaîne de jetons génériques détenue par le secret spécifié par |
|
Récupère le jeton d’accès OAuth2 détenu par le secret spécifié par |
|
Récupère le type du secret spécifié par |
|
Récupère le nom d’utilisateur et le mot de passe du secret spécifié par |
|
Obtient un jeton de fournisseur de cloud contenant des valeurs que vous pouvez utiliser pour créer une session avec le fournisseur de cloud, telles que AWS. Renvoie un
|
Pour utiliser la classe SnowflakeSecrets
:
Mettez la bibliothèque Snowpark à la disposition de votre gestionnaire de code en utilisant la clause PACKAGES comme décrit dans CREATE FUNCTION.
Dans le code de votre gestionnaire, importez
com.snowflake.snowpark_java.types.SnowflakeSecrets
.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;
}
}
$$;
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 |
---|---|
|
Récupère la chaîne de jetons génériques détenue par le secret spécifié par |
|
Récupère le jeton d’accès OAuth2 détenu par le secret spécifié par |
|
Récupère le type du secret spécifié par |
|
Récupère le nom d’utilisateur et le mot de passe du secret spécifié par |
|
Obtient un objet de fournisseur de cloud contenant des valeurs que vous pouvez utiliser pour créer une session avec le fournisseur de cloud, telles que AWS. Renvoie un type avec les attributs suivants :
|
L’authentification pour accès externe avec AWS IAM est une fonctionnalité disponible en avant-première pour tous les comptes.
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.9
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
$$;
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.9
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
$$;