중요한 데이터에 대한 규정 준수 제어 구현

완료됨

데이터베이스를 마이그레이션한 후 규정 준수 제어를 구현하는 것은 데이터가 안전하게 유지되고 관련 규정을 준수하는지 확인하는 데 중요합니다. Azure SQL과 같은 새 환경으로 마이그레이션하면 새로운 보안 기능과 특징이 도입됩니다.

서버 및 데이터베이스 감사 살펴보기

Azure SQL 감사는 데이터베이스 이벤트를 추적하고 Azure Storage 계정, Log Analytics 작업 영역 또는 이벤트 허브에 저장된 감사 로그에 기록합니다. 또한 규정 준수 유지 관리, 활동 패턴 분석 및 잠재적으로 보안 위반을 나타낼 수 있는 편차 감지를 용이하게 합니다.

서버 수준 및 데이터베이스 수준 정책을 정의할 수 있습니다. 서버 정책은 Azure의 새 데이터베이스와 기존 데이터베이스를 자동으로 다룹니다.

  • 서버 감사를 사용하도록 설정하면 개별 감사 설정에 관계없이 데이터베이스에 대한 감사가 트리거됩니다.
  • 데이터베이스 수준에서 감사를 사용하도록 설정하여 서버 및 데이터베이스 정책이 동시에 공존할 수 있도록 할 수 있습니다.
  • 읽기 전용 복제본에 대한 감사는 자동으로 사용하도록 설정됩니다.

다음 시나리오를 제외하고 서버 감사와 데이터베이스 감사를 함께 사용하도록 설정하지 않는 것이 가장 좋습니다.

  • 특정 데이터베이스에 대해 고유한 스토리지 계정, 보존 기간 또는 Log Analytics 작업 영역이 필요합니다.

  • 서버의 다른 이벤트 유형과 구별되는 고유한 이벤트 유형 또는 범주를 가진 특정 데이터베이스에 대한 감사가 필요합니다.

다른 모든 케이스의 경우 서버 수준 감사만 활성화하고 모든 데이터베이스에 대해 데이터베이스 수준 감사를 비활성화로 유지하는 것이 좋습니다.

SQL Database에 대한 기본 감사 정책에는 다음 작업 그룹 집합이 포함됩니다.

작업 그룹 정의
BATCH_COMPLETED_GROUP 데이터베이스에 대해 실행된 모든 쿼리 및 저장 프로시저를 감사합니다.
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 이는 보안 주체가 데이터베이스에 로그인하는 데 성공했음을 나타냅니다.
FAILED_DATABASE_AUTHENTICATION_GROUP 이는 보안 주체가 데이터베이스에 로그인하는 데 실패했음을 나타냅니다.

Azure SQL 서버의 모든 데이터베이스에 대해 감사를 사용 설정하려면 서버에 대한 주 블레이드의 보안 섹션에서 감사를 선택합니다.

Screenshot of auditing option in the Security section of a SQL server.

감사 페이지를 사용하면 감사 로그 대상을 설정하고 Azure SQL 감사와 동일한 로그 대상에서 Microsoft 지원 엔지니어 작업을 추적할지 아니면 다른 로그 대상을 선택할지를 고를 수도 있습니다.

Screenshot of the Auditing page of a SQL server.

Log Analytics 작업 영역에서 다음 쿼리를 실행하여 Microsoft 지원 작업의 감사 로그를 검토할 수 있습니다.

AzureDiagnostics
| where Category == "DevOpsOperationsAudit"

Important

Azure SQL 데이터베이스 및 Azure SQL Managed Instance 감사 서비스는 최적의 가용성과 성능을 위해 미세 조정되었습니다. 그러나 매우 높은 활동 또는 상당한 네트워크 정체 조건에서 감사된 특정 이벤트가 기록되지 않을 수 있다는 점에 유의할 필요가 있습니다.

중요한 레이블 감사

데이터 분류와 결합하면 중요한 데이터에 대한 액세스를 모니터링할 수도 있습니다. Azure SQL 감사 기능이 개선되어 data_sensitivity_information이라는 감사 로그에 새 필드가 포함되었습니다.

이 필드는 쿼리에서 반환된 데이터의 민감도 레이블을 로깅하여 분류된 열에 대한 액세스를 보다 쉽게 추적할 수 있는 방법을 제공합니다.

Screenshot of the Information Protection page from Azure portal.

감사는 데이터베이스 엔진에서 발생하는 이벤트의 추적과 기록으로 구성됩니다. Azure SQL 감사를 사용하면 이를 사용 설정하는 데 필요한 구성 단계가 간소화되므로 SQL Database 및 SQL Managed Instance에 대한 데이터베이스 활동을 더 쉽게 추적할 수 있습니다.

동적 데이터 마스킹

동적 데이터 마스킹은 노출을 제한하기 위해 데이터를 난독 처리하여 작동합니다. 중요한 정보에 액세스할 필요가 없는 사용자는 열을 볼 수 있지만 실제 데이터는 볼 수 없습니다. 동적 데이터 마스킹은 프레젠테이션 계층에서 작동하며, 마스킹되지 않은 데이터는 권한이 높은 사용자에게 계속 표시됩니다.

동적 데이터 마스킹은 애플리케이션 또는 데이터베이스를 최소한으로 수정해야 하는 이점을 제공합니다. Azure Portal 또는 T-SQL을 사용하여 편리하게 구성할 수 있습니다.

Screenshot of the dynamic data masking T-SQL commands.

PhoneNumberEmailAddress 열은 테이블에 대한 SELECT 권한만 있는 DDMDemo 사용자에게 숨겨져 있습니다. 전화 번호는 열의 마지막 4자리를 제외한 모든 숫자를 대체하는 부분 기능을 사용하여 마스킹되므로 사용자는 전화 번호의 마지막 4자리를 볼 수 있습니다. 이 마스킹은 사용자 지정 함수로 간주됩니다. T-SQL 외에도 Azure SQL Database를 사용하는 경우 Azure Portal에서 동적 마스킹 규칙을 만들 수 있습니다.

Screenshot of how to add masking rule in 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()')
숫자 이 마스킹 형식은 숫자 열에 사용해야 합니다. 실제 값이 아니라 마스킹된 값으로 난수를 표시합니다. 쿼리마다 다른 숫자가 표시됩니다. 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 가져오기 및 내보내기를 실행하면 내보낸 데이터 파일에는 마스킹된 데이터가 포함되고 가져온 데이터베이스에는 비활성 마스킹된 데이터가 포함됩니다.