패브릭 데이터 웨어하우스의 동적 데이터 마스킹

적용 대상:Microsoft Fabric의 ✅ SQL 분석 엔드포인트 및 웨어하우스

동적 데이터 마스킹은 권한이 없는 사용자에게 마스킹하여 중요한 데이터 노출을 제한하는 데이터 보호 기능입니다. 애플리케이션에서 보안 설계 및 코딩을 간소화합니다.

동적 데이터 마스킹을 사용하면 중요한 데이터를 무단으로 볼 수 없습니다. 관리자는 애플리케이션 계층에 미치는 영향을 최소화하면서 표시할 중요한 데이터의 양을 지정합니다. 지정된 데이터베이스 필드에서 동적 데이터 마스킹을 구성하여 쿼리 결과 집합에서 중요한 데이터를 숨길 수 있습니다. 데이터베이스의 데이터는 변경되지 않으므로 마스킹 규칙이 쿼리 결과에 적용되므로 기존 애플리케이션은 수정 없이 계속 작동할 수 있습니다. 많은 애플리케이션에서 기존 쿼리를 수정하지 않고 중요한 데이터를 마스킹할 수 있습니다.

동적 데이터 마스킹은 다음과 같은 기능을 제공합니다.

  • 중앙 데이터 마스킹 정책은 데이터베이스의 중요한 필드에서 직접 작동합니다.
  • 권한 있는 사용자 또는 역할은 중요한 데이터에 액세스하도록 지정할 수 있습니다.
  • 전체 마스킹 및 부분 마스킹 함수, 숫자 데이터에 대한 임의 마스크 등 선택할 수 있는 마스킹 옵션이 있습니다.
  • 간단한 Transact-SQL 명령에서 마스크를 정의하고 관리합니다.

동적 데이터 마스킹은 데이터베이스 사용자가 데이터베이스에 직접 연결하고 중요한 데이터의 일부를 노출하는 철저한 쿼리를 실행하는 것을 방지하지 않습니다. 동적 데이터 마스킹을 열 수준 보안행 수준 보안과 같은 다른 Fabric 보안 기능과 함께 사용하여 데이터베이스의 중요한 데이터를 보호합니다.

동적 데이터 마스킹 함수

테이블의 열에 마스킹 규칙을 정의하여 해당 열의 데이터를 난독 처리합니다. 4가지 유형의 마스크를 사용할 수 있습니다.

함수 설명 예제
기본값 지정된 필드의 데이터 형식에 따라 전체 마스킹.

문자열 데이터 형식의 경우 필드 크기가 4자 미만이면 XXXX(또는 그보다 작은 값)를 사용합니다(char, nchar, varchar, nvarchar, text, ntext).

숫자 데이터 형식(bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real)의 경우 0 값을 사용합니다.

날짜 및 시간 데이터 형식(1900-01-01 00:00:00.0000000, datetime2, datetime, datetimeoffset, smalldatetime, time)의 경우 을 사용합니다.

이진 데이터 형식의 경우 단일 바이트의 ASCII 값 0을 사용합니다(binary, varbinary, image).
열 정의 구문 예시: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

변경 구문 예시: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
전자 메일 이메일 주소 형식으로, 이메일 주소의 첫 글자와 고정 접미사 ".com"을 노출하는 마스킹 방법입니다. aXXX@XXXX.com; 정의 구문 예시: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

변경 구문 예시: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
임의 지정된 범위 내에서 임의 값으로 원래 값을 마스킹하기 위해 숫자 유형에서 사용할 임의 마스킹 함수입니다. 정의 구문 예시: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

변경 구문 예시: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
사용자 지정 문자열 첫 번째 및 마지막 문자를 표시하고 가운데에 사용자 지정 안쪽 여백 문자열을 추가하는 마스킹 방법입니다. prefix,[padding],suffix

원래 값이 너무 짧아서 전체 마스크를 완료할 수 없는 경우 접두사 또는 접미사 부분이 표시되지 않습니다.
정의 구문 예시: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

변경 구문 예시: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

이렇게 하면 555.123.1234와 같은 전화 번호가 5XXXXXXX로 바뀝니다.

추가 예시:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

이렇게 하면 555.123.1234와 같은 전화 번호가 555.1XXXXXXX로 바뀝니다.

자세한 예제는 패브릭 데이터 웨어하우스에서 동적 데이터 마스킹을 구현하는 방법을 참조하세요.

동적 데이터 마스킹에 대한 권한

Fabric Data Warehouse 사용자는 작업 영역에서 관리자, 멤버 또는 기여자 역할의 멤버가 아니거나 웨어하우스에 대한 상승된 권한이 없는 경우 마스킹된 열을 쿼리할 때 마스킹된 데이터를 볼 수 있습니다.

다음 표에서는 각 동적 데이터 마스킹 작업에 필요한 사용 권한을 나열합니다.

Operation 필요한 권한
마스킹된 열이 포함된 테이블 만들기 스키마에서 CREATE TABLEALTER.
열에서 마스크 추가, 바꾸기 또는 제거 테이블 위에 ALTER ANY MASKALTER
마스킹된 데이터 보기 테이블 위의 SELECT
마스크되지 않은 데이터 보기 UNMASK 열에서 또는 CONTROL 데이터베이스에서

보안 책임자에게 ALTER ANY MASK을(를) 부여합니다. UNMASK 사용자에게 마스킹되지 않은 데이터를 마스킹된 열에서 검색할 수 있도록 허용합니다.

데이터베이스에 대한 CONTROL 권한에는 ALTER ANY MASKUNMASK가 모두 포함되므로, CONTROL 권한이 있는 사용자는 마스킹되지 않은 데이터를 볼 수 있습니다. 관리자, 구성원 또는 기여자와 같은 관리 사용자 또는 역할은 기본적으로 데이터베이스에 대한 사용 권한을 가지 CONTROL 며 기본적으로 마스크되지 않은 데이터를 볼 수 있습니다. 웨어하우스에 대한 상위 권한에는 CONTROL 권한이 포함됩니다.

보안 고려 사항: 유추 또는 무차별 암호 대입 기술을 사용하여 마스킹 무시

동적 데이터 마스킹은 애플리케이션에서 사용하는 미리 정의된 쿼리 집합에서 데이터 노출을 제한하여 애플리케이션 개발을 간소화합니다. 동적 데이터 마스킹은 데이터에 직접 액세스할 때 중요한 데이터의 우발적 노출을 방지하는 데 도움이 될 수 있지만 쿼리 권한이 있는 권한 없는 사용자는 기술을 사용하여 실제 데이터를 유추할 수 있습니다.

예를 들어 웨어하우스에서 쿼리를 실행할 수 있는 권한이 있는 사용자는 값을 추측하여 마스킹된 데이터를 유추할 수 있습니다. [Employee].[Salary] 열에 마스크를 정의한다고 가정합니다. 사용자는 데이터베이스에 직접 연결하고 값 추측을 시작하여 결국 테이블의 [Salary] 값을 Employees 유추합니다. Employees 테이블에 대해 범위 쿼리를 실행합니다.

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

쿼리는 다음을 반환합니다.

ID 이름 급여
62543 제인 도 0
91245 존 스미스 0

비록 Salary 열이 마스킹되어 값이 0로 표시되더라도, WHERE 절은 두 직원 모두의 급여가 $99,999~$100,001 범위에 있음을 확인합니다. 동적 데이터 마스킹만 사용하여 웨어하우스 또는 SQL 분석 엔드포인트에 대한 쿼리 액세스 권한이 있는 사용자의 중요한 데이터를 완전히 보호하지 마세요. 동적 데이터 마스킹은 우발적인 중요한 데이터 노출을 방지하는 데 적합하지만 기본 데이터를 유추하려는 악의적인 의도로부터 보호하지는 않습니다.

SQL 세분화된 권한으로 개체 수준 보안을 적절하게 관리하고 항상 최소 권한 원칙을 따릅니다.

다음 단계