연습 - 전송, 미사용 및 표시에서 데이터 보호

완료됨

marketplaceDb 데이터베이스에는 실제 주소, 메일 주소 및 전화 번호와 같이 중요한 정보가 저장됩니다. 이 정보가 노출되면 악의적인 공격자는 이를 사용하여 비즈니스나 고객에게 해를 끼칠 수 있습니다. 암호화 및 데이터 마스킹을 사용하여 데이터베이스의 보안을 강화하는 방법을 봅니다.

TLS 네트워크 암호화

Azure SQL Database는 항상 모든 연결에 TLS(전송 계층 보안) 암호화를 적용하여 데이터베이스와 클라이언트 간에 전송되는 모든 데이터를 암호화합니다. TLS 암호화를 사용하면 앱 서버와 데이터베이스 간의 트래픽을 가로챈 사람이 데이터를 읽을 수 없게 할 수 있습니다. TLS 암호화는 인터넷 상의 트래픽을 보호하는 표준이며, 이 경우 Azure SQL 데이터베이스로의 네트워크 트래픽은 기본적으로 안전합니다.

투명한 데이터 암호화

Azure SQL Database는 TDE(투명한 데이터 암호화)를 사용하여 미사용 데이터를 보호합니다. TDE는 애플리케이션을 변경하지 않고 미사용 데이터베이스, 연결된 백업 및 트랜잭션 로그 파일을 실시간으로 암호화 및 암호 해독을 수행합니다. 투명 데이터 암호화는 데이터베이스 암호화 키를 사용하여 페이지 수준에서 데이터의 실시간 I/O 암호화 및 암호 해독을 수행합니다. 각 페이지는 메모리로 읽을 때 해독된 다음, 디스크에 쓰기 전에 암호화됩니다.

기본적으로 TDE는 새로 배포된 모든 Azure SQL 데이터베이스에 대해 활성화됩니다. 데이터 암호화가 해제되지 않았는지 확인해야 합니다. 이전 Azure SQL Server 데이터베이스에서 TDE를 비활성화했을 수도 있습니다.

marketplaceDb 데이터베이스에서 TDE가 구성된 Azure Portal을 확인합니다.

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

  2. Azure Portal의 맨 위에 있는 검색 창에서 marketplaceDb를 검색한 다음, 포털에서 데이터베이스를 선택합니다.

  3. 왼쪽 메뉴 창의 보안에서 데이터 암호화를 선택합니다.

  4. 데이터 암호화 옵션에서 데이터 암호화켜기로 설정되어 있는지 확인합니다. 암호화 상태가 암호화로 표시되는지도 확인합니다.

새 데이터베이스는 기본적으로 암호화되므로 데이터베이스를 만드는 즉시 데이터가 디스크에서 암호화되게 할 수 있습니다.

참고 항목

Azure에는 Azure SQL 데이터베이스를 비롯한 사용자 환경의 보안을 확인할 수 있는 클라우드용 Microsoft Defender라는 기본 제공 서비스가 포함되어 있습니다. 클라우드용 Microsoft Defender는 TDE가 활성화되지 않은 데이터베이스에 플래그를 지정하여, 이를 보고하고 데이터 보안 조치를 취할 수 있게 해 줍니다.

동적 데이터 마스킹

이전 단원에서 쿼리를 실행할 때 데이터베이스의 일부 정보가 중요하다는 사실을 알았을 것입니다. 데이터에 액세스할 수 있는 모든 사람에게 보이기를 원하지 않는 전화 번호나 이메일 주소, 기타 정보가 있습니다.

사용자가 전체 전화 번호 또는 이메일 주소를 볼 수 없도록 하려는 경우에도 일부 고객 서비스 담당자에게는 고객을 파악할 수 있도록 일부 데이터를 제공하기를 원할 수 있습니다. Azure SQL Database의 동적 데이터 마스킹 기능을 사용하면 사용자에게 표시되는 데이터를 제한할 수 있습니다. 동적 데이터 마스킹은 지정된 데이터베이스 필드에 대하여 쿼리의 결과 집합에서 중요한 데이터를 숨기는 정책 기반 보안 기능입니다. 이때 데이터베이스의 데이터 자체는 변경되지 않습니다.

데이터 마스킹 규칙은 마스크를 적용할 열과 데이터를 마스킹하는 방법으로 구성됩니다. 고유한 마스킹 형식을 만들거나 다음과 같은 표준 마스크 중 하나를 사용할 수 있습니다.

  • 기본값 - 해당 데이터 형식에 대한 기본값을 대신 표시합니다.
  • 신용 카드값에서 마지막 4자리만 숫자로 표시하고, 나머지 숫자는 모두 소문자 x로 표시합니다.
  • 이메일 - 이메일 계정 이름의 첫 번째 문자를 제외한 모든 문자 및 도메인 이름을 숨깁니다.
  • 숫자 - 값 범위에 속한 임의의 숫자를 지정합니다. 예를 들어, 신용 카드의 유효 기간이 만료되는 월과 연도에서 월은 1~12 범위에서 임의의 월을 선택하고, 연도는 2018~3000 범위에서 선택할 수 있습니다.
  • 사용자 지정 문자열 - 데이터의 시작에서 노출되는 문자 수, 데이터의 끝에서 노출되는 문자 수 및 데이터의 나머지 부분에 대해 반복할 문자를 설정할 수 있습니다.

데이터베이스 관리자가 열을 쿼리하는 경우에도 원래 값이 계속 표시됩니다. 관리자가 아닌 경우에는 마스킹된 값이 표시됩니다. 마스킹 목록에서 제외된 SQL 사용자에게는 마스킹되지 않은 버전을 추가하여 다른 사용자들은 해당 버전을 보도록 할 수 있습니다.

marketplaceDb 데이터베이스에서 데이터 마스킹이 어떻게 작동하는지 봅니다.

  1. 포털의 marketplaceDb 데이터베이스 패널에서 왼쪽 메뉴 창의 보안 아래의 동적 데이터 마스킹을 선택합니다.

    마스킹 규칙 화면에는 기존 동적 데이터 마스크 및 잠재적으로 동적 데이터 마스크가 적용되어야 하는 열에 대한 권장 사항의 목록이 표시됩니다.

    샘플 데이터베이스의 다양한 데이터베이스 열에 대한 권장 마스크 목록을 보여주는 Azure Portal의 스크린샷.

  2. 마지막 4자리 숫자만 표시하는 전화 번호에 마스크를 추가합니다. 맨 위에 있는 마스크 추가 단추를 선택하여 마스킹 규칙 추가 대화 상자를 엽니다.

  3. 다음 값을 선택합니다.

    설정
    스키마 SalesLT
    테이블 고객
    Phone(nvarchar)
    마스킹 필드 형식 사용자 지정 문자열(접두사 [패딩] 접미사)
    공개된 접두사 0
    패딩 문자열 XXX-XXX-
    공개된 접미사 4
  4. 추가를 선택하여 마스킹 규칙을 추가합니다.

    마스킹 규칙을 추가할 값을 보여주는 Azure Portal의 스크린샷.

  5. 이메일 주소를 하나 더 추가합니다. 맨 위에 있는 마스크 추가 단추를 다시 선택하여 마스킹 규칙 추가 대화 상자를 엽니다.

    설정
    스키마 SalesLT
    테이블 고객
    EmailAddress(nvarchar)
    마스킹 필드 형식 이메일(aXXX@XXX.com)
  6. 추가를 선택하여 마스킹 규칙을 추가합니다.

  7. 각각 새 마스크가 마스킹 규칙 목록에 추가됩니다. 저장을 선택하여 마스크를 적용합니다.

데이터 마스킹이 쿼리를 어떻게 변경하는지 봅니다.

  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
    

    출력이 어떻게 마스킹되는지 봅니다.

    FirstName     LastName      EmailAddress         Phone
    ------------- ------------- -------------------- ------------
    Orlando       Gee           oXXX@XXXX.com        XXX-XXX-0173
    Keith         Harris        kXXX@XXXX.com        XXX-XXX-0127
    Donna         Carreras      dXXX@XXXX.com        XXX-XXX-0130
    Janet         Gates         jXXX@XXXX.com        XXX-XXX-0173
    ...
    

만든 마스킹 규칙을 사용하면 데이터는 지정하는 형식으로 마스킹됩니다. 이러한 규칙을 통해 고객 서비스 담당자는 전화 번호의 마지막 4자리로 고객을 확인할 수는 있지만 전체 번호와 고객의 메일 주소는 볼 수 없게 됩니다.