Snowflake와의 사용자 지정 SCIM 통합

Custom SCIM 통합을 사용하면 사용자는 자체 애플리케이션을 구축하여 ID 공급자와 인터페이스를 구축함으로써 Snowflake에 대한 사용자 및 역할을 프로비저닝, 매핑 및 관리할 수 있습니다.

현재, Custom SCIM 통합은 Okta 및 Microsoft Azure AD가 아닌 ID 공급자용으로만 지원됩니다.

SCIM 애플리케이션을 생성한 후 아래 절차에 따라 Snowflake 보안 통합을 생성하고 SCIM API 인증 토큰을 생성합니다. 인증 토큰을 저장하고 SCIM API 요청하기 에서의 설명과 같이 SCIM API 요청 헤더에 해당 인증 토큰을 포함합니다.

제한 사항

  • Snowflake는 SCIM 엔드포인트(예: /Users 엔드포인트, /Groups 엔드포인트)마다 동시 요청을 계정당 최대 500개까지 지원합니다. 계정이 이 임계값을 초과한 후에 Snowflake는 429 HTTP 상태 코드(즉, 요청이 너무 많음)를 반환합니다. 이러한 요청 제한은 일반적으로 사용자 또는 그룹을 프로비저닝하기 위해 상대적으로 많은 수의 요청(즉, 10,000개 이상)이 발생할 때 초기 프로비저닝 중에만 발생한다는 점에 유의하십시오.

  • Snowflake 계정 URL 에 밑줄이 포함된 경우 밑줄 또는 하이픈이 있는 계정 URL을 사용하여 Snowflake 계정에 액세스할 수 있습니다.

    SCIM 공급자가 SAML SSO 및 SCIM 모두에서 동일한 계정 URL을 재사용하는 경우에는 밑줄이 포함된 URLs은 지원되지 않습니다. 그러므로 하이픈으로 연결된 계정 URL을 사용하여 SCIM을 구성하십시오.

    밑줄이 포함되지 않은 Snowflake 계정 URLs의 경우 이러한 제한 사항이 적용되지 않습니다.

  • 사용자 지정 SCIM 통합은 중첩 그룹의 프로비저닝 및 관리를 허용하거나 허용하지 않을 수 있습니다. 사용자 지정 SCIM 통합을 사용하여 Snowflake에서 중첩 그룹을 프로비저닝하기 전, ID 공급자에 문의하여 중첩 그룹을 SCIM 통합과 함께 사용할 수 있는지 확인하십시오.

  • Snowflake 서비스에 비공개 연결을 사용하여 Snowflake에 액세스하는 경우 통합 설정에서 이러한 URL을 입력하지 않았는지 확인하십시오. 공용 엔드포인트(즉, .privatelink 제외)를 입력하고 네트워크 정책이 IdP IP 주소에서 액세스를 허용하는지 확인하십시오. 그렇지 않은 경우에는 이 통합을 사용할 수 없습니다.

  • 사용자 지정 ID 공급자에서 Snowflake로의 비밀번호 동기화 활성화 또는 비활성화하기.

    Snowflake 보안 통합에서의 SYNC_PASSWORD 속성 설정은 Okta SCIM 통합에만 지원됩니다.

전제 조건

사용자 또는 그룹을 프로비저닝하기 전, Snowflake의 네트워크 정책 에서 해당하는 IP 범위에서 조직의 액세스를 허용하는지 확인하십시오. 자세한 내용은 SCIM 네트워크 정책 관리하기 를 참조하십시오.

사용자 지정 SCIM 보안 통합 및 API 토큰 만들기

Snowflake 구성 프로세스는 SCIM 보안 통합을 생성하여 Snowflake의 GENERIC_SCIM_PROVISIONER SCIM 역할이 ID 공급자에 생성된 사용자 및 역할을 소유하고 SCIM API 요청에서 사용할 액세스 토큰을 생성하는 것을 허용합니다. 액세스 토큰의 유효 기간은 6개월입니다. 만료되면, 아래와 같이 SYSTEM$GENERATE_SCIM_ACCESS_TOKEN 을 사용하여 수동으로 새 액세스 토큰을 생성합니다.

참고

SCIM 통합에 대한 기존 액세스 토큰을 무효화하려면 DROP INTEGRATION 문을 실행합니다.

Snowflake와 함께 SCIM을 계속 사용하려면, CREATE SECURITY INTEGRATION 문을 사용하여 SCIM 통합을 다시 생성하고 SYSTEM$GENERATE_SCIM_ACCESS_TOKEN 을 사용하여 새 액세스 토큰을 생성합니다.

원하는 Snowflake 클라이언트에서 다음 SQL 문을 실행합니다. 다음 각 문에 대한 설명은 아래에서 제공됩니다.

use role accountadmin;
create role if not exists generic_scim_provisioner;
grant create user on account to role generic_scim_provisioner;
grant create role on account to role generic_scim_provisioner;
grant role generic_scim_provisioner to role accountadmin;
create or replace security integration generic_scim_provisioning
    type=scim
    scim_client='generic'
    run_as_role='GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
Copy

중요

예시 SQL 문에서는 ACCOUNTADMIN 시스템 역할을 사용하고 ACCOUNTADMIN 역할에 GENERIC_SCIM_PROVISIONER 사용자 지정 역할이 부여됩니다.

권한이 낮은 역할이 아닌, ACCOUNTADMIN 역할을 사용하지 않는 것도 가능합니다. 권한이 낮은 역할을 사용하면 권한이 가장 낮은 액세스와 관련된 규정 준수 문제를 해결하는 데 도움이 되지만, 권한이 낮은 역할을 사용하면 SCIM 구성 및 관리 프로세스 중에 예기치 않은 오류가 발생할 수 있습니다.

이러한 오류가 발생하는 이유는 역할이 생성되는 방식과 결과적인 역할 계층으로 인해 권한이 낮은 역할이 SCIM을 통해 모든 역할을 관리할 수 있는 충분한 권한이 없기 때문입니다. 그러므로 구성 및 관리 프로세스 중에 오류를 방지하기 위해 다음 옵션 중 1개를 선택합니다.

  1. 예시 SQL 문에서와 같이 ACCOUNTADMIN 역할을 사용합니다.

  2. 전역 MANAGE GRANTS 권한이 있는 역할을 사용합니다.

  3. 이러한 첫 번째 두 옵션이 적합하지 않은 경우, SCIM을 사용하여 관리할 모든 역할에 대한 OWNERSHIP 권한이 있는 사용자 지정 역할을 사용합니다.

  1. ACCOUNTADMIN 역할을 사용합니다.

    use role accountadmin;
    
    Copy
  2. GENERIC_SCIM_PROVISIONER 사용자 지정 역할을 만듭니다. IdP가 생성한 Snowflake의 모든 사용자 및 역할은 범위가 축소된 GENERIC_SCIM_PROVISIONER 역할이 소유합니다.

    create role if not exists generic_scim_provisioner;
    grant create user on account to role generic_scim_provisioner;
    grant create role on account to role generic_scim_provisioner;
    
    Copy
  3. ACCOUNTADMIN 역할이 GENERIC_SCIM_PROVISIONER 사용자 지정 역할을 사용하여 보안 통합을 생성하도록 합니다. 자세한 내용은 CREATE SECURITY INTEGRATION 을 참조하십시오.

    grant role generic_scim_provisioner to role accountadmin;
    create or replace security integration generic_scim_provisioning
        type = scim
        scim_client = 'generic'
        run_as_role = 'GENERIC_SCIM_PROVISIONER';
    
    Copy
  4. 인증 토큰을 생성한 후 저장하고 나중에 사용할 수 있도록 안전하게 저장합니다. 각 SCIM REST API 요청에서 이 토큰을 사용하고 요청 헤더에 추가합니다. 액세스 토큰은 6개월 후에 만료되며 이 문을 사용하여 새 액세스 토큰을 생성할 수 있습니다.

    select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
    
    Copy

Snowflake에서 시작된 SSO를 사용하도록 설정하기

SCIM 프로비저닝 프로세스에서는 Single Sign-On(SSO)이 자동으로 활성화되지 않습니다.

SCIM 프로비저닝 프로세스가 완료된 후 SSO를 사용하려면, Snowflake에서 시작된 SSO 를 활성화합니다.

SCIM 네트워크 정책 관리하기

SCIM 보안 통합에 네트워크 정책을 적용하면 SCIM 네트워크 정책이 전체 Snowflake 계정에 적용되는 네트워크 정책과 구별될 수 있습니다. 이를 통해 SCIM 공급자는 일반 사용자의 액세스를 제어하는 네트워크 정책에 IP 주소를 추가하지 않고도 사용자와 그룹을 프로비저닝할 수 있습니다.

SCIM 통합에 적용된 네트워크 정책은 전체 Snowflake 계정에 적용된 네트워크 정책보다 우선하지만, 사용자에게 할당된 네트워크 정책보다는 우선 순위에서 밀립니다.

SCIM 보안 통합을 생성한 후 다음 명령을 사용하여 SCIM 네트워크 정책을 생성합니다.

alter security integration generic_scim_provisioning set network_policy = <scim_network_policy>;
Copy

SCIM 네트워크 정책의 설정을 해제하려면 다음 명령을 사용합니다.

alter security integration generic_scim_provisioning unset network_policy;
Copy

여기서:

generic_scim_provisioning

Custom SCIM 보안 통합의 이름을 지정합니다.

scim_network_policy

Snowflake에 Custom SCIM 네트워크 정책을 지정합니다.

자세한 내용은 네트워크 정책으로 네트워크 트래픽 제어하기ALTER SECURITY INTEGRATION 을 참조하십시오.

SCIM이 포함된 보조 역할 사용하기

Snowflake는 SCIM으로 사용자 속성 DEFAULT_SECONDARY_ROLES'ALL' 로 설정하여 사용자가 Snowflake 세션에서 보조 역할 을 사용할 수 있도록 지원합니다.

대표적인 예는 PUT scim/v2/Users/{id} 섹션을 참조하십시오.

사용자 지정 SCIM 보안 통합 복제하기

Snowflake는 원본 계정에서 대상 계정으로의 SCIM 보안 통합의 복제 및 장애 조치/장애 복구를 지원합니다.

자세한 내용은 여러 계정에 보안 통합 및 네트워크 정책 복제 섹션을 참조하십시오.

다음 항목: