CREATE SECURITY INTEGRATION(External API 인증)¶
계정에 External API 인증을 위한 새 보안 통합을 만들거나 기존 통합을 바꿉니다.
다른 유형의 보안 통합(예: External OAuth) 생성에 대한 자세한 내용은 CREATE SECURITY INTEGRATION 섹션을 참조하십시오.
- 참고 항목:
ALTER SECURITY INTEGRATION(External API 인증) , DESCRIBE INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS
구문¶
OAuth: 클라이언트 자격 증명¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'CLIENT_CREDENTIALS']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_ALLOWED_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
[ COMMENT = '<string_literal>' ]
OAuth: JWT 전달자 흐름¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'JWT_BEARER']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ COMMENT = '<string_literal>' ]
필수 매개 변수¶
name
통합의 식별자(즉, 이름)를 지정합니다. 이 값은 계정에서 고유해야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: “My object”)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
TYPE = API_AUTHENTICATION
External API Authentication과 함께 OAuth 2.0을 사용하는 외부 서비스와 Snowflake 사이에 보안 인터페이스를 생성하도록 지정합니다.
AUTH_TYPE = OAUTH2
통합에서 OAuth 2.0을 사용하여 외부 서비스에 대해 인증하도록 지정합니다.
ENABLED = { TRUE | FALSE }
이 보안 통합을 사용할지, 사용하지 않을지 지정합니다.
TRUE
통합 정의에 지정된 매개 변수를 기반으로 통합을 실행할 수 있습니다.
FALSE
유지 관리를 위해 통합이 일시 중단됩니다. Snowflake와 서드 파티 서비스 간의 통합이 작동하지 않습니다.
선택적 매개 변수¶
다음은 구성할 수 있는 모든 매개 변수의 목록입니다. 선택하는 OAuth 흐름을 기반으로 시크릿을 만들 때 구성하는 매개 변수와 일치하도록 통합에서 매개 변수를 구성합니다.
OAUTH_AUTHORIZATION_ENDPOINT = 'string_literal'
외부 서비스에 인증하기 위한 URL을 지정합니다. 예를 들어 ServiceNow 인스턴스에 연결하려면 URL이 다음 형식이어야 합니다.
https://<instance_name>.service-now.com/oauth_token
여기서
instance_name
은 ServiceNow 인스턴스의 이름입니다.OAUTH_TOKEN_ENDPOINT = 'string_literal'
권한 부여 또는 새로 고침 토큰을 제시하여 액세스 토큰을 얻기 위해 클라이언트가 사용하는 토큰 엔드포인트를 지정합니다. (액세스 토큰이 직접 발행되므로) 토큰 엔드포인트는 암시적 권한 부여 유형을 제외한 모든 권한 부여와 함께 사용됩니다.
OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
POST가 외부 서비스에 대한 인증 방법으로 사용되도록 지정합니다.
OAUTH_CLIENT_ID = 'string_literal'
외부 서비스의 OAuth 애플리케이션에 대한 클라이언트 ID를 지정합니다.
OAUTH_CLIENT_SECRET = 'string_literal'
이전 단계에서 ServiceNow 인스턴스의 OAuth 애플리케이션에 대한 클라이언트 시크릿을 지정합니다. 커넥터는 이를 사용하여 ServiceNow 인스턴스에서 액세스 토큰을 요청합니다.
OAUTH_GRANT = 'string_literal'
OAuth 흐름의 유형을 지정합니다. 다음 중 하나:
통합에서 클라이언트 자격 증명을 사용할 때
'CLIENT_CREDENTIALS'
.통합에서 인증 코드를 사용할 때
'AUTHORIZATION_CODE'
.통합에서 유형 JWT의 전달자 토큰(JSON 웹 토큰)을 사용할 때
'JWT_BEARER'
.
OAUTH_ACCESS_TOKEN_VALIDITY = integer
OAuth 서버에서 발급한 OAuth 액세스 토큰의 기본 수명(초)을 지정합니다.
액세스 토큰 수명이 OAuth 토큰 응답의 일부로 반환되지 않는 경우에 이 속성에 설정된 값이 사용됩니다. 두 값을 모두 사용할 수 있는 경우 두 값 중 더 작은 값이 액세스 토큰을 새로 고치는 데 사용됩니다.
OAUTH_REFRESH_TOKEN_VALIDITY = integer
OAuth 서버에서 얻은 새로 고침 토큰의 유효성을 판별하기 위한 값을 지정합니다.
OAUTH_ALLOWED_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )
OAuth 클라이언트 자격 증명 흐름 중에 통합에서 USAGE가 있는 역할로 OAuth에서 요청할 때 사용할 범위의 쉼표로 구분된 목록을 지정하며, 각 범위는 작은따옴표로 묶습니다.
이 목록은 보안 통합의
OAUTH_ALLOWED_SCOPES
속성에 정의된 범위의 하위 세트여야 합니다.OAUTH_SCOPES
속성 값이 지정되지 않은 경우 비밀번호는 보안 통합에 지정된 모든 범위를 상속합니다.ServiceNow 커넥터의 경우 유일하게 가능한 범위 값은
'useraccount'
입니다.기본값: 빈 목록(즉,
[]
).COMMENT = 'string_literal'
통합에 대한 설명을 지정합니다.
기본값: 값 없음
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE INTEGRATION |
계정 |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
예¶
코드 권한 부여 흐름과 함께 OAuth를 사용하여 Snowflake를 myinstance
라는 ServiceNow 인스턴스에 연결하기 위해 servicenow_oauth
라는 보안 통합을 만듭니다.
CREATE SECURITY INTEGRATION servicenow_oauth TYPE = api_authentication AUTH_TYPE = oauth2 OAUTH_CLIENT_AUTH_METHOD = client_secret_post OAUTH_CLIENT_ID = 'sn-oauth-134o9erqfedlc' OAUTH_CLIENT_SECRET = 'eb9vaXsrcEvrFdfcvCaoijhilj4fc' OAUTH_TOKEN_ENDPOINT = 'https://myinstance.service-now.com/oauth_token.do' ENABLED = true;