Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer는 Java 및 Python 코드에서 문제를 찾고 코드 개선을 위한 권장 사항을 제공합니다. 예를 들어 CodeGuru Reviewer는 보안 취약성, 비밀, 리소스 누출, 동시성 문제, 잘못된 입력 검증, AWS API 및 SDK 사용에 대한 모범 사례에서 벗어나는 것을 감지합니다. 코드 검토를 시작하려면 GitHub, GitHub Enterprise, Bitbucket 또는 AWS CodeCommit의 기존 코드 리포지토리를 CodeGuru에 연결하면 됩니다.

보안 탐지

CodeGuru Reviewer는 코드 보안을 개선하고 일반적인 취약성(OWASP Top 10) 및 AWS 내부 보안 모범 사례를 기반으로 권장 사항을 제공합니다. 자동화된 추론을 사용하여 소스에서 싱크 및 여러 함수로의 데이터 흐름을 분석함으로써 찾기 힘든 보안 취약성을 탐지합니다. CodeGuru Reviewer 보안 탐지기는 Java 8~Java 11과 Python 3 이상을 지원합니다. 이를 사용하여 다음과 같은 코드 보안 문제를 감지할 수 있습니다.

  1. OWASP Top 10: 액세스 제어 위반, 주입, 데이터 무결성 실패와 같은 주요 웹 애플리케이션 보안 위험을 확인합니다.
  2. AWS API 보안 모범 사례: Amazon Elastic Compute Cloud 및 AWS Key Management Service에 대한 API 보안 확인
  3. AWS 보안 모범 사례(AWS 암호화는 Amazon 표준에 따라 구현됨): Amazon의 내부 보안 전문 지식을 코드에 적용
  4.  Java 암호화 라이브러리 모범 사례: Javax.Crypto.Cipher가 올바르게 초기화되고 호출되었는지 확인
  5. Python 암호화 라이브러리 모범 사례: 올바른 버전의 Python 해시 및 암호화 알고리즘이 사용되는지 확인
  6. 보안 웹 애플리케이션: LDAP 주입과 같은 웹 앱 관련 보안 문제를 확인
  7. 민감한 정보 유출: 개인 또는 민감한 정보의 유출 여부 확인(예: AWS 계정 자격 증명을 일반 텍스트로 로깅)
  8. 입력 검증: 신뢰할 수 없는 출처에서 비롯된 잘못된 형식의 데이터 또는 악의적인 데이터 확인
  9. 로그 주입: 코드가 위조된 로그 항목 또는 로그에 악성 콘텐츠 주입을 적절하게 방지하는지 확인하여 Log4j 유형 취약성으로부터 보호

Amazon CodeGuru 콘솔로 이동하여 전체 리포지토리에 대한 보안 분석을 호출하거나 GitHub 작업을 통해 CI/CD와 통합할 수 있습니다.

Image under Security detection

보안 정보 탐지

CodeGuru Reviewer Secrets Detector는 기계 학습 기반 분석을 사용하여 암호, API 키, SSH 키, 액세스 토큰, 데이터베이스 연결 문자열 및 JSON 웹 토큰을 포함하는 리포지토리 또는 구성 파일에 하드코딩된 보안 정보를 탐지하는 데 도움을 줍니다. CodeGuru Reviewer의 일부인 Secrets Detector는 이러한 암호에 대한 코드를 확인하고 AWS Secrets Manager를 사용하여 보안을 위한 포인트 앤 클릭 단계를 제공하는 자동화된 메커니즘입니다. 또한 AWS, Atlassian, GitHub, Salesforce, HubSpot 및 Stripe를 비롯한 가장 일반적인 API 제공 업체에서 생성한 특정 키를 식별할 수 있습니다. 보안 정보의 목록은 설명서를 참조하십시오.

보안 정보 탐지

코드 품질

CodeGuru Reviewer는 코드 품질 문제를 식별하고 개발 팀이 소프트웨어 개발 프로세스에서 높은 수준의 코딩 표준을 유지할 수 있도록 합니다.

  • AWS 모범 사례: AWS API의 올바른 사용(예: 폴링, 페이지 매김)
  • Java 및 Python 모범 사례: 주요 Java 및 Python 언어와 라이브러리 기능의 올바른 사용
  • 동시성: 동기화 누락으로 인해 잘못된 기능을 야기하거나 과도한 동기화로 인해 성능 문제가 발생하는 경우를 탐지
  • 불일치: 저장소 내의 코딩 패턴을 분석하고 표준 패턴에서 벗어나는 이상이 있을 때 감지하도록 지원
  • 코드 유지 관리성: 코드를 유지 관리하기 어렵게 만드는 코드 복잡성 또는 소스 코드의 특성을 식별
  • 리소스 유출: 리소스 처리 수정(예: 데이터베이스 연결 해제)
  • 일반적인 코딩 모범 사례: 파라미터를 확인하고 버그를 생성할 수 있는 코드 줄을 찾습니다(예: 객체를 사용하기 전에 null인지 확인하는 것을 잊어버리거나 동기화된 객체를 다시 할당하거나 예외 경로를 따라 변수를 초기화하는 것을 잊어버리는 경우)
  • 코드 복제: 더 효과적인 코드 유지 관리를 위해 통합 가능한 중복 코드를 식별
코드 품질

자동화된 권장 사항

CodeGuru Reviewer가 권장 사항을 제공하기 위해 수행할 수 있는 코드 검토에는 증분 및 전체 리포지토리 코드 검토의 두 가지 종류가 있습니다. 

증분 코드 검토 
증분 코드 검토는 연결된 리포지토리에서 풀 요청을 생성할 때 자동으로 생성됩니다. 이 코드 리뷰는 pull 요청에서 변경된 코드를 스캔합니다. CodeGuru Reviewer는 또한 모든 코드 리뷰에 대한 정보(예: 코드 리뷰 상태, 분석된 코드 줄 수, 권장 사항 수)를 나열하는 풀 요청 대시보드를 제공합니다. CodeGuru Reviewer의 스탠더드 월별 요금에는 온보딩된 리포지토리에 대한 모든 증분 코드 리뷰 분석이 포함됩니다.

자동화된 권장 사항

전체 리포지토리 분석 코드 검토
CodeGuru Reviewer를 사용하면 지정된 코드 분기에서 연결된 리포지토리의 모든 코드 줄에 대한 기계 학습 기반 코드 검토 권장 사항을 가져올 수 있습니다. 전체 리포지토리 스캔을 실행하여 코드 마이그레이션, 코드 실사 및 정기적인 코드 유지 관리 이니셔티브 중에 코드 검토 권장 사항을 가져올 수 있습니다. CodeGuru 콘솔에서 ‘코드 검토’ 페이지의 ‘리포지토리 분석’ 탭으로 이동하여 전체 리포지토리에 대한 새 분석을 시작할 수 있습니다. 새로운 리포지토리 크기 기반 요금 모델에는 두 개의 전체 리포지토리 스캔이 포함됩니다. 자세한 내용은 CodeGuru 요금 페이지를 참조하세요.

전체 리포지토리 분석 코드 검토
코드 검토

"코드 검토" 콘솔 페이지(리뷰어 섹션)에서 모든 코드 검토를 볼 수 있습니다. 이 페이지에는 코드 검토 상태, 리포지토리, 권장 사항의 수 등 모든 코드 검토 정보가 나열됩니다. 성공적으로 완료된 코드 검토를 클릭하여 세부 권장 사항을 보고, 권장 사항을 검색하고, 분석한 줄 수를 확인할 수 있습니다. 권장 사항 아래에서 좋아요 또는 싫어요를 클릭하여 CodeGuru 권장 사항에 대한 피드백을 제공할 수도 있습니다.

GitHub 작업과 CI/CD 통합

CodeGuru Reviewer를 위한 CI/CD 환경을 사용하면 GitHub 작업을 사용하여 CI 워크플로 내 단계로 코드 품질 및 보안 분석을 호출할 수 있습니다. 파이프라인의 풀, 푸시 또는 예약된 실행에 따라 실행하고 권장 사항을 제공하도록 구성할 수 있습니다. CI/CD를 통해 CodeGuru Reviewer 스캔을 호출한 후 CodeGuru Reviewer 콘솔 또는 GitHub의 사용자 인터페이스 내에서 코드 품질 및 보안 권장 사항을 볼 수 있습니다. CI/CD 통합을 통해 코드의 품질과 보안을 지속적으로 모니터링하여 권장 사항을 놓치지 않도록 할 수 있습니다. CodeGuru Reviewer에서 GitHub Marketplace에 있는 GitHub 작업을 사용하여 GitHub 사용자 인터페이스 내에서 직접 보안 검토를 실행하고 권장 사항을 받을 수 있습니다. 일단 온보딩되면, 권장 사항이 GitHub 보안 탭에 바로 표시됩니다.

보안 탐지

권장 사항은 풀 요청과 AWS 콘솔 내에서도 제공됩니다. GitHub 내의 권장 사항을 클릭하면 애플리케이션 내에서 발생하는 문제, 해결 경로, 연결된 모든 CWE(일반적인 취약성 열거) 및 심각도와 같은 자세한 정보를 가져올 수 있습니다.

풀 요청

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler는 항상 애플리케이션 성능 최적화를 검색하고, 가장 “비경제적인” 코드 줄을 식별하며, 이러한 코드를 수정하여 CPU 사용률을 줄이고 컴퓨팅 비용을 절감하고 애플리케이션 성능을 개선할 방법을 권장합니다. 예를 들어 CodeGuru 프로파일러는 애플리케이션에서 핵심 비즈니스 논리를 실행하는 것이 아니라 일상 작업을 로깅하는 데 과도한 CPU 용량이 소비되는 상황을 식별할 수 있습니다.

프로덕션에서 애플리케이션의 상시 프로파일링

CodeGuru 프로파일러는 최소한의 오버헤드로 프로덕션에서 지속적으로 실행되도록 설계되었기 때문에 계속 실행 중인 상태로 유지해도 애플리케이션 성능에 미치는 영향이 작습니다. 실제 고객 트래픽 패턴을 사용하여 애플리케이션 프로파일링 및 문제 해결을 수행할 수 있으며 성능 문제를 손쉽게 찾을 수 있습니다. 프로파일러 데이터와 기계 학습 기반 권장 사항을 통해 프로덕션의 애플리케이션 성능 문제를 식별하고 해결할 수 있습니다. CodeGuru 프로파일러는 힙 요약도 제공하므로 지정된 시간에 메모리를 사용 중인 객체를 식별할 수 있습니다.

애플리케이션의 런타임 동작 이해

CodeGuru 프로파일러는 지속적으로 애플리케이션 CPU 사용률, 힙 사용량 및 지연 시간 특성을 분석하여 애플리케이션에서 대부분의 주기 또는 시간이 사용되는 영역을 보여줍니다. CPU 및 지연 시간 분석은 대화형 플레임 그래프로 표현되며 이 그래프에서 가장 많은 리소스가 사용되는 코드 경로를 파악하고 애플리케이션이 예상대로 작동하는지 여부를 확인하며 추가 최적화가 가능한 영역을 식별할 수 있습니다.

이미지 처리 이상
 확대하려면 클릭

플레임 그래프는 기간별 스택 추적 샘플을 집계하여 해당 시간의 애플리케이션 동작을 정확하게 보여줌으로써 애플리케이션 성능을 시각화합니다. 플레임 그래프를 사용하여 가장 많은 리소스가 사용되는 경로를 파악하고 애플리케이션이 예상대로 작동하는지 여부를 확인하며 추가 최적화가 가능한 영역을 식별할 수 있습니다. 예를 들어, UploadGreyImage 메서드는 연간 134,868 USD를 소비하고 10.22%의 벽시계 시간을 소모하므로 그 정도로 많은 시간을 소비할 것으로 예상하지 못했다면 조사가 필요합니다.

힙 요약

힙 사용량 분석은 힙 요약 시각화에 포함되며 자체 도메인 클래스인지 라이브러리/JDK 소유 클래스인지 여부에 관계없이 힙에 할당된 객체를 보여줍니다.

애플리케이션 성능 이상 및 일반적인 성능 문제 발견
 확대하려면 클릭

힙 요약은 지정된 기간에 힙에 할당된 모든 객체를 크기, 개수 및 시계열과 함께 시각화합니다. 예를 들어 오후 4:20의 시계열 그래프를 볼 때 현저한 증가를 보이는 객체 2개(java.util.LinkedHashMap$Entry와 java.land.UUID)가 있다면 이는 잠재적 메모리 누수를 나타냅니다. 이 상승 추세가 확인되지 않고 계속되면 메모리 부족 상황으로 이어질 수 있습니다.

지능형 권장 사항

CodeGuru 프로파일러는 애플리케이션의 성능 문제를 자동으로 식별하고 해결 방법에 대한 기계 학습 기반 권장 사항을 제공합니다. 이러한 권장 사항은 성능 엔지니어링에 관한 전문 지식 없이 코드에서 가장 비경제적이거나 리소스 집약적인 메서드를 식별하고 최적화하는 데 도움이 됩니다. 최적화를 수행하면 인프라 비용을 절감하고 지연 시간을 줄이며 전체 최종 사용자 경험을 개선할 수 있습니다.

지능형 권장 사항
 확대하려면 클릭

애플리케이션 성능을 최적화할 기회를 발견하는 경우 Amazon CodeGuru 프로파일러는 변경을 권장하는 이유, 문제의 원인, 해결 방법 및 이 문제가 애플리케이션에 영향을 미치는 코드의 영역을 설명합니다. 이 권장 사항은 이 비경제적인 코드 줄이 야기하는 비용이 연간 182,160 USD이며 CPU 사용률의 2.97%에 해당하는 영향을 미치고 있음을 보여줍니다. 권장 해결 단계를 따르면 최대 182,160 USD를 절약할 수 있습니다.

이상 탐지

Amazon CodeGuru Profiler는 지속적으로 애플리케이션 프로필을 실시간 분석하여 애플리케이션 및 해당 메서드의 동작 이상을 탐지합니다. 각각의 이상은 CodeGuru 프로파일러 콘솔의 권장 사항 보고서를 통해 추적되며 이상이 선명하게 강조 표시된 상태에서 메서드의 지연 시간의 작동 방식에 따른 시계열을 볼 수 있습니다. 구성된 경우 새로운 이상이 감지될 때 Amazon SNS 알림도 전송됩니다.

이상 탐지
 확대하려면 클릭
Amazon CodeGuru 요금
Amazon CodeGuru 요금에 대해 자세히 알아보기

Amazon CodeGuru 요금 페이지를 방문하세요.

자세히 알아보기 
무료 계정에 가입
무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다. 

가입 
콘솔에서 구축 시작
콘솔에서 구축 시작

AWS Management Console에서 Amazon CodeGuru를 사용하여 구축을 시작하십시오.

로그인