열 수준 및 행 수준 보안

Snowflake 관리, 거버넌스 및 협업

Emily Melhuish

Technical Curriculum Developer, Snowflake

테이블 수준 접근의 문제점

테이블 수준 접근이 있는 users 테이블

  • Claro의 users 테이블에는 이름, 이메일, 신용 점수, 신용 등급이 포함됨
  • 분석가 역할에 SELECT 권한을 부여하면 모든 열이 노출됨
  • 캠페인 분석가는 원시 신용 점수가 불필요
  • 테이블 수준 접근 제어로는 이를 구분할 수 없음
Snowflake 관리, 거버넌스 및 협업

열 수준 보안이란?

  • 열은 결과에 유지되고 값만 변경됨
  • 권한 있는 역할은 실제 값, 없는 역할은 마스킹된 값을 확인
  • 마스킹은 쿼리 시점에 역할 기반으로 적용 = 동적 데이터 마스킹

column_security_v2.png

Snowflake 관리, 거버넌스 및 협업

동적 데이터 마스킹

동적 데이터 마스킹 적용 테이블과 미적용 테이블을 보여주는 다이어그램

Snowflake 관리, 거버넌스 및 협업

마스킹 정책 생성 및 적용

CREATE MASKING POLICY mask_credit_score
  AS (val NUMBER) RETURNS NUMBER ->
  CASE
    WHEN IS_ROLE_IN_SESSION('CREDIT_ADMIN') THEN val
    ELSE -9999
  END;

ALTER TABLE core.users
  MODIFY COLUMN credit_score
  SET MASKING POLICY mask_credit_score;
  • CURRENT_ROLE은 현재 활성 기본 역할을 반환
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Snowflake 관리, 거버넌스 및 협업

외부 토큰화

  • 동적 데이터 마스킹의 대안
  • 서드파티 토큰화 공급자 및 외부 함수 필요
  • 민감한 값을 시스템 간 일관된 토큰으로 대체
  • 동일 토큰을 Snowflake 외부에서도 인식해야 할 때 유용

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Snowflake 관리, 거버넌스 및 협업

행 수준 보안이란?

분석가가 특정 행만 볼 수 있음을 보여주는 두 테이블

Snowflake 관리, 거버넌스 및 협업

행 액세스 정책의 동작 방식

US_ANALYST의 쿼리가 users 테이블의 행 액세스 정책을 통과하여 US 행만 반환되고, EU_ANALYST는 동일한 쿼리에서 EU 행만 반환되는 다이어그램

  • 정책이 쿼리 역할을 평가하여 필터를 적용
Snowflake 관리, 거버넌스 및 협업

행 액세스 정책 생성 및 적용

CREATE ROW ACCESS POLICY region_filter
  AS (region_col VARCHAR) RETURNS BOOLEAN ->
  CASE
    WHEN IS_ROLE_IN_SESSION('US_ANALYST') THEN region_col = 'US'
    WHEN IS_ROLE_IN_SESSION('EU_ANALYST') THEN region_col = 'EU'
    ELSE FALSE
  END;

ALTER TABLE core.users
  ADD ROW ACCESS POLICY region_filter ON (region);
Snowflake 관리, 거버넌스 및 협업

데이터 마스킹과 행 액세스 정책 함께 사용하기

동적 데이터 마스킹과 행 액세스 정책

Snowflake 관리, 거버넌스 및 협업

연습해 봅시다!

Snowflake 관리, 거버넌스 및 협업

Preparing Video For Download...