BLOG
AWS Well-Architected 프레임워크의 보안 Pillar에 설명된 대로, 사용자 환경 내에서 실행 중인 시스템의 보안 구성을 세심하게 관리하는 것은 강력하고 안전하며 확장 가능한 시스템을 유지하는 방법의 기초를 이룹니다.
오픈 소스 테스트 프레임워크인 InSpec by Chef는 팀들에게 전체 애플리케이션 라이프 사이클에 걸쳐 시스템 상태를 정의하고 평가할 수 있는 기능을 제공합니다. InSpec은 이미 AWS OpWorks와 함께 사용할 수 있습니다. Chef Automate에서는 미리 정의된 정책을 기반으로 인프라의 규정 준수를 추적하기 위해 자동화합니다. 예를 들어 InSpec에서 규정 준수 제어를 설명하고 이러한 테스트를 배포 파이프라인의 모든 단계에 통합하거나 미리 패키지화된 InSpec 프로파일에서 선택할 수 있습니다. 그런 다음 준수 창을 통합 대시보드로 사용하여 문제를 식별하고, 해결하고, 다양한 노드 및 프로파일의 진행률을 추적할 수 있습니다.
“2017년 Chef 사용자 설문 조사에 따르면, 55%의 조직이 규정 준수 평가를 완벽하게 수행하지 못 합니다.”라고 Chef에서 엔지니어와 통합 파트너 부회장인 James Casey가 말했습니다. “Amazon Web Services 및 Chef는 Chef Automate에 대한 AWS OpsWorks와의 통합에 속한 InSpec을 사용하여 고객이 규정 준수 여부를 파악하고 자동화하도록 지원합니다. 이제 고객은 InSpec의 프레임워크를 사용하는 데 더 많은 옵션을 사용할 수 있으며, AWS 시스템 매니저를 통해 InSpec을 사용할 수 있게 되었습니다.”
이 블로그 게시물에서는 InSpec과 함께 사용할 수 있는 AWS Systems Manager의 세가지 기능에 대해 집중적으로 알아보겠습니다.
- 명령 실행—InSpec을 사용하여 인프라에 대한 임시 검사를 실행하는 간단한 방법을 제공합니다.
- 상태 관리자-시스템의 규정 준수를 지속적으로 평가할 수 있도록 InSpec 테스트를 실행하도록 합니다.
- 구성 규정 준수-InSpec 테스트 결과에 대한 정보를 수집하고 집계합니다.
새로 정의된 시스템 매니저 문서 AWS-RunInSpecChecks를 사용하여 InSpec 프로필을 실행하여 보안 기준선을 기반으로 Windows 및 Linux 서버의 구성을 확인합니다.
단계에 대한 개요는 다음과 같습니다.
- 시스템 매니저 관리 인스턴스를 시작합니다.
- InSpec 프로파일이 있어야 합니다. 이 블로그에서는 GitHub의 DevSec Hardening 프레임워크 프로젝트에서 미리 정의된 프로파일을 사용하여 보안 기준선에 기반하여 Linux와 Windows 서버를 모두 확인할 수 있습니다.
- Run Command 또는 State Manager를 사용하여 InSpec 테스트를 실행합니다. 스크립트가 이를 지원하기 때문에 서버를 InSpec에 설치하지 않아도 됩니다.
- 준수 테스트의 결과를 봅니다.
관리 인스턴스 시작하기
InSpec 테스트 실행의 대상이 되는 관리 인스턴스가 하나 이상 필요합니다. AWS 계정에 이미 하나 이상의 시스템 매니저 관리 인스턴스가 있는 경우 이 단계를 건너뛸 수 있습니다.
그렇지 않은 경우 두 개의 Amazon EC2 인스턴스, 한 개의 Windows Server 2012 R2 Base 및 한개의 Amazon Linux를 시작하여 테스트 관리 인스턴스로 작동하는 AWS CloudFormation 스택을 시작할 수 있습니다. 스택은 AmazonEC2RoleforSSM 관리 정책을 사용하여 IAM 역할 및 인스턴스 프로파일도 생성합니다.
다음 링크를 클릭하면 us-east-1 (버지니아 북쪽)리전에서 스택이 시작됩니다.
CloudFormation 템플릿을 사용하려면 다음 변수가 필요합니다.
- KeyPair: 목록에서 Amazon EC2 key pair을 선택합니다. key pair에 해당하는 개인 키가 있는지 확인하십시오.
- Subnet: 인스턴스를 시작할 subnet을 선택합니다. subnet이 인터넷 게이트웨이, NAT 게이트웨이 또는 시스템 관리자용 VPC 엔드포인트를 통해 인터넷 주소 및 시스템 관리자 API 엔드포인트에 아웃바운드 액세스를 할 수 있는지 확인합니다.
- Vpcld: Subnet에서 선택한 subnet에 대한 VPC를 선택합니다.
CloudFormation 스택은 다음과 같은 결과물을 제공합니다.
- LinuxServer: Linux 서버의 EC2 인스턴스
- WindowsServer: Windows 서버의 EC2 인스턴스
GitHub 계정을 저장할 변수 생성하기
GitHub에서 InSpec 프로필을 다운로드 하기 위해서는 GitHub 개인 계정이 필요합니다. GitHub 계정이 아직 없다면 Join GitHub 의 단계를 따라서 계정을 만들고, 안전한 위치에 저장하십시오.
AWS CLI를 사용하여 GitHub 개인 접근 계정을 저장하기 위해 매개 변수 저장소를 사용할 수 있습니다.
또는 시스템 매니저 콘솔을 사용하여 다음 단계를 수행할 수 있습니다.
- AWS관리 콘솔에서 시스템 매니저 콘솔로 이동합니다. 왼쪽 탐색 창에서 변수 저장소를 선택합니다. 그런 다음 변수 생성을 선택합니다.
- 이름에 github-personal-token을 입력합니다.
- 설명에 GitHub 개인 계정을 입력하세요.
- Type의 경우 SecureString을 선택하고 기본 KMS Key ID alias/aws/ssm를 수락합니다.
- Value에 이전에 저장해 둔 GitHub의 개인 계정의 가치를 복사하여 붙여 넣으십시오.
- 변수생성을 선택해서 변수를 생성합니다.
Windows 서버에서 InSpec 테스트 실행하기
이 단계에서 Windows 서버에 대해 InSpec 프로필을 실행합니다. InSpec 프로파일은 여러 제어를 구성하여 종속성 관리 및 코드 재사용을 지원합니다. 각 프로파일은 고유한 배포 및 실행 흐름을 가진 독립 실행형 구조입니다.
- 시스템 매니저 콘솔에 로그인하고 왼쪽 탐색 창에서 명령 실행을 선택합니다.
- 명령 실행을 선택합니다.
- 검색 모음에서 Document name prefix로 검색하도록 선택합니다. 조건으로 같음을 선택하고 AWS-Run을 접두사로 입력합니다. 명령 문서 목록에서 AWS-RunInSpecChecks라는 문서를 선택합니다.
- 대상(인스턴스 또는 태그)을 선택합니다. 검색 표시줄에서 필터 플랫폼을 선택하고 Windows를 선택하여 목록을 Windows 서버로 좁힐 수 있습니다.
- 명령 매개 변수 섹션에서 Source Type으로 Github를 선택합니다. 다음을 소스 정보의 텍스트 영역에 입력하여 GitHub에서 DevSec Hardening 프레임워크 프로젝트에서 정의한 보안 기준선에 따라 Windows 서버를 확인하는 InSpec 프로파일을 실행합니다.
- 나머지 매개 변수의 기본 값을 그대로 사용하고 실행을 선택합니다.
- 대상 및 출력 목록에 표시되는 인스턴스의 상태가 진행 중에서 성공으로 변경될 때까지 명령 상태 페이지를 새로 고칩니다.
- 실행 명령의 출력을 보려면 목록에서 인스턴스 ID를 선택하십시오. 출력 결과를 보기 위해 결과 페이지에 표시되는 단계를 확장하십시오.
- runInSpecWindows 단계 출력에 성공적으로 실행되는지, 테스트 횟수와 준수 및 비준수 테스트의 수를 나타내는 줄이 표시되는지 확인합니다. 스크립트가 Chef Development Kit(chefdk)를 설치하고, InSpec 테스트를 실행한 다음 chefdk를 제거합니다. 예를 들어:
준수 항목 보기
이 단계에서는 시스템 매니저 규정 준수의 테스트 결과를 볼 수 있습니다.
- 시스템 매니저 콘솔에 로그인하고 Built-in insights 탐색을 선택합니다.
- 왼쪽의 탐색 창에서 준수를 선택합니다.
- 규정 준수 항목 요약이 차트로 표시되고 관리 인스턴스 목록이 표시됩니다.
- 관리 인스턴스를 선택하여 실행된 InSpec 테스트의 결과로 생성된 Custom:InSpec 유형의 규정 준수 항목 목록을 봅니다. 각 항목에는 제목 설명, 규정 준수 상태(테스트 통과)또는 비준수(테스트 실패), 심각도 등이 있습니다.
Linux 서버에서 InSpec 테스트 실행
Linux 서버에서 InSpec 테스트를 실행하려면 이전 섹션의 단계를 수행하지만 4단계에서 하나 이상의 Linux 서버를 선택합니다. 6단계에서 소스 정보에 다음을 입력하여 DevSec Hardening 프레임워크 프로젝트에 의해 정의된 SSH 기준선에 기반하여 Linux 서버를 검사하는 InSpec 프로파일을 실행합니다.
또한 샘플 크로스 플랫폼 InSpec 프로파일을 실행하여 열려 있는 SSH 및 RDP 포트를 확인하도록 선택할 수도 있습니다. 다음과 같은 소스 정보를 입력하고 Linux 서버와 Windows 서버의 조합을 선택하십시오.
결론
이 블로그 포스트에서는 시스템 관리자가 InSpec by Chef을 사용하여 규정 준수 검사를 실행하는 방법을 보여 주었습니다. 시범 연습에서는 개별 시험을 실행하기 위해 실행 명령을 사용했습니다. 또한 시스템의 규정 준수를 지속적으로 평가할 수 있도록 상태 관리자 연결을 생성하여 스케쥴에 따라 이러한 테스트를 실행할 수 있습니다.
자세한 내용과 시작 방법을 보려면 AWS Systems Manager 랜딩 페이지를 방문하십시오.
지우기
앞서 설명한 CloudFormation 템플릿을 사용하여 인스턴스를 시작한 경우 이러한 리소스를 삭제하여 앞으로 비용이 부과되지 않도록 할 수 있습니다.
- CloudFormation 콘솔에서 SSM-InSpec이라는 스택을 선택하고 작업에서 스택 삭제를 선택합니다.
- 스택이 스택 목록에서 사라질 때까지 스택의 이벤트 탭을 새로 고칩니다.
원문 URL: https://aws.amazon.com/ko/blogs/mt/using-aws-systems-manager-to-run-compliance-scans-using-inspec-by-chef/
** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.