Amazon Web Services 한국 블로그

Amazon CodeGuru Reviewer Secrets Detector – AWS Secrets Manager를 통해 하드 코딩된 보안 정보 식별 및 보호

Amazon CodeGuru는 Java 및 Python 애플리케이션을 스캔하고 프로파일링하여 코드 품질을 개선하고 코드 검토를 자동화하는 데 도움이 됩니다. CodeGuru Reviewer는 코드에서 잠재적인 결함과 버그를 감지할 수 있습니다. 예를 들어 보안 취약성, 리소스 유출, 동시성 문제, 잘못된 입력 검증, AWS 모범 사례 이탈 등의 경우에 개선 사항을 제안합니다.

가장 잘 알려진 보안 사례 중 하나는 암호, API 키, 자격 증명 등 일반적인 보안 정보에 대한 중앙 집중화 및 거버넌스입니다. 납기를 업격하게 지켜야 하는 다른 많은 개발자와 마찬가지로, 저도 로컬 개발 중에 급한 나머지 일반 텍스트 환경 변수나 하드 코딩 정적 보안 정보를 활용해 코드에서 보안 정보를 관리, 사용했다가 실수로 커밋하는 경우가 종종 있습니다. 물론, 그런 경우 항상 후회했으며 모든 리포지토리에서 이러한 보안 정보를 자동으로 감지하고 보호할 수 있는 방법이 있으면 좋겠다고 생각했습니다.

오늘, 개발자가 암호, API 키, SSH 키 및 액세스 토큰과 같은 소스 코드 또는 구성 파일에서 보안 암호를 감지할 수 있도록 지원하는 자동화 도구인 새로운 Amazon CodeGuru Reviewer Secrets Detector를 발표하게 되어 기쁩니다.

이러한 새로운 감지기는 기계 학습(ML)을 사용하여 코드 검토 프로세스의 일부로 하드 코딩된 보안 정보를 식별하므로 궁극적으로 병합 및 배포 전에 모든 새 코드에 하드 코딩된 암호가 포함되지 않도록 할 수 있습니다. 보안 정보 탐지기는 Java 및 Python 코드와 더불어 구성 및 문서 파일도 스캔합니다. CodeGuru Reviewer는 자격 증명와 API 키 등 모든 종류의 보안 정보를 안전하게 자동으로 저장, 교체, 관리, 검색할 수 있는 관리형 서비스인 AWS Secrets Manager를 통해 보안 정보를 보호하기 위한 개선 단계를 제안합니다.

이 새로운 기능은 추가 비용 없이 CodeGuru Reviewer 서비스의 일부로 포함되어 있으며 AWS, Atlassian, Datadog, Databricks, GitHub, Hubspot, Mailchimp, Salesforce, SendGrid, Shopify, Slack, Stripe, Tableau, Telegram, Twilio 등 가장 일반적인 API 공급자를 지원합니다. 전체 목록은 여기에서 확인하세요.

Secrets Detectors 작동 방식
먼저 AWS Secrets Manage 콘솔에서 CodeGuru를 선택합니다. 이 새로운 흐름을 사용하여 새 리포지토리를 연결하고 전체 리포지토리 분석을 실행하여 하드 코딩된 보안 정보를 식별할 수 있습니다.

1개의 새로운 리포지토리 연결은 몇 초밖에 걸리지 않습니다. GitHub 계정을 연결한 다음 hawkcd라는 리포지토리를 선택합니다. 여기에는 몇 개의 Java, C#, JavaScript 및 구성 파일이 들어 있습니다.

몇 분 후 전체 리포지토리가 연결되고 전체 스캔이 완료됩니다. 또한 데모 리포지토리 분석(DemoFullRepositoryAnalysisSecrets)을 살펴볼 수도 있습니다. 이 데모는 AWS 계정의 CodeGuru 콘솔, [전체 리포지토리 분석] 아래에서 확인할 수 있습니다.

리포지토리 분석을 선택하고 하드 코딩된 보안 정보에 대한 권장 사항 1개를 포함하여 42개의 권장 사항을 찾았습니다(권장 사항을 Type=Secrets로 필터링할 수 있음). CodeGuru Reviewer가 .travis.yml 파일에서 하드 코딩된 AWS 액세스 키 ID를 식별했습니다.

이 권장 사항은 이러한 보안 정보를 안전하게 저장하는 것의 중요성을 강조하고, 문제에 대해 자세히 알아볼 수 있는 링크를 제공하며, 식별된 보안 정보를 교체하여 향후 제3자가 악의적인 목적으로 재사용할 수 없도록 하는 방법을 제안합니다.

CodeGuru Reviewer를 사용하면 보안 정보가 나타나는 정확한 파일 및 코드 줄로 이동할 수 있으므로 더 자세히 파악하고, 컨텍스트를 이해하며, 파일 기록을 확인하고, 신속하게 조치를 취할 수 있습니다.

마지막으로, 권장 사항에는 AWS Secrets Manager 콘솔로 빠르게 이동하여 적절한 이름과 값으로 새 보안 정보를 생성할 수 있는 [자격 증명 보호] 버튼이 포함되어 있습니다.

소스 코드에서 일반 텍스트 보안 정보를 제거하고 애플리케이션을 업데이트하여 AWS Secrets Manager에서 보안 정보 값을 가져올 것입니다. 많은 경우, 현재 구성 구조를 유지하고 기존 파라미터를 사용하여 보안 정보의 값 대신 보안 정보의 이름을 저장할 수 있습니다.

보안 정보가 안전하게 저장되면 AWS Secrets Manager는 AWS SDK를 사용하여 여러 프로그래밍 언어로 새로운 보안 정보를 가져오는 코드 조각도 제공합니다. 이러한 코드 조각을 사용하면 시간을 절약하고 필요한 SDK 호출과 더불어 오류 처리, 암호 해독, 디코딩 로직을 포함할 수 있습니다.

지금까지 전체 리포지토리 분석을 실행하는 방법을 보여드렸으며, 동일한 분석을 모든 새로운 풀 요청에 대해 지속적으로 수행하여 향후 하드 코딩된 보안 정보 및 기타 문제가 발생하는 것을 방지할 수 있습니다.

CodeGuru Reviewer에 정식 출시
CodeGuru Reviewer Secrets Detector는 CodeGuru Reviewer를 사용할 수 있는 모든 리전에서 추가 비용 없이 사용할 수 있습니다.

CodeGuru Reviewer를 처음 사용하는 경우 최대 100,000줄까지 코드 리포지토리를 사용하여 90일 동안 무료로 사용해 볼 수 있습니다. 코드가 AWS CodeCommit, BitBucket 또는 GitHub에서 호스팅되는지 여부에 관계없이 리포지토리를 연결하고 전체 스캔을 시작하는 데 몇 분 밖에 걸리지 않습니다. GitHub를 사용하는 경우 GitHub Actions 통합도 확인하세요.

기술 문서에서 Secrets Detector에 대해 자세히 알아볼 수 있습니다.

Alex