访问密钥的 API 参考

可以使用 Java 或 Python 检索使用 CREATE SECRET 语句创建的密钥中包含的凭据。本主题列出了从密钥中获取信息的方法。这些都可以从 Snowflake 中包含的 APIs 中获得。

用于密钥访问的 Java API

对于 Java 代码,请使用 com.snowflake.snowpark_java.types.SnowflakeSecrets 类。

下表列出了访问密钥中数据的方法。

方法

描述

public String getGenericSecretString(String genericStringSecretName)

获取 genericStringSecretName 指定的密钥持有的通用令牌字符串。返回有效的令牌字符串。

public String getOAuthAccessToken(String oauthSecretName)

获取 oauthSecretName 指定的密钥持有的 OAuth2 访问令牌。返回 OAuth2 令牌字符串。

public String getSecretType(String secretName)

获取 secretName 指定的密钥类型。返回使用 CREATE SECRET 语句创建此密钥时为此密钥设置的 TYPE 参数值。

public UsernamePassword getUsernamePassword(String usernamePasswordSecretName)

usernamePasswordSecretName 指定的密钥中获取用户名和密码。返回带有用户名和密码的 com.snowflake.snowpark_java.types.UsernamePassword

要使用 SnowflakeSecrets 类,请执行以下操作:

  1. CREATE FUNCTION 中所述,使用 PACKAGES 子句使 Snowpark 库对处理程序代码可用。

  2. 在处理程序代码中,导入 com.snowflake.snowpark_java.types.SnowflakeSecrets

  3. 构造 SnowflakeSecrets 对象,并调用上面列出的方法之一来访问密钥。

以下示例中的代码在使用 CREATE SECRET 创建密钥时检索 TYPE 子句的值集。其中,oauth_token 密钥的类型是 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

用于密钥访问的 Python API

对于 Python 代码,请使用向在 Snowflake 中执行的 Python UDFs 公开的 _snowflake 模块。下表列出了用于访问密钥数据的 _snowflake 函数。

函数

描述

get_generic_secret_string(generic_string_secret_name)

获取 generic_string_secret_name 指定的密钥持有的通用令牌字符串。返回有效的令牌字符串。

get_oauth_access_token(oauth_secret_name)

获取 oauth_secret_name 指定的密钥持有的 OAuth2 访问令牌。返回 OAuth2 令牌字符串。

get_secret_type(secret_name)

获取 secret_name 指定的密钥类型。返回使用 CREATE SECRET 语句创建此密钥时为此密钥设置的 TYPE 参数值。

get_username_password(username_password_secret_name)

username_password_secret_name 指定的密钥中获取用户名和密码。返回带有 usernamepassword 属性的对象。

要在处理程序代码中使用 _snowflake 模块,请像导入其他模块一样导入该模块。

以下示例中的代码在使用 CREATE SECRET 创建密钥时检索 TYPE 子句的值集。其中,oauth_token 密钥的类型是 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

以下示例中的代码将检索密钥持有的用户名和密码。

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
语言: 中文