연습 - 데이터베이스 모니터링

완료됨

회사의 보안 관리자가 보낸 경고를 받는다고 상상해 보세요. 네트워크에서 잠재적 보안 위반이 감지되었습니다. 권한이 없는 개인이 악의적인 활동을 통해 데이터베이스에 액세스했을 수 있습니다. 이를 어떻게 추적할 수 있나요?

데이터베이스에서 의심스러운 활동을 적극적으로 모니터링해야 한다는 것은 알고 있습니다. 데이터베이스에서 발생하는 일을 파악하는 데 그치지 않고 악의적 활동의 발생을 방지하려면 어떻게 해야 할까요?

Azure SQL Database에는 데이터베이스에서 일어나고 있는 상황을 추적하는 데 도움이 되는 기본 제공 기능이 있습니다. 악의적인 활동을 모니터링하고 식별 시 이를 경고할 수 있습니다.

Azure SQL Database 감사

감사를 활성화하면 데이터베이스에서 발생되는 작업을 나중에 검사하거나 자동화된 도구로 분석하도록 저장됩니다. 감사는 규정 준수 관리 또는 데이터베이스 사용 방법을 이해하는 데도 사용됩니다. Azure SQL Database에서 Azure 위협 탐지를 사용하려는 경우에도 감사가 필요합니다.

SQL Database 감사를 사용하여 다음을 수행할 수 있습니다.

  • 유지 합니다. 감사할 데이터베이스 동작의 범주를 정의할 수 있습니다.
  • 데이터베이스 활동을 보고합니다. 미리 구성된 보고서 및 대시보드를 사용하여 활동 및 이벤트 보고를 빠르게 시작할 수 있습니다.
  • 보고서를 분석합니다. 의심스러운 이벤트, 특별한 활동 및 추세를 찾을 수 있습니다.

감사 로그는 지정한 Azure Blob Storage 계정에 있는 추가 Blob에 기록됩니다. 감사 정책은 서버 수준 또는 데이터베이스 수준에서 적용할 수 있습니다. 활성화되면 Azure Portal을 사용하여 로그를 보거나 추가 처리 및 분석을 위해 Log Analytics 또는 Event Hub로 보낼 수 있습니다.

실제 감사

다음과 같은 경우가 아니면 서버 Blob 감사 및 데이터베이스 Blob 감사를 함께 활성화하지 않는 것이 좋습니다.

  • 특정 데이터베이스에 대해 다른 스토리지 계정 또는 보존 기간을 사용할 수 있습니다.
  • 서버의 나머지 데이터베이스와는 다른 특정 데이터베이스에 대해 이벤트 형식이나 범주를 감사하려 합니다. 예를 들어 특정 데이터베이스에 대해서만 감사해야 하는 테이블 삽입이 있을 수 있습니다.

그렇지 않으면 서버 수준 BLOB 감사만 사용하도록 설정하고, 모든 데이터베이스에 데이터베이스 수준 감사를 사용하지 않도록 두는 것이 좋습니다.

다음 단계에 따라 시스템에서 감사를 설정합니다.

  1. 샌드박스를 활성화한 계정과 동일한 계정을 사용하여 Azure Portal에 로그인합니다.

  2. 포털의 맨 위에 있는 검색 표시줄에서 서버를 검색한 다음, 포털에서 서버를 선택합니다. NNNNN을 서버 이름의 숫자로 바꿉니다.

  3. 왼쪽 메뉴 창의 보안에서 감사를 선택합니다.

  4. 감사는 기본적으로 해제되어 있습니다. 데이터베이스 서버에서 사용하도록 설정하려면 Azure AQL 감사 사용 설정을 사용으로 전환합니다.

  5. 사용 단추를 선택한 후 스토리지 확인란을 선택 합니다.

  6. 구독을 선택합니다.

  7. 기존 스토리지 계정을 선택하거나 새 스토리지 계정을 만들어 감사를 저장할 수 있습니다. 스토리지 계정은 서버와 동일한 지역을 사용하도록 구성해야 합니다.

    이 경우 새 스토리지 계정을 정의합니다. 스토리지 계정 아래에서 새로 만들기를 선택합니다. 스토리지 계정 만들기 창이 나타납니다. 스토리지 계정의 이름을 <server-name>auditing에서 <server-name>을 논리 서버 이름으로 바꾸어 이름을 지정합니다.

  8. 나머지 옵션은 기본값으로 두고 확인을 선택합니다. 스토리지 설정 창으로 돌아가서 기본값을 그대로 두고 확인을 선택합니다.

  9. 저장을 선택하여 변경 내용을 저장하고, 데이터베이스 서버에서 감사를 사용하도록 설정합니다.

이제 몇 가지 감사 레코드를 생성하고 어떻게 되는지 살펴보세요.

  1. ApplicationUser 사용자로 데이터베이스에 다시 로그인합니다.

    sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
    
  2. 다음 쿼리를 실행합니다.

    SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer;
    GO
    
  3. Azure Portal로 돌아가 SQL Server의 왼쪽 메뉴 창에서 SQL 데이터베이스를 선택하고 마켓플레이스 데이터베이스를 선택합니다.

  4. marketplace 데이터베이스의 왼쪽 메뉴 창에서 보안 아래의 감사를 선택합니다.

  5. 서버 수준에서 감사를 사용하도록 설정했기 때문에 여기에서 감사를 사용할 수 있습니다. 맨 위에 메뉴 모음에서 감사 로그 보기를 선택하여 로그를 봅니다.

  6. ApplicationUser사용자 이름BATCH COMPLETED이벤트 유형이 있는 감사 기록이 하나 이상 표시되어야 합니다. 그 중 하나는 실행한 쿼리의 세부 정보를 포함해야 합니다. 인증 실패 및 성공과 같은 다른 이벤트도 볼 수 있습니다. 이벤트의 전체 세부 정보를 보려면 모든 레코드를 선택합니다.

감사 로그의 예제 이벤트를 보여 주는 스크린샷

이러한 작업은 데이터베이스 서버 수준에서 감사를 구성합니다. 감사는 서버의 모든 데이터베이스에 적용됩니다. 데이터베이스 수준에서 감사를 구성할 수도 있습니다.

이러한 로그를 사용하여 데이터베이스의 보안을 강화하는 다른 기능을 살펴보세요.

Azure SQL Database에 대한 Advanced Data Security

ADS(Advanced Data Security)는 데이터 검색 및 분류, 취약성 평가 및 Advanced Threat Protection을 포함하여 고급 SQL 보안 기능을 제공합니다.

  • 데이터 검색 및 분류(현재 미리 보기)는 데이터베이스에 있는 중요한 데이터를 검색, 분류, 레이블 지정 및 보호하기 위해 Azure SQL Database에 기본 제공된 기능을 제공합니다. 데이터베이스 분류 상태에 대한 가시성을 제공하고, 데이터베이스 내 및 해당 경계 외부의 중요한 데이터에 대한 액세스를 추적하는 데 사용할 수 있습니다.
  • 취약성 평가는 잠재적 데이터베이스 취약성을 검색 및 추적할 수 있고 해결하는 데 도움이 될 수 있는 구성하기 간편한 서비스입니다. 보안 상태에 대한 가시성을 제공하며, 보안 문제를 해결하고 데이터베이스 보안을 강화하기 위해 실행할 수 있는 단계를 포함합니다.
  • Advanced Threat Protection은 비정상적이며 잠재적으로 유해할 수 있는 데이터베이스 액세스 또는 악용 시도를 나타내는 비정상적인 활동을 탐지합니다. 지속적으로 의심스러운 활동에 대한 데이터베이스를 모니터링하고, 잠재적인 취약점, SQL 삽입 공격 및 비정상 데이터베이스 액세스 패턴에 대한 보안 경고를 즉시 제공합니다. Advanced Threat Protection 경고는 의심스러운 활동에 대한 세부 정보를 제공하고 위협을 조사하고 완화하는 방법에 대한 조치를 권장합니다.

설정 및 구성

데이터베이스에서 ADS를 사용하도록 설정합니다. ADS는 서버 수준 설정이므로 서버에서 시작합니다.

  1. Azure Portal로 돌아가서 SQL Server로 이동합니다. 페이지 맨 위에 있는 검색 표시줄에서 _<server-name>을 검색한 다음 서버를 선택합니다.

  2. 왼쪽 메뉴 창의 보안 아래에서 클라우드용 Microsoft Defender를 선택합니다.

  3. Microsoft Defender for SQL 사용을 선택합니다.

  4. 구독 수준에서 사용하도록 설정됨 메시지 옆에 있는 구성을 선택합니다. 서버 설정 창이 나타납니다.

  5. 주기적 되풀이 검사은 기본적으로 사용하도록 설정되어 있습니다. 주간 검사가 트리거되면 제공된 이메일 주소로 검사 결과 요약이 전송됩니다. 이 경우 이 기능을 해제하세요. 관리자 및 구독 소유자에게도 메일 알림 보내기는 서비스 관리자에게 위협을 전송하도록 기본적으로 설정되어 있습니다. 상단에 있는 저장을 선택하여 설정을 저장합니다.

  6. 고급 위협 방지 설정에서 연락처 세부 정보 추가...를 선택하여 클라우드용 Defender 이메일 알림 창을 엽니다. 여기에서, 필요한 경우 취약성 평가 및 Advanced Threat Protection에 대한 알림 이메일을 전송할 위치를 세미콜론으로 구분된 이메일 주소 목록으로 정의할 수 있습니다. 관리자 및 구독 소유자에게도 메일 알림 보내기는 서비스 관리자에게 위협을 전송하도록 기본적으로 설정되어 있습니다.

  7. 감사 사용....을 선택하여 Azure SQL 감사를 켤 수도 있습니다.

  8. 변경 내용을 적용하려면 저장을 선택합니다.

취약성이 탐지되면 이메일 알림을 받게 됩니다. 이메일에는 발생한 상황과 수행할 작업에 대한 간략한 설명이 있습니다.

클라우드용 Microsoft Defender의 알림 경고 예제를 보여 주는 스크린샷

데이터 검색 및 분류

  1. marketplace 데이터베이스로 이동합니다. Azure Portal 맨 위에 있는 검색 창에서 마켓플레이스를 검색한 다음 데이터베이스를 선택합니다.

  2. 왼쪽 메뉴 창의 보안에서 데이터 검색 및 분류를 선택합니다.

분류 탭은 보호해야 하는 테이블 내의 열을 표시합니다. 일부 열은 중요한 정보를 포함하고 있거나 다른 국가 또는 지역에서 기밀로 간주될 수 있습니다.

데이터 검색 및 분류 창의 분류 탭을 보여주는 스크린샷

열에 보호를 구성해야 하는 경우 메시지가 나타납니다. 이 메시지는 분류 권장 사항이 있는 15개 열 같은 형식으로 되어 있습니다. 텍스트를 선택하여 권장 사항을 볼 수 있습니다.

해당 열 옆에 있는 확인 표시를 선택하여 분류하려는 열을 선택하거나 스키마 헤더의 왼쪽에 있는 확인란을 선택합니다. 선택한 권장 사항 적용 옵션을 선택하여 분류 권장 사항을 적용합니다.

다음으로 열을 편집한 다음 데이터베이스의 정보 유형 및 민감도 레이블을 정의합니다. 저장을 선택하여 변경 내용을 저장합니다.

권장 사항을 성공적으로 관리하면 활성 권장 사항이 표시되지 않습니다.

보안 취약성

왼쪽 메뉴 창의 보안 아래에서 클라우드용 Microsoft Defender를 선택합니다.

권장 사항 섹션에는 데이터베이스에 대한 구성 문제와 관련 위험이 나열됩니다.

권장 사항을 선택합니다. 권장 사항 창에는 위험 수준, 적용할 데이터베이스, 취약성에 대한 설명 및 문제 해결에 권장되는 수정과 같은 세부 정보가 표시됩니다. 수정을 적용하여 문제를 해결합니다. 모든 취약성은 해결돼야 합니다.

보안 인시던트 및 경고

이 섹션에는 탐지된 위협 목록이 표시됩니다.

권장 사항에 따라 문제를 해결합니다. SQL 삽입 경고와 같은 문제의 경우 쿼리를 살펴보고 코드에서 해당 쿼리가 실행되는 위치로 거슬러 이동하여 작업할 수 있습니다. 일단 찾았으면 더 이상 문제가 되지 않도록 코드를 다시 작성해야 합니다.