ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN
ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN (PAT)
사용자에 대해 프로그래매틱 액세스 토큰(programmatic access token)을 만드는 명령이에요.
출처: 문서
본문
관련 명령: ALTER USER … MODIFY PROGRAMMATIC ACCESS TOKEN (PAT), ALTER USER … ROTATE PROGRAMMATIC ACCESS TOKEN (PAT), ALTER USER … REMOVE PROGRAMMATIC ACCESS TOKEN (PAT), SHOW USER PROGRAMMATIC ACCESS TOKENS
구문 (Syntax)
ALTER USER [ IF EXISTS ] [ <username> ] ADD { PROGRAMMATIC ACCESS TOKEN | PAT } [ IF NOT EXISTS ] <token_name>
[ ROLE_RESTRICTION = '<string_literal>' ]
[ DAYS_TO_EXPIRY = <integer> ]
[ MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT = <integer> ]
[ COMMENT = '<string_literal>' ]
필수 매개변수 (Required parameters)
ADD { PROGRAMMATIC ACCESS TOKEN | PAT } token_name — 지정된 이름으로 프로그래매틱 액세스 토큰을 만들어요. PAT 키워드는 PROGRAMMATIC ACCESS TOKEN 키워드를 짧게 지정하는 방법으로 사용할 수 있어요.
선택 매개변수 (Optional parameters)
IF NOT EXISTS — 지정된 이름의 토큰이 사용자에게 아직 없을 때만 프로그래매틱 액세스 토큰을 만들어요. 같은 이름의 토큰이 이미 있으면 명령은 새 토큰을 만들거나 토큰 비밀을 반환하지 않고 아무 작업도 하지 않은 채 성공적으로 완료돼요. 이 절을 사용해 프로비저닝 스크립트를 다시 실행하는 경우처럼 명령을 멱등(idempotent)하게 실행해요.
username — 토큰과 연결되는 사용자의 이름이에요. 사용자는 다른 사용자의 프로그래매틱 액세스 토큰으로 인증할 수 없어요.
사용자를 대신해 프로그래매틱 액세스 토큰을 만들려면 관리자가 ALTER USER 명령에 그 사용자의 이름을 지정해야 해요. username을 생략하면 명령은 현재 로그인한 사용자(이 세션의 활성 사용자)에 대해 토큰을 생성해요.
ROLE_RESTRICTION = 'string_literal' — 권한 평가와 객체 생성에 사용되는 역할의 이름이에요. 사용자에게 이미 부여된 역할 중 하나여야 해요.
참고: 기본적으로 이 매개변수는 서비스 사용자(TYPE=SERVICE 또는 TYPE=LEGACY_SERVICE)에게는 필수이고, 사람 사용자(TYPE=PERSON 또는 TYPE=NULL)에게는 선택이에요. 인증 정책으로 이 동작을 변경할 수 있어요. 프로그래매틱 액세스 토큰용 역할 제한 구성을 참고하세요.
사용자가 BLOCKED_ROLES_LIST가 있는 인증 정책의 적용을 받는다면 지정된 역할은 차단된 역할 중 하나가 될 수 없어요. 특정 역할 차단을 참고하세요.
이 토큰으로 인증하면 생성하는 객체는 이 역할이 소유하고, 권한 평가에 이 역할이 사용돼요.
참고: 사용자에 대해 DEFAULT_SECONDARY_ROLES가 ('ALL')로 설정되어 있어도 보조 역할은 사용되지 않아요.
이 역할이 프로그래매틱 액세스 토큰과 연결된 사용자에게서 취소되면 토큰으로 인증하려는 모든 시도가 실패해요.
참고: ROLE_RESTRICTION 값으로 역할을 지정한다고 해서 지정된 역할이 프로그래매틱 액세스 토큰에 부여되지는 않아요. 사용자에게 이미 이 역할이 부여되어 있어야 해요.
ROLE_RESTRICTION을 생략하면 생성하는 객체는 기본 역할이 소유하고, 권한은 기본 및 보조 역할을 기준으로 평가돼요(기본 역할 및 보조 역할을 통한 인가 참고).
DAYS_TO_EXPIRY = integer — 프로그래매틱 액세스 토큰을 인증에 사용할 수 있는 일수예요. 1부터 최대 만료 시간까지의 값을 지정할 수 있어요.
기본값: 15
MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT = integer — 사용자가 활성 네트워크 정책의 적용을 받지 않고 이 토큰으로 Snowflake에 접근할 수 있는 시간(분)이에요. 네트워크 정책의 적용을 받지 않지만 인증에 프로그래매틱 액세스 토큰을 사용해야 하는 사람(USER 객체가 TYPE=PERSON인 경우)의 토큰에 대해 이 값을 설정할 수 있어요. 네트워크 정책 요구사항을 참고하세요.
참고: MINS_TO_BYPASS_NETWORK_POLICY_REQUIREMENT를 설정해도 사용자가 네트워크 정책 자체를 우회할 수는 없어요.
1부터 1440(1일)까지의 값으로 설정할 수 있어요.
기본값: 0
COMMENT = 'string_literal' — 프로그래매틱 액세스 토큰에 대한 설명 주석이에요. 이 주석은 Snowsight의 프로그래매틱 액세스 토큰 목록에 표시돼요.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요:
| 권한 | 객체 | 설명 |
|---|---|---|
| MODIFY PROGRAMMATIC AUTHENTICATION METHODS | User | 자신이 아닌 다른 사용자에 대해 프로그래매틱 액세스 토큰을 생성할 때만 필요해요. |
지정한 권한 집합을 가진 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기를 참고하세요.
보호 객체에서 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요를 참고하세요.
출력 (Output)
명령 출력은 다음 열로 새로 생성된 프로그래매틱 액세스 토큰에 대한 정보를 제공해요:
| 열 | 설명 |
|---|---|
| token_name | 생성된 토큰의 이름. |
| token_secret | 토큰 자체. 엔드포인트 인증에 사용해요. 참고: 토큰은 ALTER USER … ADD PROGRAMMATIC ACCESS TOKEN 명령의 출력에만 나타나요. 다른 SQL 명령이나 함수는 토큰을 출력하거나 반환하지 않아요. 이 토큰에 프로그래매틱하게 접근해야 한다면 이 명령을 실행하고 반환된 결과에서 토큰을 검색하면 돼요. |
사용 메모 (Usage notes)
- 각 사용자는 최대 15개의 프로그래매틱 액세스 토큰을 가질 수 있어요.
- 이 숫자에는 비활성화된 토큰도 포함돼요.
- 만료된 토큰은 포함되지 않아요.
예시 (Examples)
사용자 example_user와 연결되고 연결된 사용자의 모든 권한을 상속하는 example_token이라는 프로그래매틱 액세스 토큰을 만들어요.
ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token
COMMENT = 'a reference example';
사용자 example_user와 연결되고 역할 example_role의 모든 권한을 상속하며 15일 후 만료되는 example_token이라는 프로그래매틱 액세스 토큰을 만들어요.
ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN example_token
ROLE_RESTRICTION = 'example_role'
DAYS_TO_EXPIRY = 15;
사용자 example_user에 대해 그 이름의 토큰이 아직 없을 때만 example_token이라는 프로그래매틱 액세스 토큰을 만들어요. 토큰이 이미 있으면 명령은 새 토큰을 만들지 않고 성공적으로 완료돼요.
ALTER USER IF EXISTS example_user ADD PROGRAMMATIC ACCESS TOKEN IF NOT EXISTS example_token;