시크릿에 대한 액세스를 위한 API 참조

Java 또는 Python을 사용하여 CREATE SECRET 문으로 생성한 시크릿에 포함된 자격 증명을 불러올 수 있습니다. 이 항목에서는 시크릿에서 정보를 가져오기 위한 메서드가 나열되어 있습니다. 이런 메서드는 Snowflake에 포함된 API와 함께 사용할 수 있습니다.

시크릿 액세스를 위한 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 UDF에 노출된 _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_map
$$;
Copy