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>' ]
Copy

OAuth: 인증 코드 권한 부여 흐름

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 = 'AUTHORIZATION_CODE']
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ COMMENT = '<string_literal>' ]
Copy

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>' ]
Copy

필수 매개 변수

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
Copy

여기서 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;
Copy