SQL Server를 이용한 신용카드 보안

  • 조직이 PCI DSS 준수를 달성 하기 위한 요건

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

 

신용카드가 널리 보급됨에 따라 신용카드로 인한 범죄가 증가하고 있다. 주로 발생하는 범죄가 신용카드 사기 및 신용카드 도난이다. 하지만 이는 데이터 침해에 의한 정보 도난과 비교하면 피해의 규모가 매우 작은 수준이다.

악의적인 해커는 대규모 조직의 전자 기록에 침투, 수 백만 개의 계정 또는 신용카드 정보를 탈취하여 노출 한다. 이러한 데이터 도난은 카드 소송, 벌금, 손실에 대한 손해 배상 및 계정 소유자에게 통지하는 비용으로 회사에게 수백만 달러의 손실을 가져 온다.

 

컴퓨터에 저장하는 신용카드 데이터의 위험을 최소화하기 위해 주요 카드 업체인 American Express, Discover Financial Services, JCB, MasterCard Worldwide, Visa는 지불 카드 업계 보안 표준 위원회를 만들었다. (Payment Card Industry Security Standards Council (PCISSC))

 

PCISSC는 PCI 데이터 보안 표준(PCI DSS)를 만들어 자신의 신용카드를 사용하는 가맹점 및 서비스 제공 업체에 안내하였다.

 

[PCI 데이터 보안 요구 사항]

PCISSC는 신용카드의 주 계정 번호(PAN)로 정의되는 "카드 소유자 데이터"의 보안이 필요하다.

  • 카드 소지자의 이름
  • 신용 카드의 유효 기간
  • 서비스 코드

PCI DSS는 조직 협회 기준을 준수하기 위한 12가지 데이터 보안 요구 사항을 포함 한다.

  1. 카드 소유자 데이터를 보호하기 위해 방화벽을 설치하고 유지한다.
  2. 시스템 암호 및 기타 보안 매개 변수에 대해 공급 업체가 제공하는 기본값을 무시한다.
  3. 저장된 카드 소유자 데이터를 보호한다.
  4. 개방형, 공공 네트워크를 통해 카드 소유자 데이터의 전송을 암호화한다.
  5. 안티바이러스 소프트웨어를 사용하고 정기적으로 업데이트 한다.
  6. 보안 시스템 및 응용 프로그램을 개발하고 유지한다.
  7. 카드 소유자에 대한 액세스를 제한한다.
  8. 컴퓨터에 액세스 할 수 있는 사람에게 각 고유 ID를 부여한다
  9. 카드 소유자 데이터에 대한 물리적 액세스를 제한한다.
  10. 네트워크 자원과 카드 소유자 데이터에 대한 모든 액세스를 추적하고 모니터링 한다.
  11. 정기적으로 보안 시스템에 대한 테스트를 한다.
  12. 정보 보안을 다루는 정책을 유지한다.

 

이러한 요구 사항 중 일부는 데이터베이스에 영향을 주지 않는 네트워크 보안을 포함한다.(1, 5, 9, 11, 12) 그러나 나머지 요구 사항은 데이터베이스에 적용된다. 아래 문서를 통해 자세히 알아 보자.

 

[개별 요구 사항 자세히 보기

PCI DSS 의 12가지 요구 사항은 매우 모호할 수 있다. 예를 들어 요구 사항 3번의 경우 "저장된 카드 소유자 데이터를 보보한다"는 아마도 대부분의 조직은 이미 이렇게 되어 있다고 생각한다.

 

다음 링크는 PCISSC가 발행한 PCI DSS 요구사항 문서 이다.

 

[요구사항 2 : 기본값 제거]

시스템의 기본 요소 제거를 지정한다. 예를 들어 SQL Server 2008을 설치하는 경우에는 기본 암호가 없다. 계정을 만들 때 새 암호를 입력해야 한다. 이때 관리자, 기본암호, 빈 암호 등 낮은 암호화 수준 및 추측 가능한 암호는 허용하지 않아야 한다. 또한 아래 항목은 기본적으로 비활성화 되어 있는데 필요로 하는 경우만 사용할 수 있도록 한다.

  • 임시 원격 쿼리
  • 변경 데이터 캡처(CDC)
  • CLR 통합
  • 데이터베이스간 소유권 체인
  • 데이터 수집기
  • 데이터베이스 메일
  • 데이터베이스 미러링
  • 관리자 전용 연결
  • HTTP 연결
  • .NET Framework
  • OLE Automation XPs
  • 원격 연결
  • 서비스 브로커
  • SQL Full-text Filter Daemon Launcher
  • SQL Mail
  • 웹 도우미
  • xp_cmdshell

 

 

[요구 사항 3 : 카드 소유자 데이터 보호]

카드 소유자에 대한 데이터를 보호하기 위해 SQL Server 2008은 투명한 데이터 암호화(TDE)를 통하여 데이터를 보호한다.

투명한 데이터 암호화에 대해서는 다음 링크를 참고 한다.

 

[요구 사항 4 : 네트워크 암호화]

SQL Server는 SSL(Secure Sockets Layer)암호화 지원을 포함하여 요구 사항을 충족 시킬 수 있는 기능이 있다. SSL 암호화를 사용하려면 MMC(Microsoft Management Colsole) 스냅인을 사용하여 서버에 인증서를 설치 해야 한다.

 

[요구 사항 7 : 데이터 액세스 제한]

신뢰 할 수 없는 네트워크에서 액세스는 제한하고 액세스 권한을 필요로 하는 사용자를 제한하는 것이다. 기본적으로 데이터 액세스를 거부하고 필요한 조직에게 최소 역할을 부여한다.

 

SQL Server는 데이터베이스, 응용프로그램 역할, 객체, 스키마, 유형 및 사용자를 포함하여 지정할 수 있는 보안 개체에 넓은 범위를 제공한다. SQL Server를 사용하면 역할을 선택, 수정, 실행, 보기 및 보안 개체를 제어 할 수 있는 특정 작업을 정의 할 수 있다.

 

SQL Server에서는 디지털 인증서를 사용하여 프로시저, 함수, 트리거 또는 어셈블리에 대해서 보안 설정을 할 수 있다.

 

 

[요구 사항 8 : 고유 ID]

SQL Server 2008은 Windows 인증을 사용하면 상당한 보안을 제공한다. Windows 인증의 올바른 구성은 SQL Server 설치에 대한 다음과 같은 특정 요구 사항을 충족 할 수 있다.

8.1: Assign all users a unique ID to access cardholder data.

8.2: Employ at least one of the following methods to authenticate users: Password or passphrase. Two-factor authentication

8.4: Render all passwords unreadable during transmission and storage by using strong cryptography.

8.5: Make sure that appropriate user authentication and password management are used.

8.5.1: Control the addition, deletion, and modification of user IDs and credentials.

8.5.3: Set first-time passwords to a unique value for each user, and change the password immediately after the first use.

8.5.5: Remove/disable inactive user accounts at least every 90 days.

8.5.9: Change user passwords at least every 90 days.

8.5.10: Require a minimum password length of at least seven characters.

8.5.11: Use passwords that contain both numeric and alphabetic characters.

8.5.12: Do not allow an individual to submit a new password that is the same as any of the last four passwords used.

8.5.13: Limit repeated access attempts by locking out the user ID after not more than six attempts.

8.5.14: Set the lockout duration to a minimum of 30 minutes or until the administrator enables the user ID.

8.5.15: If a session has been idle for more than 15 minutes, require the user to re-enter the password to reactivate the terminal.

8.5.16: Authenticate all access to any database that contains cardholder data.

Windows 인증을 사용하여 SQL Server의 PCI 규정을 준수 할 수 있다.

 

[요구 사항 10 : 추적 액세스]

모든 액세스에 대한 추적을 지정한다. SQL Server는 추적 기능을 제공한다. SQL Server 감사는 지정된 위치에 정의된 이벤트의 자동 기록이 가능하다. 이벤트는 데이터베이스 레벨 및 서버 수준까지 가능하다.

 

데이터베이스 레벨에서는 삭제, 실행, 삽입, 수신, 테이블, 뷰, 저장 프로시저 등의 개체에 대해 감사 할 수 있다. 감사 동작의 결과는 Windows 보안 이벤트 로그 또는 Windows 응용프로그램 이벤트 로그 등 지정된 대상으로 전송 된다.

 

 

파일을 대상으로 사용하려는 경우 파일에 대한 액세스를 제한하기 위해 다음과 같은 보안 조치를 해야 한다.

  • SQL 서비스 계정이 파일에 대한 읽기 및 쓰기 권한이 있는지 확인
  • 감사 관리자는 파일에 대한 읽기 및 쓰기 권한이 있는지 확인
  • 파일과 파일이 들어 있는 폴더를 암호화
  • 파일 자체에 대한 액세스 감사를 정의
  • SQL Server의 다른 인스턴스를 사용하여 파일에 대한 보고서 생성

 

또한 SQL 서버 C2 감사를 활성화 할 수 있다. C2는 소프트웨어 NCSC 보안등급이다. C2 감사는 관리자 권한을 가진 사용자의 활동을 모니터링하고 로그에 대한 액세스를 제한 한다.

 

정책 기반 관리는 관리자가 SQL Server를 실행하는 서버에 대한 규칙을 정의한다. 정책 기반 관리는 노출 영역 구성 도구의 여러 기능을 대체 한다. 정책은 데이터베이스에서 규칙 또는 여러 서버 구성 옵션을 적용할 수 있다. 정책 기반 관리는 PCI 호환 구성을 유지 할 수 있다.

 

 

[참고자료]

http://sqlmag.com/sql-server-2008/securing-credit-card-data-through-sql-server-2008

 




강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36265
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18865
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1701
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2278
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1124
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1961
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1523
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1386
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1886
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1214
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2724
» SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1427
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3771
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2895
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 970
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1227
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 924
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 1061
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1475
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 2033
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 1004
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1090





XE Login