Snowflake와 Azure SCIM 통합

Snowflake는 Microsoft Azure Active Directory를 SCIM ID 공급자로 지원합니다.

이 가이드는 Snowflake의 Azure AD 사용자 및 그룹에 대한 프로비저닝(Azure AD)을 구성하기 위해 필요한 단계를 제공하며 포함되는 섹션은 다음과 같습니다.

기능

  • 자동 Azure AD 사용자 프로비저닝을 Snowflake로 프로비저닝.

  • 자동 Azure AD 그룹을 Snowflake로 프로비저닝.

  • Azure AD 사용자 및 그룹과 Snowflake 동기화.

  • Snowflake에 대한 SAML SSO 용으로 Azure AD가 구성된 경우 Snowflake에 프로비저닝된 Azure AD 사용자는 SAML SSO를 사용하여 Snowflake에 액세스할 수 있습니다.

    참고

    기본적으로 SCIM을 사용하여 Snowflake에 프로비저닝된 Azure AD 사용자에는 Snowflake가 비밀번호를 할당하지 않습니다. 즉, Azure AD에 SAML SSO가 구성된 경우 사용자는 SSO를 사용하여 Snowflake에 인증해야 합니다.

    SCIM을 사용하여 Azure AD에서 Snowflake로 사용자 및 그룹을 프로비저닝하는 경우에는 SAML SSO가 필요하지 않습니다. 자세한 옵션은 Azure AD SSO(single sign-on) 구성 을 참조하십시오.

제한 사항

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

지원되지 않음

  • AWS PrivateLink 및 Google Cloud Private Service Connect. 공용 인터넷을 탐색하지 않고 Microsoft Azure AD에서 Snowflake로 사용자 및 그룹을 프로비저닝하려는 고객은 Microsoft Azure에 Snowflake 계정이 있어야 합니다.

  • Azure Private Link를 사용하여 Snowflake에 액세스하는 경우 통합 설정에서 Azure Private Link URL을 사용 중이지 않은지 확인하십시오. 공용 엔드포인트(즉, .privatelink 미사용)을 입력하고 이 항목의 전제 조건 섹션에서의 설명과 같이 네트워크 정책이 Azure IP 주소에서 액세스를 허용하는지 확인합니다. 허용되지 않으면, 이 통합을 사용할 수 없습니다.

  • 기존 사용자 및 역할의 소유권 이전하기. Azure AD는 해당 사용자 및 그룹에 대한 신뢰할 수 있는 소스입니다. 그룹 구성원 자격은 Azure AD에서 업데이트할 수 있습니다. 그러나 Snowflake의 기존 사용자 및 그룹은 Microsoft Azure AD로 이전할 수 없습니다.

  • Microsoft Azure AD는 현재 중첩 그룹 읽기 또는 프로비저닝을 지원하지 않습니다. 그러므로 Snowflake Azure SCIM 통합을 사용하여 Snowflake에서 중첩 그룹을 프로비저닝하거나 관리할 수 없습니다. 중첩 그룹의 지원을 요청하려면 Microsoft로 문의하십시오.

  • Microsoft Azure AD에서 Snowflake로의 비밀번호 동기화 활성화 또는 비활성화하기.

    Snowflake 보안 통합에서 SYNC_PASSWORD 속성을 설정하면 Microsoft Azure AD에서 Snowflake로 사용자 비밀번호가 동기화되지 않습니다. 이는 Microsoft Azure AD 제한 사항입니다. 지원을 요청하려면 Microsoft Azure에 문의하십시오.

전제 조건

SCIM을 사용하여 Azure AD 사용자 및 그룹을 Snowflake로 프로비저닝하기 전 확인해야 하는 사항은 다음과 같습니다.

  1. 기존 Azure AD tenant.

  2. 기존 Snowflake tenant.

    • Microsoft에서 구성 프로세스를 진행하는 중에 Snowflake SCIM 엔드포인트의 URL(즉, Microsoft Azure Active Directory SCIM 구성 가이드의 Tenant URL)을 입력해야 합니다. Snowflake SCIM 엔드포인트는 /scim/v2/ 가 추가된 Snowflake 계정 URL로 구성됩니다. 예를 들어, 계정 이름 URL 형식을 사용하는 경우 SCIM 엔드포인트는 https://myorg-myaccount.snowflakecomputing.com/scim/v2/ 입니다. Snowflake 계정 URL에 대해 지원되는 형식의 목록은 URL을 사용하여 연결하기 섹션을 참조하십시오.

  3. Snowflake에서 ACCOUNTADMIN 역할이 부여된 사용자 1명 이상

  4. 계정과 관련된 사용자 또는 그룹을 프로비저닝하기 전, Snowflake의 네트워크 정책 에서 공용 클라우드 또는 US 공공 클라우드 에 대한 모든 Azure AD IP 주소에서 액세스가 허용되는지 확인합니다. 현재 Azure SCIM 네트워크 정책을 생성하려면 모든 Azure AD IP 주소가 필요합니다. 자세한 내용은 SCIM 네트워크 정책 관리하기 를 참조하십시오.

구성

Snowflake 구성 프로세스는 SCIM 보안 통합을 생성하여 Snowflake의 AAD_PROVISIONER SCIM 역할이 Azure AD에 생성된 사용자 및 역할을 소유하고 SCIM API 요청에서 사용할 액세스 토큰을 생성하는 것을 허용합니다. 액세스 토큰(즉, Microsoft Azure Active Directory SCIM 구성 가이드의 Secret Token)의 유효 기간은 6개월입니다. 만료되면, 아래와 같이 SYSTEM$GENERATE_SCIM_ACCESS_TOKEN 을 사용하여 수동으로 새 액세스 토큰을 생성합니다.

참고

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

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

Azure Active Directory 구성

Microsoft Azure Active Directory를 SCIM ID 공급자로 사용하려면 Microsoft 설명서 의 지침을 따릅니다. 이러한 단계를 완료하는 동안에는 Azure AD에서 기존 엔터프라이즈 애플리케이션을 재사용하지 마십시오. 프로비저닝을 위해 새 엔터프라이즈 애플리케이션을 만들지 못하면 예기치 않은 동작이 발생할 수 있습니다.

참고

사용자 지정 특성을 생성하면서 Snowflake 사용자의 name 필드와 login_name 필드가 서로 다른 값을 갖도록 하려는 경우 Snowflake 지원팀 에 문의하여 사용자 지정 특성을 생성하기 전에 자신의 계정에 대해 별도의 매핑을 활성화하십시오.

Snowflake 구성

편리한 Snowflake 구성을 위해, 아래 SQL을 복사하여 이 첫 번째 단계 에서 사용할 수 있습니다. 다음 각 문에 대한 설명은 아래에서 제공됩니다.

use role accountadmin;
create role if not exists aad_provisioner;
grant create user on account to role aad_provisioner;
grant create role on account to role aad_provisioner;
grant role aad_provisioner to role accountadmin;
create or replace security integration aad_provisioning
    type = scim
    scim_client = 'azure'
    run_as_role = 'AAD_PROVISIONER';
select system$generate_scim_access_token('AAD_PROVISIONING');
Copy

중요

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

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

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

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

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

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

  1. Snowflake에 관리자로 로그인한 후 Snowflake 워크시트 인터페이스 또는 SnowSQL에서 다음을 실행합니다.

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

    use role accountadmin;
    
    Copy
  3. AAD_PROVISIONER 사용자 지정 역할을 만듭니다. Azure AD에서 생성된 Snowflake의 모든 사용자 및 역할은 범위가 축소된 AAD_PROVISIONER 역할이 소유합니다.

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

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

    select system$generate_scim_access_token('AAD_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 aad_provisioning set network_policy = <scim_network_policy>;
Copy

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

alter security integration aad_provisioning unset network_policy;
Copy

여기서:

aad_provisioning

Azure ADSCIM 보안 통합의 이름을 지정합니다.

scim_network_policy

Snowflake에서 Azure AD SCIM 네트워크 정책을 지정합니다.

자세한 내용은 네트워크 정책ALTER SECURITY INTEGRATION 을 참조하십시오.

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

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

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

Azure SCIM 보안 통합 복제하기

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

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

문제 해결

  • Azure AD가 Snowflake로 업데이트를 전송 중인지를 확인하려면 Snowflake 애플리케이션에 대한 Azure AD의 로그 이벤트 및 Snowflake의 SCIM 감사 로그를 확인하여 Snowflake에서 Azure AD의 업데이트를 수신 중인지 확인하십시오. 다음 SQL을 사용하여 Snowflake SCIM 감사 로그를 쿼리하며, 여기서 demo_db 는 데이터베이스의 이름입니다.

    use role accountadmin;
    use database demo_db;
    use schema information_schema;
    select * from table(rest_event_history('scim'));
    select *
        from table(rest_event_history(
            'scim',
            dateadd('minutes',-5,current_timestamp()),
            current_timestamp(),
            200))
        order by event_timestamp;
    
    Copy
  • 사용자 업데이트가 실패하면 Snowflake에서 사용자의 소유권을 확인하십시오. aad_provisioner 역할(또는 Snowflake에서 보안 통합을 생성할 때 run_as_role 매개 변수에 설정된 역할)이 소유하지 않은 경우 업데이트가 실패하게 됩니다. Snowflake에서 다음 SQL 문을 실행하여 소유권을 이전한 후 다시 시도하십시오.

    grant ownership on user <username> to role AAD_PROVISIONER;
    
    Copy
  • 초기 SCIM 프로비저닝 이후에 Azure AD에서 UPN 속성 값 이 변경된 경우, 이후 사용자 업데이트가 작동하지 않습니다. UPN 속성 값을 변경하면 Azure AD 사용자 오브젝트와 Snowflake User Object 사이의 연결이 끊어집니다. UPN 속성 값이 변경되면 올바른 UPN 속성 값으로 사용자를 다시 프로비저닝하십시오.

다음 항목: