728x90
반응형
ISMS 심사 간 웹 사이트 버그, 보안 취약점을 어떻게 관리하고 있냐고
인터뷰하는 경우가 있는데 이 때 소나큐브를 사용한다고 이야기를 하고 있다.
이번 보안 교육 간 소나큐브 사용 실습이 있어 정리하게 되었다.
소나큐브(SonarQube)는 소스 코드의 품질과 보안 결함을 자동으로 분석해주는 정적 코드 분석 도구입니다. 개발자가 작성한 코드에서 버그, 코드 스멜(code smell), 보안 취약점 등을 찾아내고, 이를 지속적으로 모니터링하여 코드의 품질을 향상시키는 데 도움을 줍니다.
소나큐브 주요 특징
- 정적 코드 분석: 실행하지 않고 코드 자체를 분석하여 문제를 식별합니다.
- 지원 언어: Java, Python, JavaScript, C#, Kotlin 등 다양한 언어 지원.
- CI/CD 통합: Jenkins, GitHub Actions, GitLab CI 등과 연동하여 PR 품질 체크 가능.
- 품질 게이트(Quality Gate): 일정 기준을 넘지 못하면 실패하도록 설정할 수 있어 코드 품질 관리에 효과적.
- 대시보드 제공: 버그, 취약점, 코드 복잡도, 테스트 커버리지 등을 시각화하여 관리 가능.
사용 방법 (간단 단계별)
1. 소나큐브 설치
- 로컬 설치
- Java가 필요 (JDK 11 이상 권장)
- 공식 사이트에서 소나큐브 다운로드: https://www.sonarsource.com/products/sonarqube/downloads/
- 압축 해제 후 bin/ 폴더 내 운영체제별 실행 파일로 서버 시작
./sonar.sh start # Linux/macOS
StartSonar.bat # Windows
- 또는 Docker 사용:
docker run -d --name sonarqube -p 9000:9000 sonarqube
- 브라우저에서 http://localhost:9000 접속 → 기본 계정: admin / admin
2. 소나스캐너 설치 (SonarScanner)
- 분석을 위해 소나큐브 서버에 코드를 전달해주는 CLI 도구
- 설치: https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
3. 프로젝트에 분석 적용
- 루트 디렉토리에 sonar-project.properties 파일 생성 (예시):
- sonar.projectKey=my-project sonar.projectName=My Project sonar.projectVersion=1.0 sonar.sources=src sonar.language=java sonar.host.url=http://localhost:9000 sonar.login=토큰_또는_admin_계정
- 분석 실행:
- sonar-scanner
4. 사용 방법
- 결과는 웹 대시보드에서 확인 가능 (http://localhost:9000)
- project 생성 ( create project > manually)
- 토큰 생성
- 분석 할 프로젝트 빌드 도구 선택
- Maven 프로젝트와 연동하기
- pom.xml 설정
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.9.1.2184</version> <!-- 최신 버전 확인 권장 -->
</plugin>
</plugins>
</build>
- 분석 실행 명령어
mvn clean verify sonar:sonar -Dsonar.projectKey=project-name -Dsonar.host.url=http://localhost:9000 -Dsonar.login=your_token
- 명령어 실행 결과
- 분석 결과
Bugs | 실제 프로그램 오류 가능성 |
Vulnerabilities | 보안 취약점 (예: SQL Injection, XSS) |
Code Smells | 유지보수 어려운 코드 |
Coverage | 테스트 코드 커버리지 |
Duplications | 중복 코드 비율 |
5. CI/CD 연동
- Jenkins 예시:
- SonarQube Scanner 플러그인 설치
- Build Step에 Execute SonarQube Scanner 추가
- GitHub Actions에서도 간단하게 sonarsource/sonarcloud-github-action으로 연동 가능
언제 사용하나?
- 팀 프로젝트에서 코드 품질 기준을 통일하고 싶을 때
- 배포 전 보안 및 품질 검사를 자동화하고 싶을 때
- 리팩토링 전 품질 이슈를 파악하고 싶을 때
반응형
'업무 기록 > ETC' 카테고리의 다른 글
Windows 환경에서 Kafka와 Docker download및 실행과 테스트 (1) | 2025.04.25 |
---|---|
vscode marketplace download extension 버튼 없어짐 : VSIX 없어진 다운로드 버튼?? (2) | 2025.04.11 |
스트랭글러 패턴(Strangler Pattern): 레거시 시스템 현대화의 지혜와 어원 (1) | 2025.04.11 |
웹 애플리케이션에서 특수문자와 유니코드 문자 처리 시 발생하는 XSS 이슈 (0) | 2025.03.31 |
대용량 데이터 처리 방식 과 흐름 (0) | 2025.02.23 |