동적 데이터 마스킹 구현
동적 데이터 마스킹은 노출을 제한하기 위해 데이터를 난독 처리하여 작동합니다. 중요한 데이터를 볼 필요가 없는 사용자는 데이터가 포함된 열을 볼 수 있지만 실제 데이터 자체는 볼 수 없습니다. 동적 데이터 마스킹은 프레젠테이션 계층에서 작동하며, 마스킹되지 않은 데이터는 항상 높은 권한이 있는 사용자가 볼 수 있습니다.
동적 데이터 마스킹은 애플리케이션 또는 데이터베이스를 많이 수정할 필요가 없다는 장점이 있습니다. 아래와 같이 Azure Portal 또는 T-SQL 사용하여 구성할 수 있습니다.
위의 예제에서 PhoneNumber 및 EmailAddress 열은 테이블에 대한 SELECT
권한만 있는 DDMDemo 사용자에게 숨겨져 있습니다. 전화 번호는 열의 마지막 4자리를 제외한 모든 숫자를 대체하는 partial 기능을 사용하여 마스킹되므로 사용자는 전화 번호의 마지막 4자리를 볼 수 있습니다. 이 마스킹은 사용자 지정 함수로 간주됩니다. T-SQL 외에도 Azure SQL Database를 사용하는 경우 Azure Portal에서 동적 마스킹 규칙을 만들 수 있습니다.
Azure Portal에서 데이터베이스로 이동하고 데이터베이스용 기본 블레이드의 보안 섹션에서 동적 데이터 마스킹을 선택하여 마스킹 규칙을 추가하는 화면에 도달할 수 있습니다.
동적 데이터 마스킹에서는 사용할 수 있는 다음 마스킹 패턴을 지원합니다.
마스킹 함수 | 정의 | T-SQL 예제 |
---|---|---|
기본값 | 값의 일부를 사용자에게 노출하지 않고 열의 데이터를 완전히 마스킹합니다. 문자열 값으로는 XXXX, 숫자로는 0, 날짜 값으로는 01.01.1900이 표시됩니다. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
신용 카드 | 사용자가 마지막 4자리를 볼 수 있도록 마지막 4개의 문자를 제외한 모두를 마스킹합니다. 이 마스킹은 신용 카드 번호의 마지막 4자리는 확인해야 하지만 전체 숫자를 볼 필요는 없는 고객 서비스 에이전트에 유용할 수 있습니다. 데이터는 신용 카드 번호 XXXX-XXXX-XXXX-1234의 일반적인 형식으로 표시됩니다. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
첫 번째 문자와 후행 도메인 접미사만 마스킹되지 않습니다. 예: "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
Number | 이 마스킹 형식은 숫자 열에 사용해야 합니다. 실제 값이 아니라 마스킹된 값으로 난수를 표시합니다. 쿼리마다 다른 숫자가 표시됩니다. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
사용자 지정 문자열 | 이 옵션을 사용하면 텍스트를 임의의 값으로 마스킹하고 마스킹된 값의 양 끝에 사용자 지정된 문자 수를 표시할 수 있습니다. 마스킹될 값의 길이가 마스크가 표시되도록 지정하는 문자 수보다 작거나 같으면 마스킹된 문자만 표시됩니다. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
사용자가 마스킹이 정의된 열에서 마스킹되지 않은 데이터를 검색할 수 있도록 하려면 UNMASK
권한을 명시적으로 부여해야 합니다.
참고
결과에 따라 유추를 사용하여 마스킹된 데이터를 식별할 수 있습니다. 데이터 마스킹을 사용하는 경우 사용자가 임시 쿼리를 실행하는 기능도 제한해야 합니다.
이러한 이유로 중요한 데이터를 더 잘 보호하기 위해 감사, 암호화, 행 수준 보안과 같은 다른 보안 기능과 함께 동적 데이터 마스킹을 사용하는 것이 좋습니다.
사용 사례
데이터 마스킹은 간단하고 간단한 기능이며 다음을 비롯한 다양한 시나리오에 적합합니다.
데이터베이스에 직접 액세스할 수 없는 애플리케이션 사용자로부터 데이터를 마스킹합니다.
사용자 그룹에 대한 개인 정보를 제한합니다.
데이터의 항목 간 관계를 유지하면서 중요한 정보를 보호해야 하는 외부 공급업체에 마스킹된 데이터를 제공합니다.
UNMASK
권한이 없는 사용자를 사용하여 개발 목적으로 프로덕션 데이터베이스의 복사본을 더 낮은 환경으로 내보냅니다. 데이터 내보내기 형식은 마스킹됩니다.
데이터 가져오기 및 내보내기
SELECT INTO
또는 INSERT INTO
를 사용하여 마스킹된 열에서 다른 테이블로 데이터를 복사하면 대상 테이블에 마스킹된 데이터가 생성됩니다.
UNMASK
권한이 없는 사용자가 SQL Server 가져오기 및 내보내기를 실행하면 내보낸 데이터 파일에는 마스킹된 데이터가 포함되고 가져온 데이터베이스에는 비활성 마스킹된 데이터가 포함됩니다.
동적 데이터 마스킹의 작동 방식에 대한 자세한 내용은 동적 데이터 마스킹을 참조하세요.