Chapter 7. RBAC

Snowflake SE·2024년 12월 31일
0

Zero to Snowflake

목록 보기
13/21

1. Snowflake의 데이터 보호 방안

Snowflake는 고객의 데이터를 안전을 보장하는 다양한 기능을 제공하고 있습니다.

  1. End-to-End 암호화
    • 모든 사용자와 Snowflake간의 인터넷 통신은 TLS 1.2+로 네트워크 통신을 암호화하여 안전하게 연결
    • 클라우드 서비스 공급자의 프라이빗 네트워크와 연동 (예, AWS PrivateLink, Azure PrivateLink)
  2. 완전히 암호화 된 저장소
    • 저장된 데이터는 Snowflake 드라이버 및 시스템에 의해 처리되는 동안 항상 암호화 (AES-256)
    • 정기적으로 계정 및 테이블 암호화 키를 자동으로 교체
  3. 강력한 인증
    • Multi-factor 인증 (예: DUO)
    • SSO 연계 (SAML2.0, OAuth2.0기반)
    • Key Pair 인증
    • IP 기반 접근 정책 제공
  4. 역할 기반 액세스 제어(RBAC)
    • 사용자 정의 역할을 통하여 객체, 작업 및 컴퓨팅 자원에 대한 제어
  5. 감사 로그
    • 로그인 이력 추적 및 감사
    • 테이블, 뷰 및 컬럼을 대상으로 실행되는 모든 작업 이력 추적 및 감사
    • 고객사의 보안 툴과 연계
  6. 데이터 복구
    • 사고 및 재해 상황에서도 데이터를 복구 할 수 있는 기능 제공
    • Time Travel 및 Fail-Safe
      보안개요

2. Role Based Access Control

  1. Object : 접근해야 할 객체
    • Account 레벨 : user, role, warehouse, resource monitor, integration, database
    • Database 레벨 : schema
    • Schema 레벨 : table, external table, view, procedure, sequence, stage, file - format, pipe, stream, task, UDF
  2. Privilege
    • 권한은 특정 역할이 수행할 수 있는 작업이나 접근할 수 있는 자원을 정의
      예) 읽기 권한, 쓰기 권한, 삭제 권한 등
  3. Role
    • 역할(Role)은 특정 작업이나 기능을 수행할 수 있는 권한의 집합 또는 단위
  4. User
    • 각 사용자는 하나 이상의 역할에 할당
    • 사용자는 자신에게 할당된 역할의 범위 내 에서만 오브젝트에 접근 가능
    • 사용자를 역할에 할당함으로써 해당 사용자가 어떤 작업을 할 수 있는지 결정
    • 역할 할당을 변경하면 해당 사용자의 접근 권한도 즉시 변경
      RBAC

3. RBAC 구성 예시

아래 그림과 같은 RBAC 구성을 작성합니다

grant select on schema1.table1 to role bi ;
grant select on schema1.table2 to role bi ;
grant select on schema2.table3 to role bi ;
grant insert on schema1.table2 to role ds ;
grant insert on schema2.table3 to role de ;
grant role de to role ds ;
grant role bi to user user1 ;
grant role bi to user user2 ;
grant role ds to user user2 ;
grant role de to user user2 ;
grant role de to user user3 ;

위와 같이 역할별, 사용자별 권한이 부여되어 있을때 각 사용자가 역할별로 수행할 수 있는 오브젝트에 대한 권한은 다음과 같습니다


4. 시스템 정의 역할(Role)

  • ORGADMIN : Account를 생성할 수 있는 권한을 가진 역할

  • ACCOUNTADMIN : SECURITYADMIN과 SYSADMIN을 포함(상속)하는 시스템의 최상위 역할

  • SECURITYADMIN : 모든 오브젝트 권한 부여를 전역적으로 관리하고 사용자 및 역할을 생성, 모니터링 및 관리할 수 있는 역할, USERADMIN의 역할을 포함(상속됨)

  • USERADMIN : 사용자 및 역할 관리만을 수행하는 역할

  • SYSADMIN : 가상 웨어하우스 및 데이터베이스(또는 기타 오브젝트)의 생성 권한이 있는 역할

  • PUBLIC : 모든 사용자와 계정의 모든 역할에 자동으로 부여되는 역할

  • 주의사항

    • ACCOUNTADMIN은 가장 강력한 역할이므로 제한적으로 사용해야 합니다
    • 일상적인 운영이 아닌 설정과 관리를 위해서만 사용해야 합니다
    • 관리 포인트
      • Account 단위의 파라매터 구성 및 변경
      • 사용량 및 과금 모니터링
      • 리소스 모니터 구성
      • 공유 (incoming & outgoing)에 대한 관리
      • 세션 또는 수행 쿼리에 대한 관리
  • ACCOUNTADMIN 가이드

    • ACCOUNTADMIN은 최소 인원에게만 부여합니다 (단, 이슈 대응을 위해 최소 2인에게는 부여합니다)
    • ACCOUNTADMIN 사용자는 MFA 구성을 권장합니다
    • ACCOUNTADMIN 뿐 아니라 모든 human 사용자는 MFA 구성을 사용해야 합니다 (2025년 부터)
    • 사용자의 DEFAULT Role로 설정하지 마세요
    • ACCOUNTADMIN으로 오브젝트를 생성하지 마세요
    • ACCOUNTADMIN의 관리 포인트외에 일상적인 작업에 ACCOUNTADMIN을 사용하지 마세요
    • ACCOUNTADMIN 권한 사용에 이슈로 해당 권한을 회복하는데 최대 2일이 소요될 수 있습니다

5. Role 설정 방법

  1. 사용자의 기본 Role 설정

    // 사용자 생성 또는 변경
    CREATE USER user1 PASSWORD='abc123' DEFAULT_ROLE = myrole ;
    ALTER USER user1 SET DEFAULT_ROLE = myrole ;
    • 로그인 시 사용자 세션에 대해 기본적으로 활성화되는 기본 역할을 지정합니다
    • 사용자 기본 역할이 지정되어 있다 하더라도 해당 역할이 부여되는 것은 아니므로 GRANT ROLE 명령으로 사용자가 해당 역할을 사용할 수 있도록 권한 부여해야 합니다
  2. Role 권한 부여

    GRANT ROLE analyst TO USER user1 ;
    • 사용자 계정은 여러 역할 할당 가능
    GRANT ROLE engineer TO ROLE scientist ;
    • 역할(Role)은 다른 역할에 권한을 부여 가능.
    • 위의 예시에서 scientist 역할은 engineer가 가진 권한을 모두 포함
  3. Role 전환 및 사용

    USE ROLE scientist ;

6. Role 사용 현황 조회

  1. Default Role 확인

    SHOW USERS ;
    • 사용자 계정에 대한 모든 설정값과 default role을 포함한 모든 default 설정값을 표시
    • 특정 사용자에 대해 확인하려면 like ‘사용자계정이름’ 을 추가
  2. Role에 대한 통계

    SHOW ROLES ;
    • 할당된 사용자 수, 할당된 Role 수 등 전반적인 통계를 확인
    • 특정 role에 대해 확인하려면 like ‘역할이름’을 추가
  3. 할당 받은 권한

    SHOW GRANTS TO USER user1 ;
    • 특정 사용자에게 할당되어 있는 역할(Role)의 리스트를 출력
    • SHOW GRANTS만 실행하면 현재 사용자에게 할당된 역할이 출력
    SHOW GRANTS TO ROLE scientist ;
    • 특정 역할에 할당되어 있는 권한을 출력 (예, 웨어하우스, 데이터베이스, 스키마, 테이블, 롤 등)
profile
Snowflake Korea SE

0개의 댓글