코드에 있는 자격 증명 노출 방지
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 암호가 노출되면 조직에 문제가 될 수 있는 이유를 식별할 수 있습니다.
- 실수로 암호가 노출되지 않도록 하는 방법을 설명할 수 있습니다.
자격 증명 노출
중요 데이터를 개발 중인 코드에 저장하면 데이터 보안 침해의 가장 일반적인 원인이 됩니다. 그렇기 때문에 악의적인 공격자의 손에 들어갈 경우 조직의 중요 데이터를 알아내는 데 악용될 수 있는 이런 데이터(자격 증명, 암호화 키 등 포함)를 보호하는 방법에 대해 알아보아야 합니다.
개발자는 클라우드, 애플리케이션 및 기타 도구 같은 기술 스택에 액세스하는 코드 및 스크립트를 책임집니다. 스택을 구성하는 각각의 인스턴스가 모두 자격 증명을 요구하는 경우가 일반적이며, 이런 자격 증명이 노출되지 않도록 보호하는 것이 중요합니다.
주기적 개발 작업을 수행하는 여러 개발 그룹은 스트레치 목표 날짜를 정하고 빨리 작업해야 한다는 압박감을 느끼는 경우가 많습니다. 개발자는 서로 협업하고 프로젝트를 완수하기 위해 GitHub 또는 기타 오픈 소스 코드 저장소를 사용할 수 있습니다.
코드 저장소에서 자격 증명이 노출될 위험이 커지는 이유는 바쁜 개발자가 코드를 자격 증명에 하드 코딩하는 편법을 사용하는 경우가 있기 때문입니다. 그 후 코드가 공개되면 조직의 자격 증명이 일반에 알려질 수 있습니다. 코드를 커밋하고 푸시한 후에는 쉽게 삭제할 수 없습니다. 그리고 버전 제어 시스템을 통해 손상된 코드의 커밋을 삭제할 수 있더라도, 다른 개발자나 서비스가 이미 삭제하기 전에 손상된 코드의 복사본을 가져왔을 수 있습니다.
따라서 버전 관리를 사용하는 방법을 알거나 코드 사본을 만들어 본 적이 있다면 누구든지 자격 증명(이전 버전의 자격 증명 포함)을 가져오고 자격 증명에 액세스할 수 있습니다. 개발자가 안전한 코딩 규칙 및 방법을 준수하지 않으면 권한이 없는 개인에게 자격 증명이 실수로 공개되어 중요 시스템에 액세스하는 데 이용될 수 있습니다.
일반적으로, 개발자는 신기능을 고객에게 제공하기 위해 서두를 때 이런 실수를 저지르기 쉽습니다. 따라서 자격 증명을 절대로 코드에 포함시키지 않도록 더욱 주의를 기울여야 합니다.
자격 증명 유출
GitHub, Bitbucket 및 SourceForge 같은 소프트웨어 추적 서비스 업체들은 자격 증명 유출 문제를 해결하기 위해 여러 해 동안 노력해 왔습니다. 몇몇 서비스는 사용자가 액세스 토큰을 공개 저장소에 푸시하는 경우에 사용자에게 알리고, 무허가 작업을 수행하는 데 이용될 수 없도록 이런 토큰을 취소하기도 합니다. 그럼에도 불구하고 저장소에 애플리케이션 프로그래밍 인터페이스(API) 토큰 및 키가 실수로 포함되는 경우가 아직도 많습니다.
소속 조직에서도 이 문제에 대해 알고 있을 수 있습니다. 그리고 보안 팀은 공개 저장소 또는 클라우드 인스턴스의 코드에 실수로 노출된 사용자 ID, API 키, 액세스 토큰, 데이터베이스 파일 및 기타 키가 없는지 주기적으로 확인해야 합니다.
자격 증명 노출을 방지할 수 있는 방법
보안 개발 수명 주기를 개발 프로세스에 통합하는 방법이 권장되듯이, 자격 증명 관리 위생을 코딩 프로세스의 모든 단계에 도입하는 방법도 권장됩니다. 코드에서 자격 증명이 노출되지 않도록 하기 위해서는 다음과 같은 두 가지 방법을 기억해야 합니다.
- 조직에서 승인한 암호 관리 서비스에만 암호를 저장합니다.
- 암호를 절대로 코드에 포함시키지 않습니다.
공용 키 인프라 및 암호화와 키 관리를 포함하는 조직에서 암호 관리 구현 트레일의 다음과 같은 모듈에서는 권장되는 암호 보호 키 관리 방법과 전송 및 유휴 시에 암호를 보호하는 방법에 대해 설명합니다.
요약
이 모듈에서는 강력한 암호를 만들고 보호하는 방법과 암호 관리자의 이점에 대해 간단히 알아보았습니다. 권한 액세스 관리를 수행할 때 최소 권한 원칙을 이행하는 방법과 시간이 흐름에 따라 사용자 및 계정을 모니터링하는 것의 중요성에 대해서도 알아보았습니다.
조직 암호 모듈에서 살펴본 정보와 이 모듈에서 배운 내용을 통해, 이제는 조직의 액세스 자격 증명 같은 암호를 보호하기 위해 무엇이 필요한지 더 잘 알게 되셨을 것입니다. 다음 모듈인 공용 키 인프라 및 암호화에서는 데이터를 전송 및 유휴 시에 보호하는 방법에 대해 알아봅니다. Trailhead의 사이버 보안 학습 허브를 방문하여 권장되는 사이버 보안 방법에 대해 자세히 알아보고 실제 보안 실무자들의 경험담을 확인할 수 있습니다.