민감한 데이터를 자동으로 분류

민감한 데이터 자동 분류는 민감한 데이터를 자동으로 감지하여 태그를 지정할 수 있는 서버리스 기능입니다. 이 기능은 특정 데이터베이스 내의 테이블을 지속적으로 모니터링하고 기본사용자 지정 분류 카테고리를 사용하여 열을 분류합니다.

민감한 데이터 자동 분류 기능을 통해 데이터 엔지니어와 관리자는 다음과 같은 작업을 수행할 수 있습니다.

  • 테이블을 자동으로 분류하는 것이 내부 거버넌스와 규정 준수 요구 사항을 어떻게 충족시키는지 입증하십시오.

  • 민감한 데이터에 적절하게 태그가 지정되어 있는지 확인하십시오.

  • 민감한 데이터를 보호하기 위해 적절한 액세스 제어가 마련되어 있는지 확인하십시오.

시작하기

민감한 데이터를 자동으로 분류하는 기본 워크플로는 다음과 같이 구성되어 있습니다.

  1. 분류 후 :ref:`시스템 태그 <label-classification_system_tags>`를 자동으로 적용할지 여부를 포함하여 데이터베이스에서 민감한 데이터가 자동으로 분류되는 빈도를 제어하는 *분류 프로필*을 만듭니다.

  2. 선택 사항으로 분류 프로필을 사용하여 사용자 정의 태그를 시스템 태그에 매핑하여 민감한 데이터가 있는 열을 분류에 따라 사용자 정의 태그에 연결할 수 있습니다.

  3. 선택 사항으로 분류 프로필에 사용자 정의 분류기 를 추가하여 민감한 데이터를 사용자가 정의한 의미 및 개인정보 보호 범주로 자동 분류할 수 있습니다.

  4. 데이터베이스의 테이블이 자동으로 분류되도록 데이터베이스에 분류 프로필을 설정합니다.

이 워크플로의 전체 예제는 섹션을 참조하십시오.

분류 프로필 정보

데이터 엔지니어는 데이터베이스의 테이블을 자동으로 분류하는 데 사용되는 기준을 정의하기 위해 CLASSIFICATION_PROFILE :doc:`클래스</sql-reference/snowflake-db-classes>`의 인스턴스를 생성하여 분류 프로필을 만듭니다. 이 기준에는 다음이 포함됩니다.

  • 테이블을 자동으로 분류하기 전에 테이블이 존재해야 하는 기간입니다.

  • 이전에 분류된 테이블을 재분류해야 하는 기간입니다.

  • 분류 후 시스템 및 사용자 정의 태그를 열에 자동으로 설정할지 여부입니다. 추천 태그를 자동으로 적용할지, 아니면 제안된 태그 할당을 검토한 후 직접 적용할지 결정할 수 있습니다.

  • 시스템 분류 태그와 사용자 정의 오브젝트 태그 간의 매핑 을 통해 사용자 정의 태그를 자동으로 적용할 수 있습니다.

데이터 엔지니어가 데이터베이스에 분류 프로필을 할당하면 데이터베이스에 속하는 테이블에 있는 민감한 데이터가 프로필에 정의된 일정에 따라 자동으로 분류됩니다. 데이터 엔지니어는 여러 데이터베이스에 동일한 분류 프로필을 할당하거나 데이터베이스마다 다른 분류 기준을 설정해야 하는 경우 여러 분류 프로필을 만들 수 있습니다.

데이터를 자동으로 분류하는 프로세스에는 테이블의 원시 데이터에 대한 액세스가 필요합니다. 원시 데이터에는 열에 마스킹 정책이 할당된 테이블이 포함됩니다. 그러나 Snowflake는 내부 역할을 사용하여 데이터를 자동으로 분류함으로써 보호되는 데이터에 대한 액세스를 규제하려는 의도를 유지합니다. 내부 역할은 마스킹 정책으로 보호되는 데이터에 액세스할 수 있지만, 이 역할은 사용자가 액세스할 수 없습니다.

CREATE CLASSIFICATION_PROFILE 명령을 사용하여 분류 프로필을 만드는 예제는 섹션을 참조하십시오.

민감한 데이터 자동 분류에서 오브젝트 제외

기본적으로, Snowflake는 분류 프로필이 설정된 데이터베이스의 모든 민감한 데이터베이스를 자동으로 분류합니다. 분류 프로세스 중에 건너뛰도록 자동 분류에서 스키마, 테이블 또는 열을 제외하도록 Snowflake를 구성할 수 있습니다.

자세한 내용은 민감한 데이터 자동 분류에서 데이터 제외 섹션을 참조하십시오.

태그 매핑 정보

분류 프로필을 사용하여 SEMANTIC_CATEGORY 시스템 태그 를 하나 이상의 오브젝트 태그 에 매핑할 수 있습니다. 이 태그 매핑을 사용하면 민감한 데이터가 있는 열에 분류에 따라 사용자 정의 태그를 자동으로 할당할 수 있습니다. 태그 맵은 분류 프로필을 만드는 동안 또는 나중에 <classification_profile_name>!SET_TAG_MAP 메서드를 호출하여 추가할 수 있습니다.

사용자 정의 오브젝트 태그에는 마스킹 정책이 연관되어 있을 수 있으므로 태그 맵을 사용하여 자동 태그 기반 마스킹 을 활성화할 수 있습니다. 분류 후 자동으로 태그를 적용하도록 선택하면 데이터 분류에 따른 마스킹 정책으로 열을 보호하는 전체 프로세스를 자동화할 수 있습니다. 스키마에 새로운 데이터가 추가되면 태그 기반 마스킹 정책이 민감한 데이터가 포함된 열에 자동으로 할당됩니다.

분류 프로필을 생성하는 동안 태그 맵을 정의하든 그 이후에 정의하든 관계없이, 맵의 내용은 JSON 오브젝트로 지정됩니다. 이 JSON 오브젝트에는 사용자 정의 태그, 해당 태그의 문자열 값, 태그가 매핑되는 의미 체계 카테고리를 지정하는 오브젝트의 배열인 'column_tag_map' 키가 포함되어 있습니다. 태그 맵이 분류 프로필과 연결되고 데이터베이스에서 테이블을 자동으로 분류하면 의미 체계 범주에 해당하는 열에 태그가 할당됩니다.

다음은 태그 매핑의 예입니다.

'tag_map': {
  'column_tag_map': [
    {
      'tag_name':'tag_db.sch.pii',
      'tag_value':'Highly Confidential',
      'semantic_categories':[
        'NAME',
        'NATIONAL_IDENTIFIER'
      ]
    },
    {
      'tag_name': 'tag_db.sch.pii',
      'tag_value':'Confidential',
      'semantic_categories': [
        'EMAIL'
      ]
    }
  ]
}
Copy

이 매핑을 기반으로 이메일 주소 열이 있고 분류 프로세스에서 해당 열에 이러한 주소가 포함되어 있다고 판단되면 이메일 주소가 포함된 열에 tag_db.sch.pii = 'Confidential' 태그가 설정됩니다.

여러 개의 JSON 오브젝트가 태그 맵에 포함되어 있고, 태그, 태그 값, 범주 값을 매핑하는 경우, JSON 오브젝트의 순서에 따라 충돌이 발생할 때 열에 설정할 태그와 값이 결정됩니다. JSON 오브젝트를 왼쪽에서 오른쪽으로, JSON 형식으로 지정하는 경우 위에서 아래로 원하는 할당 순서대로 지정합니다.

column_tag_map 필드의 각 오브젝트에는 1개의 필수 키(tag_name)만 있습니다. tag_valuesemantic_categories 키를 생략하면 SEMANTIC_CATEGORY 시스템 태그가 적용되는 모든 열에 사용자 정의 태그가 적용되며, 사용자 정의 태그의 값은 지정된 열의 SEMANTIC_CATEGORY 태그 값과 일치합니다.

수동으로 할당된 태그와 자동 분류로 적용된 태그가 충돌하는 경우 오류가 발생합니다. 이러한 오류 추적에 대한 자세한 내용은 문제 해결하기 섹션을 참조하십시오.

사용자 지정 분류 구현하기

Snowflake를 사용하면 사용자 정의 로직을 사용하여 민감한 데이터를 식별하고 분류하는 사용자 정의 분류기 를 정의할 수 있습니다. 예를 들어, 정규식을 사용하여 ICD-10 코드를 식별하고 이를 의미 체계 범주 ICD_10_CODES 에 속하는 것으로 분류하는 사용자 정의 분류기를 만들 수 있습니다.

사용자 정의 분류기를 생성한 후에는 분류 프로필에 추가하여 Snowflake가 해당 로직에 따라 데이터를 자동으로 분류하도록 할 수 있습니다. 분류 프로필을 만들 때 또는 <classification_profile_name>!SET_CUSTOM_CLASSIFIERS 메서드를 호출하여 사용자 정의 분류기를 추가할 수 있습니다.

분류 프로필에 사용자 지정 분류자와 태그 매핑을 모두 추가하면 강력한 거버넌스 솔루션을 제공합니다. 이를 통해 민감한 정보에 대한 지식을 기반으로 데이터를 자동으로 분류하고 추적할 수 있는 사용자 정의 태그를 적용할 수 있습니다. 이 사용자 정의 태그를 사용하여 :doc:`태그 기반 마스킹</user-guide/tag-based-masking-policies>`을 구현하면 데이터가 데이터베이스에 추가될 때 도메인별 민감한 데이터가 마스킹 정책에 의해 자동으로 보호됩니다.

중요

자동 분류는 참조가 아닌 사용자 정의 분류기의 정의를 저장합니다. 사용자 정의 분류기를 변경하는 경우 SET_CUSTOM_CLASSIFIERS 메서드를 사용하여 새 정의로 분류 프로필을 업데이트해야 합니다.

데이터베이스에 분류 프로필 설정

데이터베이스에 분류 프로필을 설정하여 민감한 데이터 자동 분류를 구현합니다. 데이터베이스에 분류 프로필을 설정하면 해당 데이터베이스 내의 모든 테이블과 뷰가 민감한 데이터 분류를 통해 자동으로 모니터링됩니다.

스키마에도 분류를 설정할 수 있습니다. 분류 프로필에도 연결된 데이터베이스 내에 존재하는 스키마에 분류 프로필을 설정하면, 스키마에 설정된 프로필이 데이터베이스에 설정된 프로필을 재정의합니다.

분류 프로필을 설정하려면 ALTER DATABASE 또는 ALTER SCHEMA 명령을 사용하여 CLASSIFICATION_PROFILE 매개 변수를 설정합니다. 예를 들어 my_db 데이터베이스의 모든 테이블과 뷰가 민감한 데이터 자동 분류를 통해 모니터링되도록 분류 프로필 ``my_profile``을 설정하려면 다음 명령을 실행합니다.

ALTER DATABASE my_db
  SET CLASSIFICATION_PROFILE = 'governance_db.classify_sch.my_profile';
Copy

뷰 분류

기본적으로 민감한 데이터 분류는 뷰의 데이터를 분류하지 않습니다. 기본 설정을 변경하지 않으면 테이블만 분류됩니다.

뷰 분류는 테이블 분류보다 비용이 더 많이 들 수 있습니다. 추가 비용은 뷰를 생성한 쿼리의 복잡성에 따라 다릅니다. 구체화된 뷰는 다른 뷰처럼 추가 비용이 발생하지 않습니다.

분류 프로필의 구성 오브젝트에 있는 classify_views 키에 따라 뷰의 분류 여부가 결정됩니다. 다음 분류 프로필은 뷰가 분류되도록 기본값을 변경합니다.

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

SET_CLASSIFY_VIEWS 메서드를 사용하여 뷰 분류를 활성화하거나 비활성화할 수도 있습니다.

자동 분류로 모니터링되는 오브젝트 결정하기

분류 프로필과 연결된 데이터베이스 및 스키마를 나열하여 민감한 데이터 자동 분류로 모니터링되는 데이터를 확인할 수 있습니다. 데이터베이스 또는 스키마가 분류 프로필과 연결된 경우 해당 엔터티의 모든 테이블과 뷰는 프로필에 정의된 기준에 따라 자동으로 분류됩니다.

SYSTEM$SHOW_SENSITIVE_DATA_MONITORED_ENTITIES 함수를 사용하여 분류 프로필과 연결된 데이터베이스 및 스키마를 나열합니다. 데이터베이스만 나열하거나, 스키마만 나열하거나, 모든 데이터베이스와 스키마를 나열할 수 있습니다. 예를 들어 분류 프로필과 연결된 모든 데이터베이스 및 스키마를 나열하려면 다음 명령을 실행합니다.

SELECT SYSTEM$SHOW_SENSITIVE_DATA_MONITORED_ENTITIES();
Copy

출력에는 데이터베이스 또는 스키마의 이름, 해당 유형, 분류 프로필이 나열됩니다. 다음은 출력의 예입니다.

[
{"name":"HR_DB","type":"DATABASE","profile_name":"GOV_DB.CLASSIFY_SCH.MY_CLASSIFICATION_PROFILE"},
{"name":"SALES_DB.SCH1","type":"SCHEMA","profile_name":"GOV_DB.CLASSIFY_SCH.TEST_PROFILE"}
]

자동 분류 결과 보기

자동 분류 결과는 다음과 같은 방법으로 볼 수 있습니다.

  • SYSTEM$GET_CLASSIFICATION_RESULT 저장 프로시저를 호출합니다. 예:

    CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
    
    Copy

    분류 프로세스가 완료될 때까지 결과를 반환할 수 없습니다. 자동 분류 프로세스는 데이터베이스에 분류 프로필을 설정한 후 1시간이 경과해야 시작됩니다.

  • SNOWFLAKE.GOVERNANCE_VIEWER 데이터베이스 역할이 부여된 역할을 사용하여 DATA_CLASSIFICATION_LATEST 뷰를 쿼리합니다. 예:

    SELECT * FROM snowflake.account_usage.data_classification_latest;
    
    Copy

    분류가 완료된 후 3시간이 경과해야 결과가 표시될 수 있습니다.

제한 사항

  • 독자 계정에는 분류 프로필을 설정할 수 없습니다.

  • 하나의 데이터베이스나 스키마에는 하나의 분류 프로필만 설정할 수 있습니다.

  • 1,000개를 초과하는 데이터베이스에 분류 프로필을 설정할 수 없습니다.

  • 10,000개를 초과하는 스키마에 분류 프로필을 직접 설정할 수 없습니다.

  • 스키마에는 최대 1억 개의 테이블을 분류할 수 있습니다.

  • 테이블에 다음과 같은 특성이 있는 경우 자동으로 분류할 수 없습니다.

    • 10,000개를 초과하는 열.

    • 이름이 255자를 초과하는 열.

    • $ 문자가 포함된 이름의 열.

    • 공유에서 가져온 것입니다.

액세스 제어

이 섹션에서는 분류 프로필로 작업하고 민감한 데이터 자동 분류를 활성화할 수 있는 권한과 역할에 대해 설명합니다.

작업

필수 권한/역할

참고

분류 프로필 만들기

SNOWFLAKE.CLASSIFICATION_ADMIN 데이터베이스 역할

이 데이터베이스 역할을 다른 역할에 부여하는 방법에 대한 자세한 내용은 SNOWFLAKE 데이터베이스 역할 사용하기 섹션을 참조하십시오.

스키마에 대한 CREATE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE

이 권한은 분류 프로필 인스턴스를 생성할 스키마에 필요합니다.

데이터베이스 및 스키마에 대한 USAGE

분류 프로필 인스턴스를 생성할 스키마에 권한이 필요합니다.

데이터베이스 및 스키마에 분류 프로필 설정하기

다음 중 하나:

  • 계정에 대한 EXECUTE AUTO CLASSIFICATION

  • 데이터베이스 및 스키마에 대한 EXECUTE AUTO CLASSIFICATION

기본적으로 데이터베이스 및 스키마의 소유자에게는 해당 EXECUTE AUTO CLASSIFICATION 권한이 있습니다.

스키마의 데이터베이스에 대한 모든 권한

스키마에 분류 프로필을 설정하는 경우 해당 스키마가 포함된 데이터베이스에 대해 하나 이상의 권한이 필요합니다.

데이터베이스 및 스키마에 대한 모든 권한

자동으로 분류할 테이블이 포함된 데이터베이스 및 스키마에 대해 하나 이상의 권한이 필요합니다. EXECUTE AUTO CLASSIFICATION 권한이 이 요구 사항을 충족합니다.

다음 중 하나:

  • 분류 프로필 인스턴스에 대한 OWNERSHIP

  • 분류 프로필의 <classification_profile>!PRIVACY_USER 인스턴스 역할.

PRIVACY_USER 인스턴스 역할을 다른 역할에 부여하는 방법에 대한 자세한 내용은 인스턴스 역할 섹션을 참조하십시오.

계정에 대한 APPLY TAG

분류 프로필 인스턴스에서 메서드 를 호출합니다

<classification_profile>!PRIVACY_USER 인스턴스 역할

이 인스턴스 역할을 다른 역할에 부여하는 방법에 대한 자세한 내용은 인스턴스 역할 섹션을 참조하십시오.

분류 프로필 나열

<classification_profile>!PRIVACY_USER 인스턴스 역할

분류 프로필 삭제

분류 프로필 인스턴스에 대한 OWNERSHIP

데이터 엔지니어 역할에 이러한 권한과 데이터베이스 역할을 부여하는 예제는 기본 예제: 데이터베이스에서 테이블 자동 분류 섹션을 참조하십시오.

민감한 데이터를 자동으로 분류하는 데 드는 비용

중요한 데이터 자동 분류는 :ref:`서버리스 컴퓨팅 리소스<label-serverless_credit_usage>`를 사용하여 데이터베이스에서 테이블을 분류하기 때문에 크레딧을 소비합니다. 이러한 사용 가격에 대한 자세한 내용은 `Snowflake Service Consumption Table`_의 테이블 5를 참조하세요.

ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마에서 뷰를 쿼리하여 민감한 데이터를 자동으로 분류하는 데 얼마나 많은 비용이 사용되었는지 확인할 수 있습니다. 크레딧 사용을 모니터링하려면 다음 뷰를 쿼리하십시오.

METERING_HISTORY 뷰(ACCOUNT_USAGE)

SERVICE_TYPE 열에서 SENSITIVE_DATA_CLASSIFICATION 에 초점을 맞춰 자동 분류의 시간당 비용을 검색할 수 있습니다. 예:

SELECT
  service_type,
  start_time,
  end_time,
  entity_id,
  name,
  credits_used_compute,
  credits_used_cloud_services,
  credits_used,
  budget_id
  FROM snowflake.account_usage.metering_history
  WHERE service_type = 'SENSITIVE_DATA_CLASSIFICATION';
Copy
METERING_DAILY_HISTORY 뷰(ACCOUNT_USAGE 및 ORGANIZATION_USAGE)

SERVICE_TYPE 열에서 SENSITIVE_DATA_CLASSIFICATION 에 초점을 맞춰 자동 분류의 일일 비용을 검색할 수 있습니다. 예:

SELECT
  service_type,
  usage_date,
  credits_used_compute,
  credits_used_cloud_services,
  credits_used
  FROM snowflake.account_usage.metering_daily_history
  WHERE service_type = 'SENSITIVE_DATA_CLASSIFICATION';
Copy
USAGE_IN_CURRENCY_DAILY (ORGANIZATION_USAGE)

SERVICE_TYPE 열에서 SENSITIVE_DATA_CLASSIFICATION 에 초점을 맞춰 자동 분류의 일일 비용을 검색할 수 있습니다. 크레딧이 아닌 통화로 비용을 확인하려면 이 뷰를 사용합니다.

기본 예제: 데이터베이스에서 테이블 자동 분류

데이터베이스에서 테이블을 자동으로 분류하려면 다음 단계를 완료합니다.

  1. 관리자 역할로 데이터 엔지니어에게 데이터베이스의 테이블을 자동으로 분류하는 데 필요한 :ref:`역할과 권한<label-classify_auto_access_control>`을 부여합니다.

    USE ROLE ACCOUNTADMIN;
    
    GRANT USAGE ON DATABASE mydb TO ROLE data_engineer;
    GRANT EXECUTE AUTO CLASSIFICATION ON DATABASE mydb TO ROLE data_engineer;
    
    GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN TO ROLE data_engineer;
    GRANT CREATE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE ON SCHEMA mydb.sch TO ROLE data_engineer;
    
    GRANT APPLY TAG ON ACCOUNT TO ROLE data_engineer;
    
    Copy
  2. 데이터 엔지니어 역할로 전환합니다.

    USE ROLE data_engineer;
    
    Copy
  3. 분류 프로필 을 CLASSIFICATION_PROFILE 클래스의 인스턴스로 생성합니다.

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
      my_classification_profile(
        {
          'minimum_object_age_for_classification_days': 0,
          'maximum_classification_validity_days': 30,
          'auto_tag': true,
          'classify_views': true
        });
    
    Copy
  4. 인스턴스에서 DESCRIBE 메서드를 호출하여 속성을 확인합니다.

    SELECT my_classification_profile!DESCRIBE();
    
    Copy
  5. 스키마에 분류 프로필 인스턴스를 설정하면 스키마에서 테이블을 모니터링하고 민감한 데이터를 자동으로 분류하는 백그라운드 프로세스가 시작됩니다.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy

    참고

    스키마에 분류 프로필을 설정한 후 Snowflake가 스키마 분류를 시작하기까지 1시간 정도의 지연이 있습니다.

  6. 1시간 정도 기다린 후 SYSTEM$GET_CLASSIFICATION_RESULT 저장 프로시저를 호출하여 자동 분류 결과를 확인합니다.

    CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
    
    Copy

예제: 태그 매핑 및 사용자 지정 분류기 사용하기

  1. 관리자 역할로 데이터 엔지니어에게 데이터베이스의 테이블을 자동으로 분류하고 열에 태그를 설정하는 데 필요한 :ref:`역할과 권한<label-classify_auto_access_control>`을 부여합니다.

  2. 분류 프로필을 만듭니다.

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
      my_classification_profile(
        {
          'minimum_object_age_for_classification_days': 0,
          'maximum_classification_validity_days': 30,
          'auto_tag': true,
          'classify_views': true
        });
    
    Copy
  3. 인스턴스에서 SET_TAG_MAP 메서드를 호출하여 태그 매핑 을 분류 프로필에 추가합니다. 이렇게 하면 민감한 데이터가 포함된 열에 사용자 지정 태그를 자동으로 적용할 수 있습니다.

    CALL my_classification_profile!SET_TAG_MAP(
      {'column_tag_map':[
        {
          'tag_name':'my_db.sch1.pii',
          'tag_value':'sensitive',
          'semantic_categories':['NAME']
        }]});
    
    Copy

    또는 분류 프로필을 만들 때 이 태그 매핑을 추가할 수도 있습니다.

  4. SET_CUSTOM_CLASSIFIERS 메서드를 호출하여 사용자 정의 분류기 를 분류 프로필에 추가합니다. 이를 통해 민감한 데이터를 사용자가 정의한 의미 체계 및 개인정보 보호 범주로 자동 분류할 수 있습니다.

    CALL my_classification_profile!set_custom_classifiers(
      {
        'medical_codes': medical_codes!list(),
        'finance_codes': finance_codes!list()
      });
    
    Copy

    또는 분류 프로필을 만들 때 사용자 지정 분류자를 추가할 수도 있습니다.

  5. 인스턴스에서 DESCRIBE 메서드를 호출하여 태그 매핑과 사용자 정의 분류기가 분류 프로필에 추가되었는지 확인합니다.

    SELECT my_classification_profile!DESCRIBE();
    
    Copy
  6. 데이터베이스에서 분류 프로필 인스턴스를 설정합니다.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy
  7. tag_db.sch.pii 태그에 마스킹 정책을 첨부하여 태그 기반 마스킹을 사용하도록 설정합니다.

    ALTER TAG tag_db.sch.pii SET MASKING POLICY pii_mask;
    
    Copy

예제: 자동 분류를 활성화하기 전에 분류 프로필 테스트하기

  1. 관리자로 데이터 엔지니어에게 스키마의 테이블을 자동으로 분류하고 열에 태그를 설정하는 데 필요한 역할과 권한 을 부여하십시오.

  2. 태그 매핑과 사용자 지정 분류기로 분류 프로필을 만듭니다.

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile(
      {
        'minimum_object_age_for_classification_days':0,
        'auto_tag':true,
        'tag_map': {
          'column_tag_map':[
            {
              'tag_name':'tag_db.sch.pii',
              'tag_value':'highly sensitive',
              'semantic_categories':['NAME','NATIONAL_IDENTIFIER']
            },
            {
              'tag_name':'tag_db.sch.pii',
              'tag_value':'sensitive',
              'semantic_categories':['EMAIL','MEDICAL_CODE']
            }
          ]
        },
        'classify_views': true
        'custom_classifiers': {
          'medical_codes': medical_codes!list(),
          'finance_codes': finance_codes!list()
        }
      }
    );
    
    Copy
  3. 자동 분류를 활성화하기 전에 SYSTEM$CLASSIFY 저장 프로시저를 호출하여 table1 테이블의 태그 매핑을 테스트하십시오.

    CALL SYSTEM$CLASSIFY(
     'db.sch.table1',
     'db.sch.my_classification_profile'
    );
    
    Copy

    출력의 tags 키에는 태그 설정 여부(설정된 경우 true, 그렇지 않은 경우 false), 설정된 태그의 이름 및 태그 값에 대한 세부 정보가 포함되어 있습니다.

    {
      "classification_profile_config": {
        "classification_profile_name": "db.schema.my_classification_profile"
      },
      "classification_result": {
        "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"
              },
              {
                "tag_applied": true,
                "tag_name": "tag_db.sch.pii",
                "tag_value": "sensitive"
              }
            ]
          },
          "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": "tag_db.sch.pii",
                "tag_value": "highly sensitive"
              }
            ]
          },
          "valid_value_ratio": 1
        }
      }
    }
    
  4. 분류 프로필을 기준으로 한 자동 분류가 원하는 결과를 가져오는지 확인한 후 데이터베이스에 분류 프로필 인스턴스를 설정합니다.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy

문제 해결하기

분류되지 않은 테이블의 문제 해결을 시작하는 가장 간단한 방법은 테이블을 직접 쿼리하는 것입니다(예: SELECT * FROM my_table). 테이블을 쿼리할 수 없으면 자동으로 분류할 수 없습니다.

오브젝트를 자동으로 분류할 수 없는 경우 Snowflake는 이벤트를 :doc:`이벤트 테이블</developer-guide/logging-tracing/event-table-setting-up>`에 기록합니다. 기본적으로 이벤트는 계정 수준 이벤트 테이블에 기록됩니다. 실패한 오브젝트의 데이터베이스에 대해 정의된 이벤트 테이블이 있는 경우 이벤트가 대신 여기에 기록됩니다.

일반적으로 Snowflake가 오브젝트를 다시 분류하기 전에 지연이 있습니다. 추가로 실패한 모든 시도는 이벤트 테이블에 기록됩니다. 이러한 지연 및 재시도 프로세스는 오브젝트가 수정되거나 자동 분류에서 제거될 때까지 계속됩니다.

참고

불필요한 비용을 방지하기 위해 Snowflake는 시간 초과와 같은 일부 오류가 있을 때 분류를 재시도하기 위해 추가 시간 동안 대기합니다. 이러한 시간 제한 오류의 경우 Snowflake는 모든 오브젝트가 재분류될 때까지 분류를 다시 시도하지 않습니다. 오브젝트가 재분류되는 일정은 분류 프로필의 maximum_classification_validity_days 키에 따라 제어됩니다.

분류 이벤트가 기록되지 않도록 하려면 ENABLE_AUTOMATIC_SENSITIVE_DATA_CLASSIFICATION_LOG 계정 매개 변수를 FALSE로 설정합니다.

일반 오류 나열

이벤트 테이블에 대한 다음 쿼리는 자동 분류와 관련된 일반 오류를 반환합니다.

SELECT
  record_type,
  record:severity_text::string log_level,
  parse_json(value) error_message
  FROM <event_db>.<event_schema>.<event_table>
  WHERE record_type='LOG' and scope:name ='snow.automatic_sensitive_data_classification'
  ORDER BY log_level;
Copy

이 쿼리에서 반환된 가능한 오류 메시지의 하위 세트는 태그 관련 오류 메시지 섹션을 참조하세요.

오브젝트 수준 분류 오류 나열

이벤트 테이블에 대한 다음 쿼리는 특정 오브젝트의 분류와 관련된 오류를 반환합니다. 예를 들어, Snowflake가 특정 테이블을 분류하려고 할 때 발생한 오류를 반환합니다.

SELECT
  RECORD_ATTRIBUTES:"object_name"::string AS object_name,
  parse_json(value):"error_message" error_message,
  PARSE_JSON(VALUE):"profile_name" classification_profile_name,
  timestamp,
  FROM <event_db>.<event_schema>.<event_table>
  WHERE record_type='LOG'
    AND scope:name ='snow.automatic_sensitive_data_classification'
    AND RECORD_ATTRIBUTES:"event_type" = 'CLASSIFICATION_ERROR'
  ORDER BY TIMESTAMP DESC;
Copy