Fabric 데이터 웨어하우징의 동적 데이터 마스킹
적용 대상:Microsoft Fabric의 ✅ SQL 분석 엔드포인트 및 웨어하우스
동적 데이터 마스킹에서는 권한이 없는 사용자로 마스킹하여 중요한 데이터 노출을 제한합니다. 애플리케이션의 보안 설계 및 코딩을 크게 간소화하는 데 사용됩니다.
동적 데이터 마스킹을 사용하면 관리자가 애플리케이션 계층에 미치는 영향을 최소화하면서 표시할 중요한 데이터의 양을 지정할 수 있게 하여 중요한 데이터에 대한 무단 액세스를 방지할 수 있습니다. 지정된 데이터베이스 필드에 동적 데이터 마스킹을 구성하여 쿼리의 결과 집합에서 중요한 데이터를 숨길 수 있습니다. 동적 데이터 마스킹을 사용하면 데이터베이스의 데이터가 변경되지 않으므로 마스킹 규칙이 쿼리 결과에 적용되어 기존 애플리케이션에서 사용할 수 있습니다. 많은 애플리케이션에서 기존 쿼리를 수정하지 않고 중요한 데이터를 마스킹할 수 있습니다.
- 중앙 데이터 마스킹 정책은 데이터베이스의 중요한 필드에서 직접 작동합니다.
- 중요한 데이터에 액세스할 수 있는 권한 있는 사용자 또는 역할을 지정합니다.
- 동적 데이터 마스킹은 전체 마스킹 및 부분 마스킹 기능과 숫자 데이터에 대한 임의 마스크 기능을 갖추고 있습니다.
- 간단한 Transact-SQL 명령에서 마스크를 정의하고 관리합니다.
동적 데이터 마스킹의 목적은 중요한 데이터의 노출을 제한하여 데이터에 대한 액세스 권한이 없는 사용자가 보지 못하게 하는 것이지 데이터베이스 사용자가 데이터베이스에 직접 연결하여 중요한 데이터 조각을 노출하는 과도한 쿼리를 실행하지 못하게 하는 것은 아닙니다.
동적 데이터 마스킹은 열 수준 보안 및 행 수준 보안과 같은 다른 Fabric 보안 기능을 보완됩니다. 데이터베이스의 중요한 데이터를 보호하기 위해 이러한 데이터 보호 기능을 함께 사용하는 것이 좋습니다.
동적 데이터 마스크 정의
해당 열의 데이터를 난독 처리하기 위해 테이블의 열에 마스킹 규칙을 정의할 수 있습니다. 마스크에는 네 가지 유형이 있습니다.
함수 | 설명 | 예제 |
---|---|---|
기본값 | 지정된 필드의 데이터 형식에 따라 전체 마스킹. 문자열 데이터 형식의 경우 필드의 크기가 4자 미만인 경우 XXXX 미만의 XXXX 를 사용합니다(char, nchar, varchar, nvarchar, text, ntext).숫자 데이터 형식(bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real)의 경우 0 값을 사용합니다. 날짜 및 시간 데이터 형식(date, datetime2, datetime, datetimeoffset, smalldatetime, time)의 경우 1900-01-01 00:00:00.0000000 을 사용합니다.이진 데이터 형식의 경우 단일 바이트의 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 로 바뀝니다. |
자세한 예제는 패브릭 데이터 웨어하우스에서 동적 데이터 마스킹을 구현하는 방법을 참조하세요.
사용 권한
작업 영역에 대한 관리자, 구성원 또는 기여자 권한이 없고, 웨어하우스에 대한 상승된 권한이 없는 사용자는 마스킹된 데이터를 볼 수 있습니다.
동적 데이터 마스크로 테이블을 만드는 데에는 특별한 권한이 필요하지 않습니다. 스키마 권한에 대한 표준 CREATE TABLE
및 ALTER
만 있으면 됩니다.
열 마스크를 추가, 대체 또는 제거하려면 테이블에서 ALTER ANY MASK
권한 및 ALTER
권한이 필요합니다. 보안 관리자에게 ALTER ANY MASK
를 부여하는 것이 적절합니다.
테이블에 대한 권한이 있는 SELECT
사용자는 테이블 데이터를 볼 수 있습니다. 마스킹된 것으로 정의된 열에는 마스킹된 데이터가 표시됩니다. 마스킹이 정의된 열에서 UNMASK
마스킹되지 않은 데이터를 검색할 수 있도록 사용자에게 권한을 부여합니다.
데이터베이스에 대한 CONTROL
권한에는 사용자가 마스킹되지 않은 데이터를 볼 수 있도록 하는 ALTER ANY MASK
권한과 UNMASK
권한이 모두 포함됩니다. 관리자, 구성원, 기여자와 같은 관리자 또는 역할은 설계상 데이터베이스에 대한 CONTROL 권한을 가지며 마스킹되지 않은 데이터를 볼 수 있습니다. 웨어하우스에 대한 상승된 권한에는 사용 CONTROL
권한이 포함됩니다.
보안 고려 사항: 유추 또는 무차별 대입 기술을 사용하여 마스킹 바이패스
동적 데이터 마스킹은 애플리케이션에서 사용되는 미리 정의된 쿼리 집합에서 데이터 노출을 제한하여 애플리케이션 개발을 간소화하도록 설계되었습니다. 동적 데이터 마스킹은 데이터에 직접 액세스하는 경우 중요한 데이터를 실수로 노출하지 않도록 하는 데 유용할 수 있지만, 쿼리 권한이 있는 권한 없는 사용자가 실제 데이터에 액세스하기 위해 기술을 사용할 수 있음을 알고 있어야 합니다.
예를 들어 웨어하우스에서 쿼리를 실행할 수 있는 충분한 권한이 있는 사용자가 기본 데이터를 '추측'하고 궁극적으로 실제 값을 추론하려는 경우를 생각해 보겠습니다. [Employee].[Salary]
열에 마스크를 정의하고 이 사용자가 직접 데이터베이스에 연결하여 값 추측을 시작하면서 결국 Employees
테이블의 [Salary]
값을 유추한다고 가정해보겠습니다.
SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;
결과:
ID | 속성 | 급여 |
---|---|---|
62543 | Jane Doe | 0 |
91245 | John Smith | 0 |
이는 동적 데이터 마스킹을 단독으로 사용하여 웨어하우스 또는 SQL 분석 엔드포인트에 대한 쿼리 액세스 권한이 있는 사용자의 중요한 데이터를 완벽하게 보호해서는 안 된다는 것을 보여 줍니다. 중요한 데이터의 노출을 방지하는 데는 적절하지만, 기본 데이터를 유추하려는 악의적인 의도로부터는 보호되지 않습니다.
SQL 세부 권한으로 개체 수준 보안을 적절히 관리하고 항상 필요한 최소 권한 원칙에 따르는 것이 중요합니다.
관련 콘텐츠
- Fabric 데이터 웨어하우징의 작업 영역 역할
- Fabric 데이터 웨어하우징의 열 수준 보안
- Fabric 데이터 웨어하우징의 행 수준 보안
- Microsoft Fabric의 데이터 웨어하우징 보안