자습서: 민감한 데이터를 자동으로 분류하고 태그 지정하기

소개

민감한 데이터를 식별하고 추적하는 것은 간단하고 직관적입니다. Snowflake는 민감한 데이터를 식별하고 해당 데이터에 시스템 태그를 자동으로 지정하는 내장 알고리즘을 제공하여 데이터 타입과 민감도를 추적하는 데 도움을 줍니다.

최소한의 설정으로 스키마를 구성하여 Snowflake가 새로운 데이터와 변경되는 데이터에 대해 자동으로 분류 프로세스를 수행하고 시스템 태그와 함께 사용자 정의 태그를 적용하도록 할 수도 있습니다.

이 자습서에서는 다음을 수행합니다.

  • 민감한 데이터에 적용되는 사용자 정의 태그를 포함하여 자습서를 완료하는 데 필요한 리소스를 설정합니다.

  • 분류 프로필을 생성하면 Snowflake가 스키마에 추가될 때 데이터를 자동으로 분류하는 데 사용합니다.

  • 분류 프로필에 태그 매핑을 추가하여 사용자 정의 태그가 Snowflake가 민감한 것으로 식별하는 데이터에 적용되도록 합니다.

  • 분류 결과를 봅니다.

이 자습서에는 나와 있지 않지만 사용자 정의 정규식을 사용하여 분류를 사용자 지정하여 민감한 데이터를 식별하고 사용자 정의 의미 체계 카테고리로 해당 데이터에 태그를 지정할 수도 있습니다. 자세한 내용은 자동 사용자 지정 분류 구현하기 섹션을 참조하십시오.

거버넌스 데이터베이스 설정하기

이 자습서에서는 데이터 거버넌스에 필요한 Snowflake 오브젝트(사용자 정의 태그 및 분류 프로필)를 생성할 것입니다. 모범 사례에 따라 이러한 오브젝트는 거버넌스 전용 데이터베이스에 생성됩니다.

SQL 워크시트를 열고 다음 문을 실행하여 거버넌스 오브젝트에 대한 데이터베이스 및 스키마를 생성합니다.

USE ROLE ACCOUNTADMIN;

CREATE DATABASE IF NOT EXISTS governance_db;
CREATE SCHEMA IF NOT EXISTS governance_db.sch;
Copy

참고

간소화하기 위해 ACCOUNTADMIN 시스템 역할을 사용하여 민감한 데이터 분류를 구성하는 데 필요한 권한을 설정하지 않도록 합니다. 실제 환경에서는 이 강력한 역할을 사용하지 말고, 필요한 권한이 있는 사용자 정의 역할을 생성해야 합니다.

데이터 설정하기

이 자습서의 데이터를 설정하기 전에 테이블을 채울 데이터 웨어하우스를 만듭니다.

CREATE WAREHOUSE IF NOT EXISTS tutorial_wh;
Copy

테이블 만들기

  1. 분류할 테이블을 포함할 데이터베이스와 스키마를 생성합니다.

    CREATE DATABASE IF NOT EXISTS data_db;
    CREATE SCHEMA IF NOT EXISTS data_db.sch;
    
    Copy
  2. 민감한 데이터를 포함할 테이블 구조를 생성합니다.

    CREATE TABLE data_db.sch.customers (
      account_number NUMBER(38,0),
      first_name VARCHAR(16777216),
      last_name VARCHAR(16777216),
      email VARCHAR(16777216)
    );
    
    Copy

테이블에 값 삽입

생성한 테이블에 데이터를 추가합니다.

USE WAREHOUSE tutorial_wh;

INSERT INTO data_db.sch.customers (account_number, first_name, last_name, email)
  VALUES
    (1589420, 'john', 'doe', 'john.doe@example.com'),
    (2834123, 'jane', 'doe', 'jane.doe@example.com'),
    (4829381, 'jim', 'doe', 'jim.doe@example.com'),
    (9821802, 'susan', 'smith', 'susan.smith@example.com'),
    (8028387, 'bart', 'simpson', 'bart.barber@example.com');
Copy

분류 프로필 만들기

이제 민감한 데이터를 보호하기 위해 분류해야 할 데이터가 가득한 테이블이 생겼습니다. 데이터가 스키마에 추가될 때 Snowflake가 자동으로 데이터를 분류하도록 하려면 분류 프로필을 생성해야 합니다.

분류 프로필은 스키마에서 데이터가 분류되는 빈도와 분류 프로세스 중에 일어나는 일을 제어합니다. 모든 분류 프로필은 CLASSIFICATION_PROFILE 클래스의 인스턴스입니다.

스키마에 대한 분류 프로필을 생성하려면 다음을 실행합니다.

CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
  governance_db.sch.my_classification_profile(
      {
        'minimum_object_age_for_classification_days': 0,
        'maximum_classification_validity_days': 30,
        'auto_tag': true
      });
Copy

이 분류 프로필이 스키마에 설정되면 다음과 같은 일이 발생합니다.

  • 분류는 1일 이내('minimum_object_age_for_classification_days': 0)에 시작됩니다.

  • 초기 분류가 완료되면 Snowflake는 30일마다 테이블을 재분류할 필요가 있는지 다시 확인('maximum_classification_validity_days': 30)합니다.

  • 분류 태그는 민감한 데이터가 포함된 것으로 식별된 열에 자동으로 설정('auto_tag': true)됩니다.

분류 프로필에 태그 매핑 추가하기

분류 프로필에서 'auto_tag': true 를 설정했기 때문에 Snowflake는 데이터를 민감한 것으로 분류할 때 시스템 분류 태그 를 자동으로 적용합니다. SEMANTIC_CATEGORY 태그는 데이터 타입을 분류합니다(예: 데이터를 이름 또는 주소로 식별자 지정). PRIVACY_CATEGORY 태그는 데이터를 식별자 또는 준식별자로 식별하는 등 데이터의 민감도를 분류합니다.

이제 한 단계 더 나아가 데이터 분류 방식에 따라 사용자 정의 태그를 자동으로 적용하는 경우를 생각할 수 있습니다. 이 자습서에서 그 방법을 알려드립니다!

민감한 데이터에 적용할 사용자 지정 태그를 생성하려면 다음 문을 실행하십시오.

CREATE TAG governance_db.sch.tutorial_pii;
Copy

다음으로, 분류 프로필을 수정하여 Snowflake가 열에 이름이 포함되어 있음을 식별할 때 이 사용자 정의 태그가 적용되도록 합니다. 분류 프로필에 태그 매핑을 추가하면 사용자 정의 태그가 적용되는 방법과 시기를 구성할 수 있습니다.

분류 프로필에 태그 매핑을 추가하려면 classification_profile_name!SET_TAG_MAP 메서드를 실행합니다.

CALL governance_db.sch.my_classification_profile!SET_TAG_MAP(
  {'column_tag_map':[
    {
      'tag_name':'governance_db.sch.tutorial_pii',
      'tag_value':'sensitive_name',
      'semantic_categories':['NAME']
    }]});
Copy

이제 자동 분류 결과 시스템 정의 의미 체계 카테고리가 NAME 으로 결정되면 사용자 정의 태그 tutorial_pii 이 열에 설정됩니다. 분류 프로필에 따라 사용자 정의 tutorial_pii 태그의 값은 sensitive_name 으로 설정됩니다.

참고

분류 프로필을 생성할 때 태그 맵을 정의할 수도 있습니다.

스키마에 분류 프로필 설정하기

분류 프로필이 구성되었으므로 스키마에 설정할 준비가 되었습니다. 그러면 자동 분류 프로세스가 시작됩니다.

ALTER SCHEMA data_db.sch
  SET CLASSIFICATION_PROFILE = 'governance_db.sch.my_classification_profile';
Copy

나머지는 Snowflake가 알아서 합니다! Snowflake는 기존 데이터를 분류하기 시작하고 스키마에 추가되는 새로운 데이터를 계속 분류합니다.

분류 결과 보기

자습서의 이 부분을 완료하기 전에 Snowflake가 분류 과정을 완료할 때까지 한 시간 정도 대기해야 합니다.

한 시간 후 다음 문을 실행하여 분류 결과를 검색합니다.

CALL SYSTEM$GET_CLASSIFICATION_RESULT('data_db.sch.customers');
Copy

결과에서 다음을 확인할 수 있습니다.

  • ACCOUNT_NUMBER 열은 민감한 것으로 분류되지 않았으므로 분류 태그가 할당되지 않았습니다.

  • EMAIL 열은 의미 체계 카테고리가 EMAIL 이고 개인정보 보호 카테고리가 IDENTIFIER 인 것으로 플래그가 지정되었습니다.

  • 분류 프로필의 태그 맵에 따라 governance_db.sch.tutorial_pii 사용자 정의 태그가 의미 체계적 범주가 NAME 인 열에 할당되었습니다(출력에서 강조 표시된 라인 참조).

  {
  "classification_profile_config": {
    "classification_profile_name": "GOVERNANCE_DB.SCH.MY_CLASSIFICATION_PROFILE"
  },
  "classification_result": {
    "ACCOUNT_NUMBER": {
      "alternates": []
    },
    "EMAIL": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "EMAIL",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "EMAIL"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          }
        ]
      },
      "valid_value_ratio": 1
    },
    "FIRST_NAME": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "NAME",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "NAME"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          },
          {
            "tag_applied": true,
            "tag_name": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    },
    "LAST_NAME": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "NAME",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "NAME"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          },
          {
            "tag_applied": true,
            "tag_name": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    }
  }
}

정리, 요약 및 추가 리소스

축하합니다! 이 자습서를 성공적으로 완료했습니다.

요약하면, 다음을 수행하는 방법을 배웠습니다.

  • 분류 프로필을 생성해 자동 분류가 구현되는 방식을 제어하십시오.

  • 분류 프로필에 태그 매핑을 추가하여 민감한 데이터가 포함된 열에 사용자 정의 태그가 자동으로 설정되도록 하십시오.

  • 스키마에 분류 프로필을 설정하여 자동 분류를 시작하십시오.

  • 자동 분류 결과를 봅니다.

자습서 오브젝트 삭제

자습서를 반복할 계획이라면, 생성한 오브젝트를 보관할 수 있습니다.

그렇지 않은 경우 다음과 같이 자습서 오브젝트를 삭제합니다.

DROP TAG governance_db.sch.tutorial_pii;
DROP DATABASE governance_db;
DROP DATABASE data_db;
DROP WAREHOUSE tutorial_wh;
Copy

다음에는 무엇을 해야 합니까?

관련 비용 및 사용자 지정 분류 구현을 포함하여 민감한 데이터 자동 분류 구현에 대한 자세한 내용은 민감한 데이터를 자동으로 분류 섹션을 참조하십시오.