シークレットへのアクセスのための 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 オブジェクトを作成し、上記のメソッドのいずれかを呼び出してシークレットにアクセスします。

次の例のコードは、 TYPE 句に設定された値を CREATE SECRET でシークレットを作成したときに取得します。ここで、 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 モジュールを使うには、他のモジュールと同じようにインポートします。

次の例のコードは、 TYPE 句に設定された値を CREATE SECRET でシークレットを作成したときに取得します。ここで、 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