Skip to main content

애플리케이션 보안에 대해 알기

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 애플리케이션이 무엇인지 설명할 수 있습니다.
  • 애플리케이션 보안, 애플리케이션 개발과 관련된 해당 역할을 정의할 수 있습니다.

애플리케이션이란 무엇인가요?

컴퓨터를 사용한 적이 있다면 애플리케이션을 사용해 보았을 것입니다. 애플리케이션은 하나 이상의 작업을 수행하고 직접 사용자 상호작용을 지원하는 컴퓨터 소프트웨어 패키지입니다. 애플리케이션과 애플리케이션 사용 방법의 예를 살펴보면서 이 말이 실제로 무엇을 의미하는지 자세히 알아보겠습니다.

애플리케이션은 데이터베이스 프로그램, 웹 브라우저, 이메일 클라이언트, 스프레드시트, 미디어 플레이어, 워드 프로세서 및 이미지/사진 편집 소프트웨어 같은 여러 가지 형태로 제공됩니다. 사용자는 각각의 소프트웨어 패키지를 사용하여 애플리케이션과 직접 상호작용할 수 있습니다. 예를 들어 워드 프로세서 소프트웨어를 사용하는 경우에는 텍스트를 입력, 삭제 또는 복사 및 붙여넣기할 때 애플리케이션과 직접 상호작용합니다. 그리고 컴퓨터에서 Photoshop 같은 사진 편집 소프트웨어 패키지를 사용하거나, 휴대폰에서 모바일 앱과 상호작용하거나, 웹 기반 뱅킹 애플리케이션에서 비즈니스 거래를 수행하는 등의 여러 가지 방법으로 애플리케이션과 상호작용합니다. 꽤 간단하죠? 

개발자는 두 가지 방법으로 애플리케이션을 만듭니다. 조직 밖에서 공유되지 않는 독자적인 코드를 개발하거나, 함께 일하는 개발자들과 공개적인 공동 작업 방식으로 설계 및 개발하는 오픈 소스 프로젝트를 통해 코드를 개발합니다. 

오픈 소스 애플리케이션은 개발자에게 소프트웨어를 사용하고 연구하고 변경할 권리를 부여하므로, 다양한 이용 사례에 맞게 수정하고 적용할 수 있습니다. 오픈 소스 프로젝트 개발 전용 커뮤니티도 확인해 보세요. 애플리케이션 보안 엔지니어가 되는 데 관심이 있는 사람이라면 오픈 소스 프로젝트에 참여하는 것은 좋은 기회입니다. 실제 애플리케이션 개발 및 보안 경험을 쌓으면서 스킬을 연마하고 입증하는 좋은 방법이 되기 때문이죠. 이를 통해 애플리케이션이 개발되고 기능하는 방법에 대한 이해를 높이고 코딩 및 소프트웨어 개발 라이프사이클에서 애플리케이션 보안이 어떤 역할을 하는지 알 수 있습니다.

애플리케이션 보안의 역할

조직의 기술 스택에서 애플리케이션 계층은 사용자와 가장 가까운 계층입니다. 이 계층은 사용자와 상호작용하기 위해 사용되기 때문에 외부에서 가장 쉽게 공격 받을 수 있게 됩니다. 그렇기 때문에 꽤 많은 경우의 보안 침해는 애플리케이션 취약성으로 인해 발생합니다. 

애플리케이션은 공격자가 훔치거나 조작하거나 삭제하고 싶어하는 이름, 국가 신분 데이터(주민등록번호 등) 및 이메일 주소 같은 개인 식별 정보(PII)를 포함하는 개인 정보가 가득한 보물 단지입니다. 따라서 애플리케이션 보호는 사이버 보안의 중요한 요소입니다. 데이터 손실 위험과 조직과 그 고객에 미치는 금전 손실, 평판 손상, 개인정보 유출 또는 법적 영향과 같은 부정적인 결과를 최소화해야 하기 때문이죠. 

애플리케이션 보안 엔지니어는 공격자라면 애플리케이션을 어떻게 부정적으로 사용할지 생각하며 일반적인 사용자가 제공하는 입력 정보를 애플리케이션에서 안전하게 정화, 검증, 처리해야 합니다. 

애플리케이션 보안 엔지니어는 공격자가 중요한 데이터에 액세스할 수 없도록 애플리케이션을 보호하는 데 집중합니다. 소프트웨어 개발 초기 단계에 보안 결점을 찾기가 훨씬 더 쉽고 비용도 훨씬 더 적게 들기 때문에 애플리케이션 보안 엔지니어는 설계 또는 개발 작업을 시작하기 전에 보안 요구 사항을 수집해야 합니다.

노트북 컴퓨터에 있는 버그를 돋보기로 보고 있는 엔지니어애플리케이션 보안 엔지니어는 개발팀 및 사업부와 협력하여 보안이 강력한 애플리케이션을 설계하고 만들고 문서화하고 코딩하고 테스트하고 배포하고 유지할 수 있게 지원합니다. 애플리케이션을 설계 및 제작하는 프로세스를 소프트웨어 개발 라이프사이클(SDLC)이라고 합니다. 애플리케이션 개발자는 이 프로세스에서 문서화 및 프로그래밍(코딩) 단계를 책임집니다. 또한 애플리케이션이 필요한 작업을 수행하도록 하는 소스 코드를 작성하기도 합니다. 애플리케이션 보안 엔지니어는 전체 SDLC에 걸쳐 애플리케이션 개발자 등과 협력하여 보안 취약성을 진단하고 문서화하고 수정하여 애플리케이션을 보호합니다.

일반적으로 조직에서 애플리케이션 개발자의 주 목표는 비즈니스 요구 사항을 충족하는 코드를 최대한 빨리 제공하는 것입니다. 따라서 코드를 쓸 때 보안이 중요시되지 않는 경우가 있죠. 이 경우 애플리케이션 보안 엔지니어가 개발 프로세스에 기본적으로 보안을 포함시켜 중요한 데이터를 계속 보호할 수 있다면 큰 도움이 될 수 있습니다. 이 과정에서 엔지니어는 애플리케이션이 흔히 CIA라고 하는 기밀성, 무결성 및 가용성을 제공하는 것을 목표로 합니다. 

예를 들어 애플리케이션 보안 엔지니어는 개발자가 적절한 인증을 요구(하여 데이터의 기밀성을 보호)하고, 중요한 정보를 안전하게 전송하여 정보를 수정할 수 없게 하고(무결성), 사용자가 데이터에 액세스할 수 있도록 보장하는(가용성) 방법으로 애플리케이션을 설계 및 배포할 수 있게 지원합니다. 

애플리케이션 보안 엔지니어는 종종 애플리케이션 개발팀에 속해 있으면서 디자이너 및 개발자에게 조언을 제공하는 역할을 합니다. 이들은 애플리케이션 요구 사항에 보안에 대한 고려 사항이 포함되도록 하고, 설계 단계에 보안이 강력한 인증 프로토콜을 제안하고, 코드를 검토하여 코드에 일반적인 보안 취약성이 있는지 확인하고, 애플리케이션을 배포하기 전에 테스트하며, 취약성 패치 시기와 방법에 대해 조언합니다.

이 유닛에서는 애플리케이션이 무엇이고 애플리케이션 개발 및 보안 인력이 실제로 어떻게 협력하는지 알아보았습니다. 다음 유닛에서는 애플리케이션 보안이 비즈니스에 미치는 영향, 애플리케이션 보안 엔지니어에게 필요한 스킬 및 일반적인 애플리케이션 보안 시나리오에 대해 알아보겠습니다.

리소스

계속해서 무료로 학습하세요!
계속 진행하려면 계정을 가입하세요.
얻을 수 있는 이점
  • 커리어 목표에 대한 개인화된 권장 사항 제공받기
  • 실습 과제 및 퀴즈를 통해 스킬 연습
  • 진행 상황을 추적하고 고용주에게 공유
  • 멘토십과 커리어 기회에 연결