인증을 위해 프로그래밍 방식의 액세스 토큰 사용¶
프로그래밍 방식 액세스 토큰을 사용하여 다음 Snowflake 엔드포인트를 인증할 수 있습니다.
참고
프로그래밍 방식의 액세스 토큰을 사용하여 Snowpark Container Services 엔드포인트에 인증하는 것은 아직 지원되지 않습니다.
다음에서 프로그래밍 방식 액세스 토큰을 비밀번호 대신 사용할 수도 있습니다.
Snowflake에 연결되는 서드 파티 애플리케이션(예: Tableau 및 PowerBI).
Snowflake APIs 및 라이브러리(예: Snowpark API 및 Snowflake Python API.
Snowflake 명령줄 클라이언트(예: Snowflake CLI 및 SnowSQL.
사람 사용자(TYPE=PERSON 인 사용자) 및 서비스 사용자(TYPE=SERVICE 인 사용자)를 위해 프로그래밍 방식 액세스 토큰을 생성할 수 있습니다.
전제 조건¶
프로그래밍 방식 액세스 토큰을 생성하고 사용하려면 다음 전제 조건을 충족해야 합니다.
네트워크 정책 요구 사항¶
기본적으로 사용자는 1개 이상의 네트워크 규칙 이 있는 네트워크 정책 이 적용되어야 프로그래밍 방식 액세스 토큰을 생성하거나 사용할 수 있습니다.
서비스 사용자(TYPE=SERVICE)의 경우 사용자에게 네트워크 정책이 적용되는 경우에만 토큰을 생성하거나 사용할 수 있습니다.
이 전제 조건은 토큰 사용을 특정 주소 또는 네트워크 식별자 세트의 요청으로 제한합니다.
사람 사용자(TYPE = PERSON)의 경우 사용자에게 네트워크 정책이 적용되지 않더라도 토큰을 생성할 수 있지만 이 토큰으로 인증하려면 사용자에게 네트워크 정책이 적용되어야 합니다.
네트워크 정책이 적용되지 않는 사용자가 인증을 위해 프로그래밍 방식의 액세스 토큰을 사용해야 하는 경우 일시적으로 네트워크 정책의 요구 사항을 우회할 수 있지만, 권장하지 않습니다. 프로그래밍 방식 액세스 토큰 생성하기 섹션을 참조하십시오.
참고
사용자는 네트워크 정책 자체를 우회할 수 없습니다.
네트워크 정책은 계정 내 모든 사용자 에게 적용되거나 특정 사용자 에게 적용될 수 있습니다.
이 요구 사항을 변경하려면 프로그래밍 방식 액세스 토큰 정책을 지정하는 인증 정책 을 생성하거나 수정했습니다.
CREATE AUTHENTICATION POLICY 또는 ALTER AUTHENTICATION POLICY 명령을 실행합니다. PAT_POLICY 절에서 NETWORK_POLICY_EVALUATION 을 다음 값 중 하나로 설정합니다.
ENFORCED_REQUIRED
(기본 동작)사용자는 네트워크 정책에 따라 프로그래밍 방식 액세스 토큰을 생성하고 사용해야 합니다.
사용자가 네트워크 정책을 따라야 하는 경우 인증 중에 네트워크 정책이 적용됩니다.
ENFORCED_NOT_REQUIRED
사용자가 네트워크 정책에 따라 프로그래밍 방식 액세스 토큰을 생성하고 사용할 필요가 없습니다.
사용자가 네트워크 정책을 따라야 하는 경우 인증 중에 네트워크 정책이 적용됩니다.
NOT_ENFORCED
사용자가 네트워크 정책에 따라 프로그래밍 방식 액세스 토큰을 생성하고 사용할 필요가 없습니다.
사용자가 네트워크 정책에 따라야 하는 경우 인증 중에는 네트워크 정책이 적용되지 않습니다.
예를 들어, 네트워크 정책 요구 사항을 제거하지만 사용자에게 적용되는 모든 네트워크 정책을 적용하는 인증 정책을 생성할 수 있습니다.
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
);
그런 다음 계정 또는 사용자에게 인증 정책을 적용 합니다.
또 다른 예로, 기존 인증 정책을 변경하여 네트워크 정책 요구 사항을 제거하고 사용자에게 적용되는 네트워크 정책을 적용하지 않도록 할 수 있습니다.
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
NETWORK_POLICY_EVALUATION = NOT_ENFORCED
);
인증 정책 요구 사항¶
사용자의 인증 방법을 제한하는 인증 정책 이 있는 경우 해당 정책의 AUTHENTICATION_METHODS 목록에 'PROGRAMMATIC_ACCESS_TOKEN'
이 포함되어 있지 않으면 사용자는 프로그래밍 방식 액세스 토큰을 생성하고 사용할 수 없습니다.
예를 들어, 인증 정책에서 사용자가 인증할 때 OAuth 및 비밀번호 방법을 사용하도록 제한한다고 가정해 보겠습니다.
CREATE AUTHENTICATION POLICY my_auth_policy
...
AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD')
...
AUTHENTICATION_METHODS 목록에 'PROGRAMMATIC_ACCESS_TOKEN'
을 추가하지 않으면 사용자는 프로그래밍 방식 액세스 토큰을 생성하고 사용할 수 없습니다. ALTER AUTHENTICATION POLICY 명령을 사용하여 이 목록을 업데이트할 수 있습니다.
예:
ALTER AUTHENTICATION POLICY my_auth_policy
SET AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD', 'PROGRAMMATIC_ACCESS_TOKEN');
기본 및 최대 만료 시간 구성하기¶
관리자(ACCOUNTADMIN 역할이 있는 사용자)는 프로그래밍 방식 액세스 토큰의 만료 시간에 영향을 주는 다음 설정을 구성할 수 있습니다.
최대 만료 시간 설정하기¶
기본적으로 토큰의 만료 시간은 최대 365일까지 지정할 수 있습니다. 이 시간을 더 짧게 줄이고 싶다면, 최대 유효 기간을 지정하는 프로그래밍 방식의 액세스 토큰 정책을 포함하는 인증 정책 을 생성하거나 수정하십시오.
CREATE AUTHENTICATION POLICY 또는 ALTER AUTHENTICATION POLICY 명령을 실행합니다. PAT_POLICY 절에서 MAX_EXPIRY_IN_DAYS 를 1
~ 365
범위의 값으로 설정합니다.
예를 들어, 최대 기간을 100일로 설정하는 인증 정책을 생성할 수 있습니다.
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
MAX_EXPIRY_IN_DAYS=100
);
그런 다음 계정 또는 사용자에게 인증 정책을 적용 합니다.
다른 예로, 기존 인증 정책을 변경하여 최대 기간을 90일로 설정할 수 있습니다.
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
MAX_EXPIRY_IN_DAYS=90
);
참고
만료 시간이 새로운 최대 만료 시간을 초과하는 기존 프로그래밍 방식 액세스 토큰이 있는 경우 해당 토큰으로 인증하려는 시도는 실패합니다.
예를 들어, 만료 시간이 7일인 my_token
이라는 프로그래밍 방식 액세스 토큰을 생성한다고 가정해 보겠습니다. 나중에 모든 토큰의 최대 만료 시간을 2일로 변경하는 경우 토큰의 만료 시간이 새 최대 만료 시간을 초과하므로 my_token
으로 인증하는 데 실패합니다.
기본 만료 시간 설정하기¶
기본적으로 프로그래밍 방식 액세스 토큰은 15일 후에 만료됩니다. 이 설정을 변경하려면, 기본 만료 기간이 지정된 프로그래밍 방식 액세스 토큰 정책을 포함하는 인증 정책 을 생성하거나 수정하십시오.
CREATE AUTHENTICATION POLICY 또는 ALTER AUTHENTICATION POLICY 명령을 실행합니다. PAT_POLICY 절에서 DEFAULT_EXPIRY_IN_DAYS 를 1
~ 최대 만료 시간 범위의 값으로 설정합니다.
예를 들어, 기본값을 5일로 설정하는 인증 정책을 생성하려면 다음과 같이 하십시오.
CREATE AUTHENTICATION POLICY my_authentication_policy
PAT_POLICY=(
DEFAULT_EXPIRY_IN_DAYS=5
);
그런 다음 계정 또는 사용자에게 인증 정책을 적용 합니다.
다른 예로 기존 인증 정책을 변경하여 기본값을 30일로 설정할 수 있습니다.
ALTER AUTHENTICATION POLICY my_authentication_policy
SET PAT_POLICY = (
DEFAULT_EXPIRY_IN_DAYS=30
);
프로그래밍 방식 액세스 토큰에 필요한 권한¶
프로그래밍 방식 액세스 토큰을 생성하고 관리하려면 다음 권한이 부여된 역할을 사용해야 합니다.
인간 사용자(TYPE=PERSON 인 사용자)의 경우, 자신에 대한 프로그래밍 방식 액세스 토큰을 생성, 수정, 삭제 또는 표시하기 위해 특별한 권한이 필요하지 않습니다.
다른 사용자 또는 서비스 사용자(TYPE=SERVICE)를 위한 프로그래밍 방식 액세스 토큰을 생성, 수정, 삭제 또는 표시하는 경우 해당 사용자에 대해 OWNERSHIP 또는 MODIFY PROGRAMMATIC AUTHENTICATION METHODS 권한이 있는 역할을 사용해야 합니다.
예를 들어,
my_service_owner_role
사용자 지정 역할이 있는 사용자에게 서비스 사용자my_service_user
에 대한 프로그래밍 방식 액세스 토큰을 생성하고 관리하는 기능을 부여한다고 가정해 보겠습니다.my_service_user
사용자의my_service_owner_role
역할에 MODIFY PROGRAMMATIC AUTHENTICATION METHODS 권한을 부여할 수 있습니다.GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER my_service_user TO ROLE my_service_owner_role;
프로그래밍 방식 액세스 토큰 생성하기¶
Snowsight 또는 SQL 명령을 실행하여 프로그래밍 방식 액세스 토큰을 생성할 수 있습니다.
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
프로그래밍 방식 액세스 토큰을 생성할 사용자를 선택합니다.
Programmatic access tokens 에서 Generate new token 를 선택합니다.
New programmatic access token 대화 상자에서 다음 정보를 입력합니다.
Name 필드에 토큰의 이름을 입력합니다.
이름에는 문자, 숫자, 밑줄만 사용할 수 있습니다. 이름은 문자 또는 밑줄로 시작해야 합니다. 이름의 문자는 대문자로 저장되고 확인됩니다.
Comment 필드에 토큰에 대한 설명 설명을 입력합니다.
토큰을 생성하면 Programmatic access tokens 섹션의 토큰 아래에 이 설명이 표시됩니다.
Expires in 에서 토큰이 만료될 일수를 선택합니다.
서비스 사용자를 대신하여 토큰을 생성하는 경우(USER 오브젝트에 TYPE=SERVICE)나 수행할 수 있는 작업의 범위를 제한하려는 경우 One specific role (recommended) 를 선택하고 권한 평가 및 오브젝트 생성에 사용할 역할을 선택합니다.
이 토큰을 인증에 사용하면 생성하는 모든 오브젝트가 이 역할에 의해 소유되며, 이 역할은 권한 평가에 사용됩니다.
참고
사용자에 대해 DEFAULT_SECONDARY_ROLES 가 (‘ALL’)로 설정되어 있어도 보조 역할은 사용되지 않습니다.
대신 Any of my roles 을 선택하면 생성하는 모든 오브젝트는 기본 역할에 의해 소유되며 권한은 활성 역할 에 대해 평가됩니다.
Generate 을 선택합니다.
생성된 프로그래밍 방식 액세스 토큰을 복사하거나 다운로드하여 인증에 토큰을 사용할 수 있도록 합니다.
참고
이 메시지 상자를 닫으면 이 토큰을 복사본으로 생성할거나 다운로드할 수 없습니다.
새 토큰은 Programmatic access tokens 섹션에 목록으로 표시됩니다.
앞서 언급했듯이 프로그래밍 방식 액세스 토큰을 사용하려면 이 요구 사항을 변경하는 인증 정책을 설정하지 않는 한 토큰과 연결된 사용자에게는 네트워크 정책이 적용 되어야 합니다.
네트워크 정책의 적용을 받지 않는 사용자가 인증을 위해 프로그래밍 방식의 액세스 토큰을 사용해야 하는 경우 » Bypass requirement for network policy 를 선택하여 네트워크 정책의 요구 사항을 일시적으로 우회할 수 있습니다.
참고
Bypass requirement for network policy 는 사용자가 네트워크 정책 자체를 우회하는 것을 허용하지 않습니다.
ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN (PAT) 을 실행하여 토큰의 이름을 지정합니다.
직접 토큰을 생성하는 경우
username
매개 변수를 생략하십시오. 예를 들어,example_token
이라는 토큰을 생성합니다.ALTER USER ADD PROGRAMMATIC ACCESS TOKEN example_token;
사람 사용자(USER 오브젝트에 TYPE=PERSON 이 있는 사용자)를 대신하여 토큰을 생성하는 경우에는 사용자 이름을 지정합니다. 예를 들어, 사용자
example_user
에 대해example_token
이라는 토큰을 생성합니다.ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token;
팁
PROGRAMMATIC ACCESS TOKEN 키워드를 더 짧게 지정하는 방법으로 PAT 키워드를 사용할 수 있습니다.
다음 사항을 참고하십시오.
서비스 사용자를 대신하여 토큰을 생성하는 경우(USER 오브젝트에 TYPE=SERVICE)나 수행할 수 있는 작업의 범위를 제한하려는 경우 권한 평가 및 오브젝트 생성에 사용해야 하는 역할에 ROLE_RESTRICTION 을 설정하십시오.
사용자에게 부여된 역할이어야 합니다. 이 역할은 토큰을 생성할 때만 지정할 수 있습니다.
이 토큰을 인증에 사용하면 생성하는 모든 오브젝트가 이 역할에 의해 소유되며, 이 역할은 권한 평가에 사용됩니다.
참고
사용자에 대해 DEFAULT_SECONDARY_ROLES 가 (‘ALL’)로 설정되어 있어도 보조 역할은 사용되지 않습니다.
예를 들어, 서비스 사용자
example_service_user
에 대해example_service_user_token
이라는 토큰을 생성한다고 가정해 보겠습니다. 서비스 사용자가 이 토큰으로 인증하면example_service_user_role
역할(해당 서비스 사용자에게 부여된)을 사용하여 권한을 평가하고 사용자가 생성한 모든 오브젝트를 소유해야 합니다.이 케이스에 대한 토큰을 생성하려면 다음 문을 실행합니다.
ALTER USER IF EXISTS example_service_user ADD PROGRAMMATIC ACCESS TOKEN example_service_user_token ROLE_RESTRICTION = 'example_service_user_role';
ROLE_RESTRICTION 을 생략하는 경우 생성하는 모든 오브젝트는 기본 역할에 의해 소유되며 권한은 활성 역할 에 대해 평가됩니다.
토큰 만료 시기를 지정하려면(기본 만료 시간 재정의) DAYS_TO_EXPIRY 매개 변수를 토큰이 만료될 일 수로 설정합니다.
1
(1일)에서 최대 만료 시간 의 값까지 지정할 수 있습니다.예를 들어, 10일 후에 만료되는 프로그래밍 방식 액세스 토큰을 생성할 수 있습니다.
ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token DAYS_TO_EXPIRY = 10 COMMENT = 'An example of a token that expires in 10 days';
앞서 언급했듯이 프로그래밍 방식 액세스 토큰을 사용하려면 이 요구 사항을 변경하는 인증 정책을 설정하지 않는 한 토큰과 연결된 사용자에게는 네트워크 정책이 적용 되어야 합니다.
네트워크 정책이 적용되지 않는 인간 사용자(사용자의 TYPE 속성이 PERSON 인 경우)에 대해서는 MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT 를 이 요구 사항을 우회할 분 수로 설정하여 네트워크 정책 요구 사항을 일시적으로 우회할 수 있습니다.
예를 들어, 네트워크 정책의 적용을 받지 않는 사용자이고 인증을 위해 프로그래밍 방식의 액세스 토큰을 사용하고자 한다고 가정해 보겠습니다. MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT 를 240으로 설정하여 4시간 동안 네트워크 정책을 보유해야 한다는 요구 사항을 우회할 수 있습니다.
참고
MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT 를 설정하면 사용자가 네트워크 정책 자체를 우회할 수 없게 됩니다.
ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN 은 출력의 token_secret
열에 토큰을 인쇄합니다.
+---------------+-----------------+
| token_name | token_secret |
|---------------+-----------------|
| EXAMPLE_TOKEN | ... (token) ... |
+---------------+-----------------+
참고
이 명령의 출력은 토큰이 표시되는 유일한 곳입니다. 엔드포인트 인증 시 사용할 수 있도록 출력에서 토큰을 복사본으로 생성합니다.
프로그래밍 방식 액세스 토큰을 생성한 후에는 만료일을 변경할 수 없습니다. 토큰을 취소하고 새로운 만료 시간으로 새 토큰을 생성해야 합니다.
프로그래밍 방식 액세스 토큰에 역할을 지정했는데 해당 역할이 사용자로부터 취소된 경우 프로그래밍 방식 액세스 토큰은 시스템 PUBLIC 역할을 사용합니다.
프로그래밍 방식 액세스 토큰 사용¶
다음 섹션에서는 프로그래밍 방식 액세스 토큰을 비밀번호로 사용하고 Snowflake 엔드포인트에 인증하는 방법을 설명합니다.
프로그래밍 방식 액세스 토큰을 비밀번호로 사용¶
프로그래밍 방식 액세스 토큰을 비밀번호로 사용하여 인증하려면 드라이버 설정 또는 호출에서 비밀번호 값에 대한 토큰을 지정하여 Snowflake에 연결할 수 있습니다.
예를 들어, Python용 Snowflake Connector를 사용하는 경우 snowflake.connector.connect
메서드를 호출할 때 프로그래밍 방식의 액세스 토큰을 password
인자로 지정할 수 있습니다.
conn = snowflake.connector.connect(
user=USER,
password=<programmatic_access_token>,
account=ACCOUNT,
warehouse=WAREHOUSE,
database=DATABASE,
schema=SCHEMA
)
같은 방식으로 서드 파티 애플리케이션(예: Tableau 또는 PowerBI)에서 비밀번호 대신 프로그래밍 방식 액세스 토큰을 사용할 수 있습니다. 비밀번호 필드에 프로그래밍 방식 액세스 토큰을 붙여넣습니다.
참고
기본적으로 프로그래밍 방식 액세스 토큰을 사용하려면 사용자 또는 계정의 모든 사용자에 대해 네트워크 정책을 활성화해야 합니다. 서드 파티 애플리케이션에서 프로그래밍 방식 액세스 토큰을 사용하려면 서드 파티 애플리케이션의 IP 주소 범위에서 요청을 허용하는 네트워크 정책을 생성해야 합니다.
프로그래밍 방식의 액세스 토큰을 사용하여 엔드포인트 인증하기¶
프로그래밍 방식 액세스 토큰으로 인증하려면 요청에서 다음 HTTP 헤더를 설정합니다.
Authorization: Bearer token_secret
X-Snowflake-Authorization-Token-Type: PROGRAMMATIC_ACCESS_TOKEN
(선택 사항)
예를 들어, cURL 을 사용하여 Snowflake REST API 엔드포인트에 요청을 보내는 경우:
curl --location 'https://myorganization-myaccount.snowflakecomputing.com/api/v2/databases' \
--header "Authorization: Bearer <token_secret>"
다른 예로 cURL 을 사용하여 Snowflake SQL API 엔드포인트에 요청을 보내는 경우를 들 수 있습니다.
curl -si -X POST https://myorganization-myaccount.snowflakecomputing.com/api/v2/statements \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Bearer <token_secret>" \
--data '{"statement": "select 1"}'
PAT_INVALID
오류로 요청이 실패하는 경우 다음 이유 중 하나로 인해 오류가 발생했을 수 있습니다.
프로그래밍 방식 액세스 토큰과 연결된 사용자를 찾을 수 없습니다.
유효성 검사에 실패했습니다.
프로그래밍 방식 액세스 토큰과 연결된 역할을 찾을 수 없습니다.
사용자가 지정된 프로그래밍 방식 액세스 토큰과 연결되어 있지 않습니다.
프로그래밍 방식 액세스 토큰 관리하기¶
다음 섹션에서는 프로그래밍 방식 액세스 토큰을 사용, 수정, 목록, 회전 및 취소하는 방법에 대해 설명합니다.
참고
인증을 위해 프로그래밍 방식 액세스 토큰을 사용한 세션에서는 프로그래밍 방식 액세스 토큰을 수정, 이름 변경, 회전 또는 취소할 수 없습니다.
프로그래밍 방식 액세스 토큰 목록 보기¶
Snowsight 또는 SQL 명령을 실행하여 사용자의 프로그래밍 방식 액세스 토큰을 목록으로 생성할 수 있습니다.
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
프로그래밍 방식 액세스 토큰을 소유한 사용자를 선택합니다.
사용자의 프로그래밍 방식 액세스 토큰은 Programmatic access tokens 아래에 목록이 있습니다.
SHOW USER PROGRAMMATIC ACCESS TOKENS 명령을 실행합니다. 예를 들어, example_user
사용자와 관련된 프로그래밍 방식 액세스 토큰에 대한 정보를 보려면:
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
참고
7일이 지나면 만료된 프로그래밍 방식 액세스 토큰은 삭제되며 Snowsight 또는 SHOW USER PROGRAMMATIC ACCESS TOKENS 명령의 출력에 더 이상 표시되지 않습니다.
프로그래밍 방식 액세스 토큰 이름 바꾸기¶
Snowsight 또는 SQL 명령을 실행하여 프로그래밍 방식 액세스 토큰의 이름을 변경할 수 있습니다.
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
프로그래밍 방식 액세스 토큰과 연결된 사용자를 선택합니다.
Programmatic access tokens 에서 프로그래밍 방식 액세스 토큰을 찾아
» Edit 를 선택합니다.
Name 필드에서 토큰 이름을 변경하고 Save 를 선택합니다.
ALTER USER … MODIFY PROGRAMMATIC ACCESS TOKEN … RENAME TO 를 실행합니다. 예:
ALTER USER IF EXISTS example_user MODIFY PROGRAMMATIC ACCESS TOKEN old_token_name RENAME TO new_token_name;
프로그래밍 방식 액세스 토큰 순환시키기¶
Snowsight 또는 SQL 명령을 실행하여 프로그래밍 방식 액세스 토큰을 순환시킬 수 있습니다.
토큰을 회전하면 같은 이름과 연장된 만료 시간을 가진 새로운 토큰 시크릿이 반환됩니다. 토큰을 회전하면 기존 토큰 시크릿도 만료됩니다. 새 토큰을 사용하여 Snowflake에 인증합니다.
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
프로그래밍 방식 액세스 토큰과 연결된 사용자를 선택합니다.
Programmatic access tokens 에서 프로그래밍 방식 액세스 토큰을 찾아
» Rotate 를 선택합니다.
이전 토큰 시크릿이 즉시 만료되도록 하려면 Expire current secret immediately 를 선택합니다.
Rotate token 을 선택합니다.
생성된 프로그래밍 방식 액세스 토큰을 복사하거나 다운로드하여 인증에 토큰을 사용할 수 있도록 합니다.
참고
이 메시지 상자를 닫으면 이 토큰을 복사본으로 생성할거나 다운로드할 수 없습니다.
ALTER USER … ROTATE PROGRAMMATIC ACCESS TOKEN (PAT) 명령을 실행합니다.
예를 들어, example_user
사용자와 연결된 프로그래밍 방식 액세스 토큰 example_token
을 순환시키려면:
ALTER USER IF EXISTS example_user ROTATE PROGRAMMATIC ACCESS TOKEN example_token;
이전 토큰이 만료되는 시기를 지정하려면 EXPIRE_ROTATED_TOKEN_AFTER_HOURS 를 이전 토큰이 만료되기 전 시간으로 설정합니다. 예를 들어, 기존 토큰을 즉시 만료하려면 다음과 같이 하십시오.
ALTER USER IF EXISTS example_user
ROTATE PROGRAMMATIC ACCESS TOKEN example_token
EXPIRE_ROTATED_TOKEN_AFTER_HOURS = 0;
이 명령은 출력의 token_secret
열에 토큰을 인쇄합니다.
+---------------+-----------------+-------------------------------------+
| token_name | token_secret | rotated_token_name |
|---------------+-----------------+-------------------------------------|
| EXAMPLE_TOKEN | ... (token) ... | EXAMPLE_TOKEN_ROTATED_1744239049066 |
+---------------+-----------------+-------------------------------------+
참고
이 명령의 출력은 새 토큰이 표시되는 유일한 위치입니다. 엔드포인트 인증 시 사용할 수 있도록 출력에서 토큰을 복사본으로 생성합니다.
출력에는 순환된 이전 토큰의 이름도 포함됩니다.
이 토큰이 언제 만료되는지 알고 싶다면 SHOW USER PROGRAMMATIC ACCESS TOKENS 명령을 사용하여 토큰 이름을 찾을 수 있습니다. 예:
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
+--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------+ | name | user_name | role_restriction | expires_at | status | comment | created_on | created_by | mins_to_bypass_network_policy_requirement | rotated_to | |--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------| | EXAMPLE_TOKEN | EXAMPLE_USER | MY_CUSTOM_ROLE | 2025-05-09 07:18:47.360 -0700 | ACTIVE | | 2025-04-09 07:18:47.360 -0700 | EXAMPLE_USER | NULL | NULL | | EXAMPLE_TOKEN_ROTATED_1744239049066 | EXAMPLE_USER | MY_CUSTOM_ROLE | 2025-04-10 15:21:49.652 -0700 | ACTIVE | | 2025-04-09 15:21:49.652 -0700 | EXAMPLE_USER | NULL | EXAMPLE_TOKEN | +--------------------------------------+--------------+------------------+-------------------------------+---------+---------+-------------------------------+--------------+-------------------------------------------+----------------+
이 토큰을 취소하려면 ALTER USER … REMOVE PROGRAMMATIC ACCESS TOKEN (PAT) 명령을 사용하여 이전 토큰의 이름을 지정하면 됩니다. 예:
ALTER USER IF EXISTS example_user REMOVE PROGRAMMATIC ACCESS TOKEN EXAMPLE_TOKEN_ROTATED_1744239049066;
+-------------------------------------------------------------------------------------+ | status | |-------------------------------------------------------------------------------------| | Programmatic access token EXAMPLE_TOKEN_ROTATED_1744239049066 successfully removed. | +-------------------------------------------------------------------------------------+
프로그래밍 방식 액세스 토큰 취소하기¶
Snowsight 또는 SQL 명령을 실행하여 프로그래밍 방식 액세스 토큰을 취소할 수 있습니다.
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
프로그래밍 방식 액세스 토큰과 연결된 사용자를 선택합니다.
Programmatic access tokens 에서 프로그래밍 방식 액세스 토큰을 찾아
» Delete 를 선택합니다.
ALTER USER … REMOVE PROGRAMMATIC ACCESS TOKEN (PAT) 명령을 실행합니다.
예를 들어, example_user
사용자와 연결된 프로그래밍 방식 액세스 토큰 example_token
을 취소하려면:
ALTER USER IF EXISTS example_user REMOVE PROGRAMMATIC ACCESS TOKEN example_token;
비활성화된 프로그래밍 방식 액세스 토큰 다시 활성화하기¶
사용자 로그인 액세스를 비활성화 하거나 Snowflake에서 사용자의 로그인을 잠그면 해당 사용자의 프로그래밍 방식 액세스 토큰이 자동으로 비활성화됩니다.
참고
프로그래밍 방식 액세스 토큰은 사용자가 일시적으로 잠겨 있는 경우(예: 인증에 5회 이상 실패한 경우)에도 비활성화되지 않습니다.
SHOW USER PROGRAMMATIC ACCESS TOKENS 명령을 실행하면 status
열의 값은 해당 사용자와 연결된 토큰의 경우 DISABLED
입니다.
SHOW USER PROGRAMMATIC ACCESS TOKENS FOR USER example_user;
+---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------+
| name | user_name | role_restriction | expires_at | status | comment | created_on | created_by | mins_to_bypass_network_policy_requirement | rotated_to |
|---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------|
| EXAMPLE_TOKEN | EXAMPLE_USER | MY_ROLE | 2025-04-28 12:13:46.431 -0700 | DISABLED | NULL | 2025-04-13 12:13:46.431 -0700 | EXAMPLE_USER | NULL | NULL |
+---------------+--------------+------------------+-------------------------------+----------+---------+-------------------------------+--------------+-------------------------------------------+------------+
나중에 해당 사용자에 대한 로그인 액세스를 활성화하거나 Snowflake가 해당 사용자의 로그인 액세스를 잠금 해제하면 해당 사용자의 프로그래밍 방식 액세스 토큰은 비활성화된 상태로 유지됩니다. 토큰을 다시 활성화하려면 ALTER USER … MODIFY PROGRAMMATIC ACCESS TOKEN (PAT) 명령을 실행하고 DISABLED 를 FALSE 로 설정합니다. 예:
ALTER USER example_user MODIFY PROGRAMMATIC ACCESS TOKEN example_token SET DISABLED = FALSE;
시크릿에서 프로그래밍 방식 액세스 토큰에 대한 정보 얻기¶
프로그래밍 방식의 액세스 토큰에 대한 정보가 필요한 경우 해당 토큰의 시크릿이 주어지면 SYSTEM$DECODE_PAT 함수를 호출하십시오. 시크릿이 유출되어 토큰과 연결된 사용자, 토큰 이름, 토큰 상태를 알고 싶은 경우 이 함수를 사용할 수 있습니다.
예:
SELECT SYSTEM$DECODE_PAT('abC...Y5Z');
+------------------------------------------------------------------------+
| SYSTEM$DECODE_PAT('☺☺☺...☺☺☺') |
|------------------------------------------------------------------------|
| {"STATE":"ACTIVE","PAT_NAME":"MY_EXAMPLE_TOKEN","USER_NAME":"MY_USER"} |
+------------------------------------------------------------------------+
모범 사례¶
프로그래밍 방식의 액세스 토큰을 저장해야 하는 경우 비밀번호 또는 시크릿 관리자를 사용하여 안전하게 저장하십시오(예: 비밀번호 또는 시크릿 관리자 사용).
코드에 프로그래밍 방식 액세스 토큰을 노출하지 마십시오.
토큰을 생성할 때 토큰의 사용을 특정 역할로 제한합니다.
프로그래밍 방식 액세스 토큰을 정기적으로 검토하고 교체합니다. 사용자는 토큰을 생성 할 때 만료 시간을 설정할 수 있으며, 관리자는 모든 토큰의 최대 만료 시간을 줄여 토큰 회전을 촉진할 수 있습니다.
제한 사항¶
프로그래밍 방식 액세스 토큰은 토큰을 생성할 때만 역할로 제한할 수 있습니다. 토큰을 생성한 후에는 토큰이 제한되는 역할을 변경하거나 제거할 수 없습니다.
프로그래밍 방식 액세스 토큰의 만료 시간은 토큰을 생성할 때만 설정할 수 있습니다. 토큰을 생성한 후에는 만료 시간을 변경할 수 없습니다. 프로그래밍 방식 액세스 토큰을 취소 하고 만료 시간이 다른 새 토큰을 생성할 수 있습니다.
프로그래밍 방식 액세스 토큰의 시크릿은 생성할 때만 볼 수 있습니다. 프로그래밍 방식의 액세스 토큰을 생성한 후에는 토큰에 대한 정보만 볼 수 있고 토큰의 시크릿은 볼 수 없습니다.
계정 관리자는 특정 사용자의 모든 프로그래밍 방식 액세스 토큰을 나열할 수는 있지만 계정의 모든 프로그래밍 방식 액세스 토큰을 나열할 수는 없습니다.
프로그래밍 방식 액세스 토큰을 취소한 후에는 복구할 수 없습니다.