ALTER SECRET
ALTER SECRET
기존 비밀(secret)의 속성을 수정하는 명령이에요. 비밀 객체는 인증에 필요한 자격 증명을 저장하며, 여러 인증 방식(클라이언트 자격 증명 OAuth, 인가 코드 부여 OAuth, 클라우드 프로바이더, 기본 인증, 일반 문자열)에 따라 다른 구문을 사용해요.
출처: 문서
본문
관련 명령: CREATE SECRET, DESCRIBE SECRET, DROP SECRET, SHOW SECRETS
구문 (Syntax)
OAuth with client credentials flow (클라이언트 자격 증명 흐름):
ALTER SECRET [ IF EXISTS ] <name> SET [ OAUTH_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
[ COMMENT = '<string_literal>' ]
ALTER SECRET [ IF EXISTS ] <name> UNSET COMMENT
OAuth with authorization code grant flow (인가 코드 부여 흐름):
ALTER SECRET [ IF EXISTS ] <name> SET [ OAUTH_REFRESH_TOKEN = '<token>' ]
[ OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '<string_literal>' ]
[ COMMENT = '<string_literal>' ]
ALTER SECRET [ IF EXISTS ] <name> UNSET COMMENT
Cloud provider (클라우드 프로바이더): Preview Feature — 공개. 모든 계정에서 사용할 수 있어요.
ALTER SECRET [ IF EXISTS ] <name> SET [ API_AUTHENTICATION = '<cloud_provider_security_integration>' ]
[ COMMENT = '<string_literal>' ]
ALTER SECRET [ IF EXISTS ] <name> UNSET COMMENT
Basic authentication (기본 인증):
ALTER SECRET [ IF EXISTS ] <name> SET [ USERNAME = '<username>' ]
[ PASSWORD = '<password>' ]
[ COMMENT = '<string_literal>' ]
ALTER SECRET [ IF EXISTS ] <name> UNSET COMMENT
Generic string (일반 문자열):
ALTER SECRET [ IF EXISTS ] <name> SET [ SECRET_STRING = '<string_literal>' ]
[ COMMENT = '<string_literal>' ]
ALTER SECRET [ IF EXISTS ] <name> UNSET COMMENT
클라이언트 자격 증명 흐름 매개변수
name — 비밀의 식별자(이름)를 지정하는 문자열로, 스키마에서 고유해야 해요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 설정할 하나 이상의 매개변수를 지정해요.
OAUTH_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] ) — OAuth 클라이언트 자격 증명 흐름 중에 통합에 USAGE 권한이 있는 역할이 OAuth 서버에 요청할 때 사용할 스코프의 콤마 구분 목록을 지정해요.
이 목록은 보안 통합의 OAUTH_ALLOWED_SCOPES 속성에 정의된 스코프의 부분 집합이어야 해요. OAUTH_SCOPES 속성 값이 지정되지 않으면 비밀은 보안 통합에 지정된 모든 스코프를 상속해요.
AWS IAM 필수 매개변수
Preview Feature — 공개. 모든 계정에서 사용할 수 있어요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 설정할 하나 이상의 매개변수를 지정해요.
TYPE = CLOUD_PROVIDER_TOKEN — 이 비밀이 Amazon Web Services(AWS) 같은 클라우드 프로바이더와 함께 사용하기 위한 것임을 지정해요.
API_AUTHENTICATION = 'cloud_provider_security_integration' — Snowflake를 클라우드 프로바이더에 연결하는 Snowflake 보안 통합의 name 값을 지정해요.
인가 코드 부여 흐름 매개변수
name — 비밀의 식별자(이름)를 지정하는 문자열로, 스키마에서 고유해야 해요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 설정할 하나 이상의 매개변수를 지정해요.
OAUTH_REFRESH_TOKEN = 'token' — 액세스 토큰이 만료될 때 OAuth 인가 서버에서 새 액세스 토큰을 얻는 데 사용하는 토큰을 문자열로 지정해요.
OAUTH_REFRESH_TOKEN_EXPIRY_TIME = 'string_literal' — OAuth 새로고침 토큰이 만료되는 타임스탬프를 문자열로 지정해요.
기본 인증 매개변수
name — 비밀의 식별자(이름)를 지정하는 문자열로, 스키마에서 고유해야 해요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 세션에 설정할 하나 이상의 매개변수를 지정해요.
USERNAME = 'username' — 비밀에 저장할 사용자 이름 값을 지정해요. 기본 인증에 비밀을 사용할 때(즉 비밀이 TYPE = PASSWORD일 때) 이 속성 값을 지정해요.
PASSWORD = 'password' — 비밀에 저장할 암호 값을 지정해요. 기본 인증에 비밀을 사용할 때(즉 비밀이 TYPE = PASSWORD일 때) 이 속성 값을 지정해요.
일반 문자열 매개변수
name — 비밀의 식별자(이름)를 지정하는 문자열로, 스키마에서 고유해야 해요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 설정할 하나 이상의 매개변수를 지정해요.
SECRET_STRING = 'string_literal' — 비밀에 저장할 문자열을 지정해요.
문자열은 API 토큰이거나 UDF나 저장 프로시저의 핸들러 코드에서 사용할 수 있는 민감한 값의 문자열일 수 있어요. 자세한 내용은 외부 접근 통합 만들기 및 사용을 참고하세요.
이 속성으로는 어떤 종류의 OAuth 토큰도 저장해서는 안 돼요. OAuth 사용 사례에는 다른 비밀 유형을 사용해요.
공통 매개변수: 모든 구문
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 세션에 설정할 하나 이상의 매개변수를 지정해요.
COMMENT = 'string_literal' — 비밀에 대한 주석을 지정하는 문자열(리터럴)이에요.
기본값: 값 없음
UNSET ... — 비밀에서 해제할 하나 이상의 속성/매개변수를 지정해 기본값으로 되돌려요:
COMMENT
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요: GRANT OWNERSHIP
| 권한 | 객체 | 설명 |
|---|---|---|
| MODIFY | Secret | SYSTEM$START_OAUTH_FLOW와 SYSTEM$FINISH_OAUTH_FLOW로 비밀의 OAuth 토큰을 업데이트하려면 필요해요. ALTER SECRET로 다른 비밀 속성을 변경하려면 필요해요. |
| OWNERSHIP | Secret | OWNERSHIP은 객체를 만든 역할에 자동으로 부여되는 객체의 특별한 권한이에요. 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수도 있어요. |
스키마의 객체를 조작하려면 상위 데이터베이스와 상위 스키마 각각에 대해 하나 이상의 권한이 필요해요.
지정한 권한 집합을 가진 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기를 참고하세요.
보호 객체에서 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요를 참고하세요.
사용 메모 (Usage notes)
메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.
예시 (Examples)
비밀의 주석을 수정해요.
ALTER SECRET service_now_creds_pw SET COMMENT = 'production secret for servicenow';
더 알아보기 (Learn more)
- CREATE SECRET — 비밀 만들기
- DESCRIBE SECRET — 비밀 설명
- DROP SECRET — 비밀 삭제
- SHOW SECRETS — 비밀 나열