데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1890
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1423
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1321
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1833
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1161
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2392
» SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1364
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3308
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2735
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 877
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1168
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 882
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 984
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1362
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1809
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 958
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1046
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1187
1873 SQL Server IO and Latch 설명 jevida(강성욱) 2016.10.11 3172
1872 마지막 백업 시간 및 DBCC 확인 [1] jevida(강성욱) 2016.10.08 1591





XE Login