SSM이란?
- EC2와 On-Premise 시스템 관리를 용이하게 해줌
- Infra에 대한 상태 가시성을 향상시킴
- 문제발생시 조기에 탐지 가능
- 컴플라이언스를 위한 Patch를 자동화함
- Windows와 Linux OS에서 동작
- CloudWatch Metrics, Dashboard에 연동가능
- AWS Config에 연동가능
SSM 특징
- 리소스 그룹화 : AWS 리소스를 그룹화하고 리소스 그룹에 저장하기
- 인사이트 제공 : 그룹화된 리소스에 대한 관련 운영 데이터 및 대시보드 보기
- 작업 수행
- EC2생명주기 자동화, AMI생명주기 자동화
- Command를 실행할 수 있음
- Session Manager
- Patch Manager
- Maintenance Windows
- State Manager : OS와 Application을 정의하고 환경설정을 유지관리
SSM작동원리
1. SSM Agent를 설치
※ Amazon Linux AMI 또는 몇몇 AMI에는 사전 설치되어있음
2. 만약 SSM으로 인스턴스가 컨트롤되지 않으면 SSM Agent문제일 가능성이 높음
※ Agent 상태 체크 필요. SSM동작에 적합한 IAM Role을 부여할 필요 있음
SSM Agent가 사전설치된 AMI를 사용할 경우 SSM활성화 방법
※ SSM Agent가 사전 설치된 AMI 목록
- Amazon Linux
- Amazon Linux 2
- Amazon Linux 2 ECS-Optimized Base AMIs
- macOS 10.14.x (Mojave), 10.15.x (Catalina), and 11.x (Big Sur)
- SUSE Linux Enterprise Server (SLES) 12 and 15
- Ubuntu Server 16.04, 18.04, and 20.04
- Windows Server 2008-2012 R2 AMIs published in November 2016 or later
- Windows Server 2016, 2019, and 2022
1. [AWS Console]-[AWS Systems Manager] 콘솔을 엽니다.
2. 탐색 창에서 [Quick Setup]를 선택합니다.
3. 적용할 홈 리전(home Region)을 선택합니다.
4. 시작하기를 선택합니다.
5. SSM으로 적용할 서비스를 선택합니다. 필자는 "Host Management"를 선택하였습니다.
6. 상세한 환경을 설정합니다.
7. 적용대상을 한정합니다. Tag를 기준할 수 도 있고 리소스 그룹 기준으로 적용할 수 도 있습니다. "All instances"는 모든 인스턴스에 적용함을 뜻합니다.
8. 적용완료.
9. [상태관리] 메뉴에 들어가서 확인해보면 방금 설정한 상태설정이 나열됩니다.
10. [플릿관리자] 를 접속하면 SSM이 적용된 인스턴스목록이 보입니다.
On-Premise 서버도 등록하여 함께 관리하기
On-Premise서버도 SSM을 통하여 중앙집중식 관리를 하면 다음의 장점이 있습니다.
- 한 곳에서 동일한 도구와 스크립트를 사용하여 하이브리드 워크로드를 원격으로 관리할 수 있는 일관성 있고 안전한 수단이 됩니다.
- AWS Identity and Access Management(IAM)를 통해 서버와 VM에서 수행할 수 있는 작업에 대한 액세스 제어를 중앙 집중화합니다.
- AWS CloudTrail에서 모든 작업을 기록하여 서버와 VM에서 수행되는 작업에 대한 감사와 모니터링을 중앙 집중화합니다.
- 서비스 실행 성공에 대한 알림을 보내록 Amazon EventBridge 및 Amazon Simple Notification Service(Amazon SNS)를 구성하여 모니터링을 중앙 집중화합니다.
사용방법
1. [AWS Console]-[AWS System Manager]-[하이브리드활성화] 를 접속합니다.
2. "Create an Activation"버튼을 클릭합니다.
3. On-Premise환경의 Agent가 수행할 IAM Role 등을 설정합니다. 그리고 생성을 완료합니다.
4. 하이브리드 활성화가 완료되면 Activation Code와 ID가 발급됩니다.
5. 하이브리드 환경의 서버 또는 VM에 로그온합니다.
6. 아래의 설치 CLI를 해당 서버에서 실행합니다. 관리형 인스턴스 활성화를 생성할 때 생성된 활성화 코드 및 활성화 ID와 SSM Agent를 다운로드하려는 AWS 리전의 식별자로 자리 표시자 값을 바꾸고 실행합니다.
Amazon Linux 2, RHEL 7.x, Oracle Linux 및 CentOS 7.x
$ mkdir /tmp/ssm
$ curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
$ sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
$ sudo systemctl stop amazon-ssm-agent
$ sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region"
$ sudo systemctl start amazon-ssm-agent
Amazon Linux, RHEL 6.x 및 CentOS 6.x
$ mkdir /tmp/ssm
$ curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
$ sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
$ sudo stop amazon-ssm-agent
$ sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region"
$ sudo start amazon-ssm-agent
리소스 그룹 사용하기
많은 리소스에 대해서 그룹을 정의하고 작업을 한번에 관리하고 자동화할 수 있는 서비스입니다. 이 리소스 그룹은 중첩되어서 적용될 수 있습니다.
주 사용사례
- 개발, 스테이징, 프로덕션 등의 여러 단계를 거치는 애플리케이션
- 여러 부서 또는 개인이 관리하는 프로젝트.
- 공통 프로젝트에 함께 사용하거나 그룹으로 관리 또는 모니터링하려는 AWS 리소스 세트.
- Android 또는 iOS 등과 같은 특정 플랫폼에서 실행되는 애플리케이션과 관련된 리소스 세트
사용방법
1. [AWS Console]-[Resource Groups & Tag Editor]-[리소스]-[리소스 그룹 생성]을 접속합니다.
2. "태그기반" 과 "CloudFormation 스택기반" 두가지 타입이 있습니다.
- 태그 기반
태그 기반 쿼리에는 리소스 및 태그의 목록이 포함됩니다. 태그는 조직 내에서 리소스를 식별하고 분류하는 데 도움이 되는 키입니다. 태그에 키 값을 포함시킬 수도 있습니다. - AWS CloudFormation 스택 기반
AWS CloudFormation 스택 기반 쿼리에서 현재 리전의 계정에서 AWS CloudFormation 스택을 선택한 후 그룹에 속하고 싶은 스택 내에서 리소스 유형을 선택합니다. 쿼리를 하나의 AWS CloudFormation 스택에만 기반할 수 있습니다.
SSM을 통한 Command를 실행하기
사용방법
1. [AWS Console]-[노드관리]-[명령실행(Run Command)] 선택
2. 명령실행 버튼을 클릭합니다.
3. 명령은 IaC 도구와 같이 Playbook 형식의 문서를 제공합니다. 수행하고자 하는 적절한 문서를 선택합니다.
4. 명령파라미터 섹션에서 필요한 파라미터의 값을 지정합니다.
5. 대상(Targets) 섹션에서, 태그를 지정하거나, 수동으로 인스턴스나 엣지 디바이스를 선택하거나, 리소스 그룹을 지정하여 이 작업을 실행할 관리형 노드를 식별합니다.
6. 다른 파라미터를 세팅합니다.
- 설명(Comment)에 명령에 대한 정보를 입력합니다.
- 제한 시간(초)에서 전체 명령 실행이 실패할 때까지 시스템이 기다리는 시간을 초 단위로 지정합니다.
- 속도 제어(Rate control)의 동시성(Concurrency)에서 명령을 동시에 실행할 관리형 노드의 백분율 또는 개수를 지정합니다.
- 오류 임계값(Error threshold)에서, 명령이 노드의 개수 또는 백분율에서 실패한 후 다른 관리형 노드에서 해당 명령의 실행을 중지할 시간을 지정합니다. 예를 들어 세 오류를 지정하면 네 번째 오류를 받았을 때 Systems Manager가 명령 전송을 중지합니다. 여전히 명령을 처리 중인 관리형 노드도 오류를 전송할 수 있습니다.
- (선택 사항) 출력 옵션에서 명령 출력을 파일에 저장하려면 S3 버킷에 명령 출력 쓰기 상자를 선택합니다. 상자에 버킷 및 접두사(폴더) 이름을 입력합니다.
- SNS 알림 섹션에서, 명령 실행 상태에 대한 알림이 전송되도록 하려면 SNS 알림 활성화 확인란을 선택합니다.
7. 실행(Run)을 선택합니다.
SSM을 통한 Patch관리를 쉽게 하기
AWS Systems Manager의 기능인 Patch Manager는 Patch Manager에서 지원하는 운영 체제마다 미리 정의된 패치 기준을 제공합니다. 이러한 기준은 현재 구성된 대로 사용하거나(사용자 지정할 수 없음) 고유한 사용자 지정 패치 기준을 생성할 수 있습니다. 사용자 정의 패치 기준을 사용하면 환경에 대해 승인 또는 거부되는 패치를 더욱 효과적으로 제어할 수 있습니다.
미리정의된 패치 기준정보 예시
AWS-AmazonLinuxDefaultPatchBaseline | Amazon Linux | "Security"로 분류되고, 심각도 수준이 "Critical" 또는 "Important"로 분류되는 모든 운영 체제 패치를 승인합니다. 패치는 출시 7일 후 자동 승인됩니다. 또한 릴리스 후 7일간 "Bugfix"로 분류되는 모든 패치도 자동 승인합니다. |
AWS-AmazonLinux2DefaultPatchBaseline | Amazon Linux 2 | "Security"로 분류되고, 심각도 수준이 "Critical" 또는 "Important"로 분류되는 모든 운영 체제 패치를 승인합니다. 패치는 출시 7일 후 자동 승인됩니다. 또한 릴리스 후 7일간 "Bugfix"로 분류되는 모든 패치도 승인합니다. |
사용자 지정 기준정보 란?
- [AWS Console]-[노드관리]-[패치관리자]-"사전정의된 패치 기준 보기"를 선택합니다. 자체 패치 기준선을 생성하는 경우 다음 카테고리를 사용하여 자동 승인할 패치를 선택할 수 있습니다.
- 운영 체제: Windows, Amazon Linux, Ubuntu Server 등
- 제품 이름(운영 체제용): 예를 들어 RHEL 6.5, Amazon Linux 2014.09, Windows Server 2012, Windows Server 2012 R2 등
- 제품 이름(Microsoft에서 릴리스한 Windows Server 기반 애플리케이션만 해당): 예를 들어 Word 2016, BizTalk Server 등
- 분류: 예를 들어 필수 업데이트, 보안 업데이트 등
- 심각도: 예를 들어 Critical, Important 등
- 자동 승인 마감 날짜를 지정하면 Patch Manager는 해당 날짜 또는 그 이전에 릴리스된 모든 패치를 자동으로 적용합니다.
- 승인패치, 거부패치 지정이 가능합니다. 패치 명명법은 다음링크를 참조
승인 패치 및 거부 패치 목록의 패키지 이름 형식 정보 - AWS Systems Manager
Debian Server 목록과 Raspberry Pi OS 목록, Ubuntu Server 목록의 경우 아키텍처나 버전 등의 요소를 포함하지 않습니다. 예를 들어 패치 목록에 다음을 모두 포함시키려면 ExamplePkg33 패키지 이름을 지정합
docs.aws.amazon.com
기준정보를 활용하여 패치 구성 생성
사용방법
1. [AWS Console]-[노드관리]-[패치관리자]-"패치적용구성" 을 선택합니다.
2. Configure patching(패치 구성)을 선택합니다.
3. Instances to patch(패치를 적용할 인스턴스) 섹션에서 다음 중 한 가지를 선택합니다.
- 인스턴스 태그 입력(Enter instance tags): 태그 키와 선택적 태그 값을 입력하여 패치를 적용할 태그 지정된 관리형 노드를 지정합니다. 추가(Add)를 선택하여 태그 지정된 관리형 노드를 추가로 포함합니다.
- 패치 그룹 선택(Select a patch group): 패치를 적용할 관리형 노드를 포함하는 기존 패치 그룹의 이름을 선택합니다.
- 수동으로 인스턴스 선택(Select instances manually): 패치를 적용할 각 관리형 노드의 이름 옆에 있는 확인란을 선택합니다.
4. Patching schedule(패치 일정) 섹션에서 다음 중 한 가지를 선택합니다.
- 기존 유지 관리 기간 선택(Select an existing maintenance window): 목록에서 이미 생성한 유지 관리 기간을 선택한 후 7단계를 계속합니다.
- Schedule in a new maintenance window(새 유지 관리 기간에서 예약): 이 패치 구성에 연결할 새 유지 관리 기간을 생성합니다.
- Skip scheduling and patch now(지금 일정 및 패치 건너뛰기): 일정 또는 유지 관리 기간 없이 일회성 수동 패치 적용 작업을 실행합니다. 계속해서 7단계를 진행합니다.
5. 패치 적용 작업(Patching operation) 영역에서 누락된 패치에 대한 관리형 노드를 스캔하여 필요한 경우 적용하거나, 누락 패치만 스캔하여 목록을 생성할지 여부를 선택합니다.
6. Configure patching(패치 구성)을 클릭하여 완료
SSM Inventory란?
AWS 컴퓨팅 환경에 대한 가시성을 제공합니다.
AWS Systems Manager자동화
AWS 서비스에 대한 일반적인 유지 관리, 배포 및 수정 태스크를 단순화합니다.
사전 정의된 실행서가 몇 가지 포함되며, 이들 실행서를 사용하여 Amazon EC2 인스턴스를 하나 이상 다시 시작하거나 Amazon Machine Image(AMI)를 생성하는 등 일반적인 태스크를 수행할 수 있습니다. 사용자 고유의 실행서를 생성할 수도 있습니다.
사용방법
[AWS Console]-[AWS System Manager]-[자동화] 접속
"자동화 실행" 을 선택합니다.
Automation 문서에서 적합한 실행서를 선택합니다.
문서 세부 정보 섹션에서 문서 버전이 실행할 버전으로 설정되었는지 확인합니다. 이 시스템에는 다음 버전 옵션이 포함되어 있습니다.
다음을 선택합니다.
실행 모드 섹션에서 "Simple execution(단순 실행)"을 선택합니다.
입력 파라미터 섹션에서 필수 입력을 지정합니다. 필요에 따라 [AutomationAssumeRole] 목록에서 IAM 서비스 역할을 선택합니다.
실행을 선택합니다.
Golden AMI 생성 자동화 프로세스
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) AWS Config란? (0) | 2022.03.25 |
---|---|
(AWS) EKS에서 ALB를 생성할 때 유의할점 (0) | 2022.03.18 |
(AWS) EKS를 ekscli로 Private Subnet으로 구축하기 (0) | 2022.03.17 |
(AWS) Tag를 어떻게 관리해야할까 (0) | 2022.03.17 |
(AWS) AWS리소스에 ElasticSearch를 적용하는 UseCases (0) | 2022.03.17 |