Amazon Web Services 한국 블로그

Amazon Inspector 신규 기능 – 워크로드에 대한 취약성 검색 영역 확대

Amazon Inspector에는 워크로드에서 소프트웨어 취약성을 스캔할 때 가능성의 영역을 넓힐 수 있는 새로운 3가지 기능이 추가되었습니다.

  • Amazon Inspector는 실행되는 지속적 통합 및 지속적 전달(CI/CD) 파이프라인에서 직접 빌드할 때 소프트웨어 취약성에 대한 컨테이너 이미지를 평가할 수 있는 새 오픈 소스 플러그인 세트와 API를 도입하고 있습니다.
  • Amazon Inspector는 이제 에이전트 또는 추가 소프트웨어(미리 보기)를 설치하지 않고도 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 지속적으로 모니터링할 수 있습니다.
  • Amazon Inspector는 생성형 인공 지능(AI)과 자동 추론을 사용하여 AWS Lambda 함수에 대한 지원 코드 수정을 제공합니다.

Amazon Inspector는 AWS 워크로드에서 알려진 소프트웨어 취약성과 의도하지 않은 네트워크 노출을 지속적으로 스캔하는 취약성 관리 서비스입니다. Amazon Inspector는 실행되는 EC2 인스턴스, Amazon Elastic Container Registry(Amazon ECR) 및 CI/CD 도구 내 컨테이너 이미지, Lambda 함수를 자동으로 검색하고 스캔합니다.

모든 관계자는 엔지니어링 팀에서 취약성을 빠르게 해결하는 데 어려움을 겪는 경우가 많다는 것을 알고 있습니다. 이는 팀에서 취약성 백로그의 문제 해결보다 개발에 우선 순위를 두도록 하는 촉박한 릴리스 기한 때문입니다. 하지만 이는 보안 환경의 복잡하고 끊임없이 진화하는 특성 때문이기도 합니다. 따라서 한 연구에 따르면 기업 내에서 심각한 취약성을 해결하는 데 평균 250일이 걸립니다. 따라서 잠재적인 보안 문제를 개발 수명 주기 초기에 식별하여 프로덕션 환경으로 배포되지 않도록 방지해야 합니다.

AWS Lambda 함수 코드의 취약성 탐지
개발자 가까이에서 Lambda 함수 코드를 사용하여 시작해 보겠습니다.

2022년 11월2023년 6월에 Amazon Inspector에는 함수의 종속성 및 코드를 스캔하는 기능이 추가되었습니다. 이제는 코드를 분석하고 수정을 코드 패치로 자동으로 생성하기 위한 생성형 AI와 자동 추론을 추가하고 있습니다.

Amazon Inspector는 이제 보안 스캔 중에 탐지된 여러 취약성 클래스에 대해 컨텍스트 내 코드 패치를 제공할 수 있습니다. Amazon Inspector는 주입 결함, 데이터 유출, 취약한 암호화 또는 암호화 누락과 같은 보안 문제에 대한 코드 평가를 확장합니다. Amazon Inspector는 이제 생성형 AI를 통해 문제 해결 방법을 제안합니다. 제안된 수정으로 영향을 받는 코드 조각을 컨텍스트에 맞게 보여줍니다.

예제는 다음과 같습니다. 간단한 Python 코드 조각이 하드코딩된 AWS 비밀 키를 사용하여 작성되었습니다. 절대로 이렇게 하지 마세요!

def create_session_noncompliant():
    import boto3
    # 비준수: 하드코딩된 비밀 액세스 키를 사용합니다.
    sample_key = "AjWnyxxxxx45xxxxZxxxX7ZQxxxxYxxx1xYxxxxx"
    boto3.session.Session(aws_secret_access_key=sample_key)
    return response

코드를 배포합니다. 그러면 평가가 시작됩니다. AWS Management Console을 열고, Amazon Inspector 페이지로 이동합니다. 조사 결과 섹션에서 취약성을 찾았습니다. 취약성 위치제안된 수정은 일반 자연어 설명뿐만 아니라 diff 텍스트 및 그래픽 형식으로도 제공됩니다.

Inspector 자동 코드 수정

컨테이너 CI/CD 파이프라인의 취약성 탐지
이제 컨테이너를 구축할 때 CI/CD 파이프라인으로 이동해 보겠습니다.

지금까지 컨테이너 이미지가 구축되어 Amazon Elastic Container Registry(Amazon ECR)에 저장되면 Amazon Inspector에서 해당 컨테이너 이미지를 평가할 수 있었습니다. 이제부터 Amazon Inspector는 CI/CD 도구 내에서 컨테이너 이미지를 구축하는 동안 해당 컨테이너 이미지를 평가하여 개발 프로세스에서 보안 문제를 훨씬 더 빠르게 탐지할 수 있습니다. 평가 결과는 거의 실시간으로 CI/CD 도구의 대시보드에 직접 반환됩니다. 이 새로운 기능을 사용하기 위해 Amazon Inspector를 활성화할 필요는 없습니다.

JenkinsJetBrain의 TeamCity에 즉시 사용할 수 있는 CI/CD 플러그인이 제공되며, 앞으로 더 많은 플러그인이 제공될 예정입니다. AWS SDKAWS Command Line Interface(AWS CLI)에서 사용할 수 있는 새 API(inspector-scan) 및 명령(inspector-sbomgen)도 있습니다. 이 새 API를 사용하면 Amazon Inspector를 원하는 CI/CD 도구에 통합할 수 있습니다.

실행 시 플러그인은 구성된 리소스에서 컨테이너 추출 엔진을 실행하고 CycloneDX 호환 소프트웨어 자재 명세서(SBOM)를 생성합니다. 그런 다음, 플러그인에서 분석을 위해 SBOM을 Amazon Inspector로 보냅니다. 플러그인은 스캔 결과를 거의 실시간으로 받습니다. 응답을 구문 분석하고 Jenkins 또는 TeamCity에서 파이프라인 실행을 통과하거나 실패하는 데 사용하는 출력을 생성합니다.

Jenkins에서 플러그인을 사용하려면 먼저 역할이 Jenkins가 설치된 EC2 인스턴스에 연결되어 있는지 확인하거나 Amazon Inspector API를 호출할 수 있는 권한이 있는 AWS 액세스 키와 비밀 액세스 키가 있는지 확인합니다.

Jenkins에서 직접 플러그인을 설치합니다(Jenkins 대시보드 > Jenkins 관리 > 플러그인).

Inspector CICD - Jenkins 플러그인 설치

그런 다음, Amazon Inspector 스캔 단계를 파이프라인에 추가합니다.

Inspector CICD - Jenkins 단계 추가

생성한 IAM 역할(또는 온프레미스에서 실행하는 경우 AWS 액세스 키와 비밀 액세스 키), Docker 보안 인증 정보, AWS 리전이미지 ID를 사용하여 단계를 구성합니다.

Inspector CICD - Jenkins 플러그인 구성

Amazon Inspector에서 취약성을 탐지하면 이를 플러그인에 보고합니다. 구축이 실패합니다. 세부 정보는 Jenkins에서 직접 확인할 수 있습니다.

Inspector CICD - Jenkins의 조사 결과

SBOM 생성에서 Alpine, Amazon Linux, Debian, Ubuntu 및 Red Hat 패키지와 같이 인기 있는 운영 체제의 패키지 또는 애플리케이션을 이해합니다. 또한 Go, Java, NodeJS, C#, PHP, Python, Ruby 및 Rust 프로그래밍 언어용 패키지도 탐지합니다.

에이전트를 설치하지 않고 Amazon EC2의 취약성 탐지(미리 보기)
마지막으로 에이전트 없는 EC2 인스턴스 검사에 대해 설명하겠습니다.

현재 Amazon Inspector는 AWS Systems ManagerAWS Systems Manager Agent(SSM Agent)를 사용하여 EC2 인스턴스의 인벤토리에 대한 정보를 수집합니다. Amazon Inspector에서 인스턴스와 통신할 수 있도록 하려면 3가지 조건을 확인해야 합니다. 첫째, 최신 버전의 SSM Agent가 인스턴스에 설치됩니다. 둘째, SSM Agent가 시작됩니다. 셋째, SSM Agent에서 SSM 서비스와 다시 통신할 수 있도록 IAM 역할을 인스턴스에 연결했습니다. 이는 공정하고 간단해 보입니다. 그러나 여러 OS 버전, AWS 리전 및 계정에 걸친 대규모 배포를 고려하거나 레거시 애플리케이션을 관리하는 경우에는 그렇지 않습니다. 이러한 3가지 조건을 충족하지 않고 시작된 각 인스턴스는 인프라의 잠재적인 보안 허점이 됩니다.

에이전트 없는 스캔(미리 보기)을 사용하면 Amazon Inspector에서 SSM 에이전트가 인스턴스를 스캔할 필요가 없습니다. 기존 및 새 인스턴스를 자동으로 검색하고 이에 대한 취약성 평가 일정을 예약합니다. 이 작업은 인스턴스의 EBS 볼륨 스냅샷을 생성하고 분석하여 수행됩니다. 이 기술에는 인스턴스에서 CPU 주기 또는 메모리를 소비하지 않고 하드웨어(가상)를 워크로드에 100% 사용할 수 있다는 추가 이점이 있습니다. 분석이 완료되면 Amazon Inspector에서 스냅샷을 삭제합니다.

시작하려면 AWS Management Console의 Amazon Inspector 섹션에 있는 EC2 스캔 설정 아래에서 하이브리드 스캔을 활성화합니다. 하이브리드 모드는 Amazon Inspector에서 SSM Agent 기반 스캔을 SSM으로 관리되는 인스턴스에 계속 사용하고 SSM으로 관리되지 않는 인스턴스에 대해 에이전트 없는 모드로 자동으로 전환하는 것을 의미합니다.

Inspector에서 하이브리드 스캔 활성화

계정 관리 아래에서 스캔된 인스턴스 목록을 확인할 수 있습니다. SSM Agent를 통해 스캔되는 인스턴스와 그렇지 않은 인스턴스를 확인할 수 있습니다.

Inspector에서 모니터링된 인스턴스 나열

조사 결과 아래에서 취약성, 계정, 인스턴스 등을 기준으로 필터링할 수 있습니다. 인스턴스 기준을 선택하고, 검토하려는 에이전트 없는 인스턴스를 선택합니다.

해당 특정 인스턴스에 대해 Amazon Inspector에서 200개가 넘는 조사 결과를 심각도별로 정렬하여 나열합니다.

Inspector에서 조사 결과 나열

평소와 같이 조사 결과의 세부 사항을 확인하여 어떤 위험인지와 해당 위험을 완화하는 방법을 이해할 수 있습니다.

조사 결과에 대한 Inspector 세부 정보

요금 및 가용성
Lambda 함수에 대한 Amazon Inspector 코드 수정은 미국 동부(오하이오, 버지니아 북부), 미국 서부(오레곤), 아시아 태평양(싱가포르, 시드니, 도쿄), 유럽(프랑크푸르트, 아일랜드, 런던, 스톡홀름)의 10개 리전에서 사용할 수 있습니다. 추가 비용 없이 사용할 수 있습니다.

Amazon EC2에 대한 Amazon Inspector의 에이전트 없는 취약성 스캔은 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)의 3개 AWS 리전에서 미리 보기로 제공됩니다.

빌드 시 컨테이너를 스캔하는 새 API는 현재 Amazon Inspector를 사용할 수 있는 21개 AWS 리전에서 사용할 수 있습니다.

선결제 비용이나 구독 비용이 없습니다. 활동량에 따라 온디맨드 요금을 청구합니다. EC2 인스턴스 또는 컨테이너 이미지 스캔당 가격이 있습니다. 평소와 같이 세부 정보는 Amazon Inspector 요금 페이지에 있습니다.

이제 Jenkins 또는 TeamCity 에이전트를 컨테이너식 애플리케이션 CI/CD 파이프라인에 추가하여 시작하거나 에이전트 없는 Amazon EC2 검사를 활성화합니다.

이제 직접 구축해 보세요!

— seb