업무 기록/ETC

KISA K-Shield Spring 프레임워크 시큐어코딩 SonarQube 소나큐브 (정적 분석 도구, ISMS)

code2772 2025. 5. 2. 11:18
728x90
반응형

 

 

 

ISMS 심사 간 웹 사이트 버그, 보안 취약점을 어떻게 관리하고 있냐고
인터뷰하는 경우가 있는데 이 때 소나큐브를 사용한다고 이야기를 하고 있다.
이번 보안 교육 간 소나큐브 사용 실습이 있어 정리하게 되었다.

 

 

 

 

 

소나큐브(SonarQube)는 소스 코드의 품질과 보안 결함을 자동으로 분석해주는 정적 코드 분석 도구입니다. 개발자가 작성한 코드에서 버그, 코드 스멜(code smell), 보안 취약점 등을 찾아내고, 이를 지속적으로 모니터링하여 코드의 품질을 향상시키는 데 도움을 줍니다.

 


 

소나큐브 주요 특징

 

  1. 정적 코드 분석: 실행하지 않고 코드 자체를 분석하여 문제를 식별합니다.
  2. 지원 언어: Java, Python, JavaScript, C#, Kotlin 등 다양한 언어 지원.
  3. CI/CD 통합: Jenkins, GitHub Actions, GitLab CI 등과 연동하여 PR 품질 체크 가능.
  4. 품질 게이트(Quality Gate): 일정 기준을 넘지 못하면 실패하도록 설정할 수 있어 코드 품질 관리에 효과적.
  5. 대시보드 제공: 버그, 취약점, 코드 복잡도, 테스트 커버리지 등을 시각화하여 관리 가능.

 

사용 방법 (간단 단계별)

 

1. 소나큐브 설치

./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)

 


 

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으로 연동 가능

 

언제 사용하나?

 

  • 팀 프로젝트에서 코드 품질 기준을 통일하고 싶을 때
  • 배포 전 보안 및 품질 검사를 자동화하고 싶을 때
  • 리팩토링 전 품질 이슈를 파악하고 싶을 때

 

 

 

 

반응형