Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- jenkins_sudo
- xcode-select_jeknins
- unreal_binaryselection
- dxt
- sourcetree_accessdenied
- apkipa업로드저장소
- unreal_flavorselection
- jenkins_owasp
- sourcetree_authencicationfailed
- owasp_dependency_check
- jenkins_role관리_플러그인
- appcenter대체
- xcode_targeting
- Unity2022
- unreal_contentmanagement
- unity package_androidlib
- owasp_depdendency_check_shell
- cookcontent
- etc2
- python3.12.4
- unrealbuildshellscript
- unreal_android_빌드옵션
- ChatGPT
- jenkins_계정삭제
- unrealbuildcommand
- molocon24내용정리
- molocon24
- molocon24후기
- asset database_androidlib
- python_distutils_module_missing
Archives
- Today
- Total
mystic-agit 개발 블로그
[Mac] SonarQube 보안 솔루션 적용하기 본문
목차
1. SonarQube란?
2. SonarQube 기능 및 스펙
3. SonarQube 적용 방법
4. SonarQube 검사 결과
1. SonarQube란?
- 개발자가 작성한 소스 코드의 품질을 지속적으로 검사하고 관리할 수 있게 돕는 정적 코드 분석 도구
- SonarQube는 로컬 서버 설치 방식과 SonarQube Cloud를 사용하는 방식이 있음
- SonarQube Cloud 사용 시
- 로컬 호스트를 사용하지 않고 SonarQube 웹 페이지 상에서 검사를 요청하고 결과를 확인할 수 있음
- 다만, 검사하려는 프로젝트가 Github 등에 public으로 공개되어 있어야함
- 유료 요금제 필요 (무료 체험 기간 제공)
- SonarQube 로컬 서버 사용 시
- 로컬 호스트 서버를 통해 검사 결과를 저장하고 보여줌
- 내 로컬에 있는 프로젝트를 검사하기 때문에 Github과 같은 소스 코드 관리 애플리케이션에 프로젝트를 업로드 하지 않아도됨
- 무료 버전 제공(Community Edition), 유료 요금제의 무료 체험 기간 제공
- SonarQube Cloud 사용 시

2. SonarQube 기능 및 스펙
- 소스 코드 분석 시 지원되는 상세한 스펙 확인
- 무료 또는 유료 요금제에 따라 지원되는 기능 범위가 다름
| Community Edition(무료) | Developer Edition(유료, 유료 첫단계) | |
| 지원 언어 | Java, JavaScript, TypeScript, C#, Python, HTML, CSS, XML, PHP, Ruby, Scala | Community Edition 지원 언어 + Kotlin, C/C++, Objective-C, Swift, Go |
| 검사 코드 양 | 5만 라인 내외 권장 | 10만 라인 내외 권장 |
| 검사 브랜치 | 단일 브랜치 | 멀티 브랜치 및 Pull Request 분석 지원 |
| 보안 분석 | 일부 기본적인 탐지 | OWASP Top 10 지원 |
| CICD 지원 | Jenkins, Github Actions, Azure DevOps 등 | Community Edition 동일 |
| 커버리지/리포트 | 기본 코드 커버리지 | Pull Request 별 리포트, 고급 리포트 지원 |
| IDE 통합 | IntelliJ, VS Code 등 연동 가능 | Community Edition + 개발자 인증으로 PR 분석과 연동 강화 |
| 구독 형태 | 무료 | 연간 구독 (720 달러) https://www.sonarsource.com/plans-and-pricing/sonarqube/ |
3. SonarQube 적용 방법
- Mac OS를 기준으로 정리
- SonarQube는 로컬 서버 설치 방식 사용
3.1 환경 구성
(1) Java SDK 11 이상 설치
- SonarQube는 Java 11 이상 버전 필요
| // Java 설치 여부 확인 java -version // Java 11 설치 brew install openjdk@11 |
3.2 SonarQube 설치
(1) SonarQube 다운로드 페이지에서 Community Edition을 다운로드
- 이메일을 통한 인증이 필요하며 인증 후 파일 다운로드 가능
- 적절한 위치에 압축 해제한 폴더를 이동
- ex) /Users/mysticagit/sonar-qube

(2) SonarQube 서버 실행
- 로컬 서버가 될 단말에 접속 가능한 외부 단말이 있는 경우
- 위 압축 해제한 폴더에서 /Users/mysticagit/sonar-qube/conf/sonar.properties 파일 편집
| // 아래 2개 라인을 주석 해제 또는 신규 작성 후 저장 sonar.web.host=0.0.0.0 sonar.web.port=9000 |
- 로컬 서버 실행
- 위 압축 해제한 폴더에서 /Users/mysticagit/sonar-qube/bin/macosx-universal-64/ 폴더로 이동
- 아래 명령으로 로컬 서버 실행 또는 상태 확인
| // 서버 실행 ./sonar.sh start // 서버 정상 연결 상태 확인 ./sonar.sh status // 서버 재시작 ./sonar.sh restart // 서버 정지 ./sonar.sh stop |
- 로컬 서버 접속 확인
- 서버 정상 연결 상태 확인 후
- 해당 단말의 브라우저에서 http://localhost:9000 접속 시 SonarQube 로컬 콘솔 화면 노출
- 최초 진입 시 admin 계정의 비밀번호를 설정하게 되며 비밀번호 설정 후 관리
- 서버 정상 연결 상태 확인 후

3.3 검사할 프로젝트 설정
(1) Create Project 진행
- Create Project > local project

- Create a local project
- Project display name : 프로젝트 이름
- Project key : 프로젝트 키 (프로젝트 구분자) (SonarQube 환경 설정에 종종 사용되니 신중하게 작성)
- Main branch name : 검사할 메인 브랜치 (Community Edition의 경우 하나의 브랜치만 가능)

- Setup project for Clean as You Code
- use global setting 선택 > Create Project

- use global setting 선택 > Create Project
- Analysis Method
- Locally 선택

- Analyze your project
- 프로젝트 접근을 위한 token 생성
- Generate a project token > Expires in 에서 토큰 만료 기간 선택 > Generate
- token 생성
- ex) sqp_80bd1ab4d884b346984394a143104e078f5dd57a
- token은 다시 확인할 수 없으니 별도의 메모 필요
- continue 진행
- Run analysis on your project 에서 검사할 프로젝트가 어떤 언어 사용에 가까운지 선택
- 프로젝트 접근을 위한 token 생성


- 여기까지 진행되었다면 SonarQube 서버에 프로젝트에 대한 설정은 완료되었고,
Sonar-Scanner를 설치해야함- 하단에 official documentation of the Scanner for~ 링크를 참고하여 다운로드 진행
(2) Sonar-Scanner 설치
- 각 운영체제에 지원되는 다운로드 제공

- 적절한 위치에 압축 해제
- ex) /Users/mysticagit/sonar-scanner
- 환경 변수에 Sonar-Scanner 경로 설정
- /Users/mysticagit/sonar-scanner/bin
- 아래 명령으로 환경 변수가 정상 설정되었는지 확인
| sonar-scanner -v |
(3) 검사할 프로젝트에 SonarQube properties 파일 설정
- 검사할 프로젝트가 /Users/mysticagit/myTestProjectABC_Android 라면
- 해당 경로에 sonar-project.properties 파일 생성 후 아래 내용을 작성
| # Sonar local host server's project name # 프로젝트 키 설정 sonar.projectKey=MyTestProjectABC # for check project path (with sonar-project.properties) # if use '.', check all paths below' sonar-project.properties'. # 현재 properties 파일 이하 모든 경로에 대한 검사 sonar.sources=. # host url (Report uploaded) # 리포트가 업로드될 로컬 호스트 주소 sonar.host.url=http://localhost:9000 # Sonar local host project's token (MyTestProjectABC) # 프로젝트 token sonar.login=sqp_80bd1ab4d884b346984394a143104e078f5dd57a |
- Sonar-Scanner가 환경 변수가 정상 설정되었다면 현재 sonar-project.properties 파일이 있는 경로에서 아래 명령 수행
| // 환경 변수 설정되어있는 경우 sonar-scanner // 환경 변수 설정을 하지 않았다면 /{Sonar-Scanner 경로}/bin/sonar-scanner |
4. SonarQube 검사 결과
- Overview : 코드 검사 결과에 대한 종합적인 수치를 확인

- Issues : 코드 검사 결과에 대한 상세한 정보를 확인, 소스 코드 파일명과 이슈 타입 및 위치를 확인할 수 있음

- Code : 프로젝트 내 소스 코드를 트리구조로 보면서 소스 코드별 이슈 숫자를 확인할 수 있음

- Measure : 이슈의 수나 심각성 정도를 시각화된 정보로 확인할 수 있음

- Activity : 프로젝트의 검사 기록들을 확인할 수 있음

'Mac > Utiility' 카테고리의 다른 글
| [Shell Script] Mac에서 환경변수 값을 동적으로 변경하여 사용하기 (0) | 2024.09.12 |
|---|---|
| [Mac] OWASP Dependency Check 취약점 검사 라이브러리 사용 (0) | 2024.07.02 |
| [Python3] Python 3.12.4 에서 distutils module 찾지 못하는 이슈 (0) | 2024.06.26 |
| [SourceTree] Access denied, fatal: Authentication failed 에러 발생 시 (0) | 2024.04.30 |
| [Mac] Crontab 을 사용한 Jenkins restart 주기 반복 호출 (1) | 2024.04.19 |
Comments