본문으로 건너뛰기
중급약 16분

Fortify — 규제 산업을 위한 통합 보안 솔루션

레슨 1의 SonarQube와 같은 SAST 계열이지만 체급과 목적이 다르다. Fortify가 왜 "더 강력해서"가 아니라 "규제 대응과 통합 리포팅이 필요해서" 선택되는지, 오픈소스 조합 대비 트레이드오프는 무엇인지 판단 기준을 익힌다.

  • #Fortify
  • #SAST
  • #DAST
  • #컴플라이언스
  • #엔터프라이즈

개념

같은 SAST 계열, 다른 체급

레슨 1에서 SonarQube로 코드를 정적으로 분석하고 Quality Gate를 걸어봤다. Fortify (Micro Focus를 거쳐 현재 OpenText 제품군)도 같은 SAST 계열에서 출발한다 — 소스 코드를 실행하지 않고 훑어 취약점 후보를 찾는다.

하지만 두 도구는 겨냥하는 조직이 다르다.

SonarQubeFortify
포지션오픈소스 진영의 사실상 표준상용 엔터프라이즈 통합 솔루션
범위SAST 중심(코드 품질 + 보안)SAST + DAST + 의존성 분석을 한 플랫폼에 통합
주 사용처규모를 가리지 않는 개발팀금융·공공기관·방위산업 등 규제가 엄격한 대규모 조직
결과물대시보드와 Quality Gate대시보드 + 감사·규정 준수 리포트
비용무료판 존재, 유료판도 상대적으로 저렴매우 높은 라이선스 비용

하나의 플랫폼 안에 SAST와 DAST가 같이 있다

모듈 16(레슨 12)에서 다룬 ZAP·Burp Suite는 실행 중인 애플리케이션을 밖에서 공격해보는 DAST 였다. 레슨 1의 SonarQube는 코드를 읽는 SAST 였다. 둘은 보는 각도가 달라서 실무에서는 보통 둘 다 쓴다.

Fortify는 이 둘을 제품군 안에 함께 담는다.

Fortify Static Code Analyzer (SCA)   → SAST. 소스 코드 분석
Fortify WebInspect                   → DAST. 실행 중인 앱을 외부에서 스캔
Software Security Center (SSC)       → 두 결과를 한 곳에 모아 관리·리포팅

핵심은 세 번째 줄이다. 결과를 모으는 자리가 제품 안에 이미 있다는 것.

"기능이 더 강력해서"가 아니다

여기서 자연스럽게 나오는 질문이 있다. SonarQube + ZAP + SQLmap 같은 오픈소스 조합으로 대체하면 되지 않나? 개별 기능만 보면 대체로 된다.

문제는 그다음이다. 오픈소스 도구를 조합하면 각각이 서로 다른 형식의 결과 를 뱉는다. 그리고 규제 산업에서 진짜 일이 되는 건 스캔이 아니라 그 뒤다.

감사 대응에서 실제로 요구되는 것
- 이번 릴리스에 어떤 취약점이 몇 건 발견됐는가
- 각 항목이 언제, 누가, 어떤 근거로 조치 또는 예외 처리됐는가
- 그 조치가 어떤 규정 항목(PCI DSS, OWASP Top 10 등)에 대응하는가
- 지난 분기 대비 위험 추이는 어떠한가

오픈소스 조합에서는 이 네 줄을 만드는 작업 자체가 매번 수작업 이 된다. 누군가 스프레드시트를 열고 세 도구의 결과를 붙여넣고 중복을 지우고 규정 항목에 매핑한다. 감사가 분기마다 온다면 이 노동도 분기마다 반복된다.

Fortify가 파는 것이 바로 이 지점이다. 통합·추적·리포팅을 제품이 기본 기능으로 해결해준다. 선택 이유는 "탐지 성능이 더 좋아서"가 아니라 "규제 대응과 통합 리포팅이 필요해서" 다. 이 구분을 못 하면 도입 논의에서 엉뚱한 비교표를 만들게 된다.

실무에서 왜 필요한가

채용공고에 등장하면 읽어야 할 신호

모듈 22(레슨 5 계열)에서 HP ALM 같은 엔터프라이즈 도구를 다룰 때와 같은 독법이 적용된다. 채용공고의 도구 이름은 기능 요구사항이기 이전에 그 조직이 어떤 환경인지 알려주는 신호 다.

"Fortify 운영 경험" 이 적힌 공고에서 읽어낼 것
- 외부 감사·규제 심사를 정기적으로 받는 조직일 가능성이 높다
- 보안 요구사항이 릴리스 게이트로 걸려 있을 가능성이 높다
- 도구 도입·운영에 예산을 쓸 수 있는 규모다
- 반대로, 절차가 무겁고 릴리스 주기가 느릴 가능성도 함께 높다

QA 지원자 입장에서 Fortify를 직접 설치해볼 일은 거의 없다. 개인이 라이선스를 구할 수 있는 종류의 도구가 아니다. 그래서 이 레슨의 목표는 사용법 습득이 아니라 "왜 이 조직이 이 도구를 쓰는지 설명할 수 있는 것" 이다. 면접에서 유효한 답은 "써봤습니다"가 아니라 "규제 대응 때문에 통합 솔루션이 필요한 환경이라고 이해합니다"에 가깝다.

트레이드오프를 솔직하게

Fortify는 만능이 아니고, 오히려 대부분의 팀에는 과하다.

  • 라이선스 비용이 매우 높다. 스타트업이나 중소 규모 팀이 감당할 수준이 아니다. 비용만으로 후보에서 빠지는 경우가 대부분이다.
  • 도입·운영 복잡도가 크다. 전담 인력, 룰셋 튜닝, 서버 운영이 따라붙는다. 도구를 켜두는 것과 제대로 쓰는 것은 다른 일이다.
  • 스캔이 느리다. 대규모 코드베이스 전체 스캔은 시간이 오래 걸려, 레슨 1에서 배운 것처럼 매 커밋마다 돌리는 방식과 잘 맞지 않는다.
  • 오탐은 여전히 나온다. 상용이라고 오탐이 사라지지 않는다. 모듈 16(레슨 12)에서 배운 "스캐너는 후보를 줄 뿐"이라는 원칙은 그대로다.

그럼에도 규제 준수가 선택이 아닌 조직 에서는 마땅한 대안이 없다. 감사에서 "저희는 오픈소스 도구를 조합해 쓰고 결과는 수작업으로 취합합니다"라고 답했을 때, 그 취합 과정의 신뢰성을 증명하는 부담이 전부 조직에 돌아오기 때문이다.

실습 과제

과제 1 — 어느 조직에 맞는가 판단하기 (8분)

아래 세 조직에 SonarQube + ZAP 조합과 Fortify 중 무엇을 권할지, 그리고 그 판단의 결정적 근거 한 가지 를 적는다.

  1. 개발자 15명 규모의 커머스 스타트업. 배포는 하루 여러 번.
  2. 시중은행의 인터넷뱅킹 개발실. 금융감독 관련 외부 심사를 정기적으로 받는다.
  3. 공공기관 사업을 주로 수주하는 SI 업체. 사업마다 보안성 검토 산출물을 제출해야 한다.
해설 보기
  1. SonarQube + ZAP 조합. 비용과 속도가 결정적이다. 하루 여러 번 배포하는 팀에 전체 스캔이 느린 도구를 물리면 파이프라인이 막힌다. 감사 요구가 없으므로 통합 리포팅의 값이 발생하지 않는다.
  2. Fortify 쪽. 결정적 근거는 탐지 성능이 아니라 외부 심사에 제출할 근거 문서를 제품이 생성해준다 는 점이다. 수작업 취합의 신뢰성을 매번 증명해야 하는 부담이 사라진다.
  3. 판단 보류 — 사업 규모에 달렸다. 산출물 제출이 반복된다는 점은 통합 솔루션과 맞지만, SI 업체의 예산 구조상 라이선스를 감당하기 어려울 수 있다. 실제로는 발주처가 도구를 지정하는 경우도 많아, "우리가 고른다"는 전제부터 확인해야 한다.

과제 2 — 도입 반대 논리 세우기 (8분)

"보안을 강화해야 하니 Fortify를 도입하자"는 제안이 들어온 상황에서, QA 담당자로서 먼저 확인해야 할 질문 세 가지 를 적는다. 도구를 반대하기 위해서가 아니라, 이 도구가 해결하는 문제(통합·감사)와 조직이 실제로 겪는 문제가 같은지 확인하기 위한 질문이어야 한다.

자가 체크리스트

  • Fortify가 SonarQube와 같은 SAST 계열이면서 포지션이 어떻게 다른지 설명할 수 있다
  • Fortify가 SAST와 DAST를 한 플랫폼에 통합한다는 것이 왜 핵심 가치인지 설명할 수 있다
  • 오픈소스 조합의 한계가 "탐지 능력"이 아니라 "결과 통합과 감사 대응"임을 설명할 수 있다
  • 채용공고의 Fortify 언급에서 조직의 규제 수준을 읽어낼 수 있다
  • 높은 비용·운영 복잡도·느린 스캔이라는 트레이드오프를 함께 말할 수 있다

흔한 실수

  • "상용이니까 오픈소스보다 성능이 좋다"고 정리한다. 선택 이유는 탐지 성능이 아니라 규제 대응과 통합 리포팅이다. 이 비교축을 틀리면 도입 논의 전체가 엉뚱한 방향으로 간다.
  • 상용 도구라서 오탐이 없을 거라고 기대한다. 오탐 검증은 여전히 사람의 몫이다(모듈 16 레슨 12).
  • 모든 조직에 통합 솔루션이 낫다고 일반화한다. 규제 요구가 없는 팀에는 비용과 복잡도만 남는다.
  • Fortify를 "설치해서 써보는" 학습 대상으로 잡는다. 개인이 라이선스를 구하기 어렵다. 이 도구는 사용법이 아니라 선택의 맥락 을 이해하는 것이 학습 목표다.
  • SAST 하나로 보안 테스트가 끝났다고 본다. 코드를 읽는 분석은 실행 중에만 드러나는 설정 오류·인증 우회를 잡지 못한다.

참고 자료

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

SAST — 정적 보안 분석
프로그램을 돌리지 않고 코드 자체를 읽어 위험한 부분을 찾는 검사.
DAST — 동적 보안 분석
실제로 돌아가는 서비스에 요청을 보내 보며 취약점을 찾는 검사.
ZAP — 제드 어택 프록시
웹 취약점을 자동으로 훑어 주는 공개 도구.
ALM — 애플리케이션 생애주기 관리
요구사항부터 시험·배포까지를 한 도구에서 추적하는 방식.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
SI — 시스템 통합 사업
고객이 발주한 시스템을 받아서 만들어 주는 사업 형태. 국내 정보기술 업계의 큰 축이다.
SCA — 구성 요소 분석
가져다 쓴 부품 코드에 알려진 취약점이 있는지 목록과 맞춰 보는 검사.
OWASP — 오왁스프
웹과 앱 보안 자료를 공개로 만드는 비영리 단체. 취약점 목록과 점검 기준이 유명하다.
PCI DSS — 지불 카드 산업 데이터 보안 표준
카드 정보를 다루는 시스템이 지켜야 할 보안 요구사항을 카드 업계가 함께 정한 것.

용어집 전체 보기