[AWS] AWS Systems Manager에 대하여
[AWS] AWS Systems Manager
https://aws.amazon.com/ko/systems-manager/
AWS Systems Manager는 하이브리드 클라우드 환경을 위한 안전한 엔드 투 엔드 관리 솔루션입니다.
EC2 Systems Manager 또는 Simple Systems Manager(SSM)로도 알려진 AWS Systems Manager는 AWS의 리소스 및 온프레미스 서버의 자동 및 수동 작업을 관리합니다.
운영 측면에서 Systems Manager는 수작업 및 스크립트 작성 등이 필요한 유지보수 작업을 돕는 도구로서 다음과 같은 업무를 수행합니다.
- 온프레미스와 EC2 인스턴스의 패키지 업그레이드
- 설치 소프트웨어 목록 생성
- 새 애플리케이션 설치
- EBS 스냅샷을 이용한 AMI 이미지 생성
- IAM 인스턴스 프로파일 부착
- S3 버킷에 대한 퍼블릭 접근 차단
Systems Manager의 주요 기능은 다음 두 가지입니다.
- 액션(Actions)
- 인사이트(Insights)
액션(Actions)
- 자동화(Automation) 액션 : AWS 리소스에 대한 작업을 수행
- 명령(Command) 액션 : Linux 또는 Windows 인스턴스에 대한 작업을 수행
- 정책(Policy) 액션 : 관리중인 인스턴스로부터 목록 데이터를 수집하는 과정을 정의
자동화(Automation) 액션
자동화 액션은 AWS 리소스에 대해 일괄적으로 작업을 수행할 수 있습니다.
다수의 EC2 인스턴스 재시작, CloudFormation 스택 업데이트, AMI 패치 등의 작업을 일괄적으로 처리할 수 있습니다.
자동화 액션을 통해 개별 작업을 세분화된 방식으로 처리할 수 있으며, 일괄적으로 전체 자동화 업무를 처리하거나, 필요한 상황과 시점에 맞춰 단계별로 처리되도록 할 수 있습니다. 자동화 액션은 한 번에 몇 개의 리소스를 처리 대상으로 삼을지 숫자 또는 퍼센트 단위로 설정할 수 있습니다.
Run 명령
자동화 액션이 AWS 리소스에 대한 작업을 수행한다면, Run 명령은 관리 대상 인스턴스에 대한 작업 수행을 도우며, 로그인 없이 접속하거나 커스텀 스크립트 실행을 위해 서드파티 도구를 실행합니다.
Systems Manager는 EC2 및 온프레미스 인스턴스에 설치된 에이전트를 통해 관련 작업을 수행합니다. Systems Manager 에이전트는 Windows Server, Amazon Linux, Ubuntu Server AMI 등에 기본적으로 설치돼 있으며, 다른 EC2 및 온프레미스 인스턴스에는 수동으로 설치할 수 있습니다.
기본적으로 Systems Manager는 인스턴스와 관련된 작업을 할 수 있는 어떤 권한도 지니고 있지 않으므로 AmazonEC2RoleforSSM 정책에서 프로파일 룰을 추가해야 합니다.
AWS는 Linux 및 Windows 인스턴스를 위해 사전 설정된 다양한 명령 문서를 제공합니다.
예를 들어, AWS-InstallApplication 문서는 Windows에 소프트웨어를 설치하며, AWS-RunShellScript 문서는 Linux 인스턴스에서 임의의 쉘 스크립트를 실행합니다. 이외에 WIndow 서비스 재시작 또는 CodeDeploy 에이전트 설치 등을 위한 문서도 있습니다.
작업 대상 인스턴스는 태그로 필터링하거나 개별적으로 선택할 수 있으며, 자동화 옵션 사용시, 한 번에 몇 개의 인스턴스를 처리할지 선택할 수 있습니다.
세션 매니저
세션 매니저는 시큐리티 그룹, NACL에서 인바운드 포트 개방 없이 혹은 퍼블릭 서브넷에 인스턴스를 두지 않고도 Linux와 인스턴스에 대한 Bash 및 PowerShell 접속을 지원합니다.
Bastion Host 설정이나 SSH 키 문제를 걱정할 필요가 없으며, 모든 Linux 버전 및 Window Server 2008 R2 부터 최신의 2016까지 지원합니다.
세션은 웹 콘솔 또는 AWS CLI로 시작하며, AWS CLI로 세션을 시작하기에 앞서 로컬 머신에 Session Manager 플러그인을 설치해야 합니다. Session Manager SDK는 인스턴스에 연결되는 커스텀 애플리케이션 개발을 돕는 라이브러리를 담고 있으며, 시크류티 그룹이나 NACL에서 포트를 열지 않고도 기존 환경설정 관리 시스템을 통합해서 사용할 수 있어서 유용합니다.
Session Manager를 이용한 연결은 TLS 1.2로 보호되며, 모든 로드는 CloudTrail에 저장하고, 세션에서 실행하는 모든 명령은 S3 버킷에 저장됩니다.
패치 매니저
패치 매니저는 Linux 및 Windows 인스턴스 패치 업무의 자동화 도구이며, 다음과 같은 OS를 지원합니다.
- Windows Server
- Ubuntu Server
- Red Hat Enterprise Linux(RHEL)
- SUSE Linux Enterprise Server(SLES)
- CentOS
- Amazon Linux
- Amazon Linux 2
패치 대상 인스턴스는 태그 등을 기준으로 선택할 수 있으며, 패치 그룹을 생성해서 작업을 진행할 수 있습니다. 패치 그룹은 Patch Group 태그 키를 지닌 인스턴스 모음입니다.
예를 들어, Webservers라는 패치 그룹에 인스턴스 몇 개를 포함시키려는 경우 태그 키는 Patch Group으로 태그 밸류는 Webservers로 입력하면 됩니다. 이 때 태그 키는 대소문자를 구별합니다.
패치 매니저는 패치 베이스라인을 통해 패치 작업을 수행할 대상을 정의하며, 이후 자동으로 패치 소프트웨어를 설치하거나 승인 후 설치 작업을 진행하도록 할 수 있습니다.
AWS는 기본 베이스라인을 통해 보안 수준, 민감성, 중요성, 필요성 등을 기준으로 패치 소프트웨어를 분류합니다. 패치 베이스라인은 Ubuntu를 제외한 다른 모든 OS에서 7일 후 자동으로 승인 및 설치되며, 이를 자동 승인 지연(auto-approval delay)이라 부릅니다.
어떤 패치가 설치될지 좀 더 세분화해서 관리하는 경우, 커스텀 베이스라인을 생성할 수 있습니다. 커스텀 베이스라인에는 OS를 정의하는 하나 이상의 승인 규칙이 포함되며, 설치할 패치의 분류 및 중요도 수준을 구분한 뒤, 자동 승인 지연 기능을 적용할 수 있습니다.
커스텀 베이스라인 환경설정에서 승인된 패치를 구체적으로 설정할 수 있습니다.
Window 베이스라인의 경우 knowledgebase 및 security bulletin ID를 설정할 수 있으며, Linux 베이스라인의 경우 Common Vulnerabilities and Exposure(CVE) ID를 설정하거나 전체 패키지 네임을 추가할 수 있습니다.
패치가 승인되면 설정한 유지보수 일정에 패치 작업이 진행되도록 하거나, 유지보수 일정이 도래하기 전에 즉각적으로 인스턴스에 대한 패치 작업을 실행할 수 있습니다. 패치 매니저는 패치 작업 수행을 위해 AWS-RunPatchBaseline 도큐먼트를 실행합니다.
스테이트 매니저
패치 매니저가 인스턴스에 대한 동일한 패치 수준을 유지하도록 돕는 도구라면, 스테이트 매니저는 여러분이 정의한 방식대로 소프트웨어를 가져오고 환경을 설정하는 환경설정 도구라고 할 수 있습니다.
스테이트 매니저는 인스턴스에 대해 일회성으로, 혹은 미리 정해진 일정에 따라, 자동으로 명령 및 정책 도큐먼트를 실행합니다. 예를 들어, 스테이트 매니저를 이용해서 인스턴스에 안티바이러스 소프트웨어를 설치한 뒤 관련 인벤토리를 가져올 수 있습니다.
스테이트 매니저를 사용하려면, 우선 실행할 명령 도큐먼트를 정의한 연계(association) 객체를 생성한 뒤, 전달할 파라미터, 타겟 인스턴스, 스케줄을 설정합니다. 스테이트 매니저는 타겟 인스턴스에 대해 온라인으로 즉시 실행된 뒤 이후 스케줄에 따라 실행됩니다.
현재 스테이트 매니저와 함께 사용할 수 있는 정책 도큐먼트로 AWS-Gather SoftwareInventory가 있습니다. 이 도큐먼트는 인스턴스로 부터 소프트웨어 인벤토리 등 특정 메타데이터를 수집하도록 하며, 여기엔 네트워크 환경설정, 파일 정보, CPU 정보 그리고 Windows의 경우 레지스트리 값 등이 포함됩니다.
인사이트(Insights)
일부 인사이트는 AWS 리전 내 리소스 모음인 AWS 리소스 그룹에 따라 카테고리화되며, 사용자는 태그 키와 태그 밸류를 이용해서 리소스 그룹을 정의할 수 있습니다.
예를 들어, EC2 인스턴스, S3 버킷, EBS 볼륨, 시큐리티 그룹 등 특정 애플리케이션과 관련된 모든 리소스에 동일한 태그 키를 적용할 수 있습니다.
빌트인 인사이트
빌트인 인사이트는 Systems Manager가 기본적으로 제공하는 모니터링 내역을 담고 있으며, 다음 내용을 포함합니다.
- AWS Config Compliance, AWS 룰 및 리소스 별 컴플라이언스의 적용을 받거나, 받지 않는 리소스 그룹에 포함된 전체 리소스 수 및 AWS Config가 추적한 환경설정 변경 사항 이력을 보여줍니다.
- CloudTrail Events, 그룹에 있는 리소스, 리소스 타입, 해당 리소스에 대해 CloudTrail이 마지막으로 기록한 이벤트 등을 보여줍니다.
- Personal Health Dashboard, 리소스에 영향을 미칠 수 있는 각종 이슈에 대한 경고를 제공합니다. 예를 들어, 일부 서비스 API의 응답 속도가 가끔식 느려지는 현상에 대한 이슈를 제기할 수 있습니다. 또한 지난 24시간동안 AWS에서 파악한 각종 이벤트의 수를 보여줍니다.
- Trusted Advisor Recommendations, 트러스티드 어드바이저는 비용최적화, 성능, 보안, 내오류성 등의 측면에서 AWS 환경 요소의 최적화를 돕고 적절한 권장안을 제시합니다. 또한 서비스 제한 수준의 80%를 초과한 내역도 보여줍니다.
모든 Business and Enterprise 지원 고객은 Trusted Advisor 확인 서비스에 접속할 수 있고, 모든 AWS 고객은 다음과 같은 보안 확인 서비스를 무료로 이용할 수 있습니다.
- S3 버킷에 대한 퍼블릭 액세스, 특히 업로드 및 삭제용 액세스 내역
- TCP 포트 1433(MySQL) 및 3389(Remote Desktop Protocol) 등 당연히 접근 제한을 해야하지만 제한 없이 접근할 수 있는 포트 내역이 포함된 시큐리티 그룹
- IAM 유저 생성 여부
- 루트 유저를 위한 MFA 활성화 여부
- EBS 또는 RDS 스냅샷에 대한 퍼블릭 액세스
인벤토리 매니저
인벤토리 매니저는 OS, 애플리케이션 버전 등 인스턴스의 데이터를 수집하며, 수집 내역은 다음과 같습니다.
- OS 이름 및 버전
- 애플리케이션 및 파일네임, 버전, 사이즈
- IP 및 MAC 주소 등 네트워크 환경설정
- Windows 업데이트, 롤, 서비스, 레지스트리 밸류
- CPU 모델, 코어, 스피드
AWS-GatherSoftwareInventory 정책 도큐먼트를 실행해서 리전별로 생성된 인벤토리에서 데이터를 수집할 인스턴스를 선택할 수도 있습니다.
계정 내 모든 인스턴스를 선택하거나 태그를 기준으로 인스턴스를 선택하는 것도 가능합니다. 계정 내 모든 인스턴스를 선택한 경우, 글로벌 인벤토리 어소시에이션(global inventory association)이라 부르며, 리전에서 생성한 인스턴스는 자동으로 해당 인벤토리에 추가됩니다. 인벤토리 수집 작업은 최소 30분마다 이루어집니다.
온프레미스 서버에서 Systems Manager 에이전트의 환경 설정을 하는 경우, 인벤토리 목적별로 리전을 지정해야 합니다. 다른 리전 또는 계정의 인스턴스로부터 메타데이터를 수집하려는 경우, 리전별로 Resource Data Sync의 환경을 설정해서 모든 인벤토리 데이터가 하나의 S3 버킷에 저장되도록 합니다.
컴플라이언스
컴플라이언스 인사이트는 사용자가 정한 환경 설정 규칙이 인스턴스의 패치 및 상태 관리에 어떻게 적용되고 있는지 보여줍니다.
패치 컴플라이언스(Patch Compliance)는 패치 베이스라인이 적용된 인스턴스의 수 및 설치된 패치의 세부 정보를 보여줍니다.
어소시에이션 컴플라이언스(Association Compliance)는 패치 작업이 성공적으로 실행된 인스턴스의 수를 보여줍니다.
AWS의 Systems Manager에 대하여 알아보았습니다.