☁️
AWS SSM
July 17, 2024
AWS SSM
AWS SSM
AWS SSM(Systems Manager)은 EC2 인스턴스와 온프레미스 시스템을 규모에 맞게 관리할 수 있도록 돕는 서비스다. 이를 통해 하이브리드 환경에서 인프라를 관리하고, 다양한 작업을 자동화할 수 있다.
SSM의 역할
- 운영 인사이트 제공: 인프라 상태에 관한 운영 인사이트를 제공하여, 시스템의 건강 상태를 모니터링하고 문제를 신속히 해결할 수 있다.
- 규정 준수 강화: 서버와 인스턴스에 패치를 자동으로 적용하여 보안 및 규정 준수를 강화할 수 있다.
- 명령 실행: SSM을 사용하여 전체 서버에 명령을 실행할 수 있다.
- 구성 관리: SSM 파라미터 스토어를 통해 구성 데이터를 안전하게 저장하고 관리할 수 있다.
SSM의 동작 원리
SSM 서비스는 제어하는 시스템에 SSM 에이전트를 설치하여 작동한다. 이 에이전트는 백그라운드에서 실행되며 AWS의 SSM 서비스에 데이터를 보고한다.
- EC2 인스턴스 및 온프레미스 시스템 지원: SSM 에이전트는 EC2 인스턴스와 온프레미스 가상 머신에 설치되며, 이를 통해 하이브리드 환경을 지원한다.
- 자동 설치: Amazon Linux AMI나 Ubuntu AMI를 사용하면 SSM 에이전트가 기본적으로 설치된다.
- 명령 및 패치 관리: SSM을 통해 전체 서버에 명령을 실행하거나 일관된 패치를 적용할 수 있다.
SSM 세션 관리자
SSM Session Manager는 EC2 인스턴스나 온프레미스 서버에 안전하게 접속할 수 있는 기능을 제공한다. SSH 액세스나 Bastion Host, SSH 키가 필요 없으며, 보안이 강화된다.
주요 특징
- SSH 없이 안전한 셸 접속: EC2 인스턴스의 22번 포트를 열 필요 없이 안전한 셸 접속을 제공한다.
- 다양한 플랫폼 지원: Linux, macOS, Windows를 지원한다.
- 로그 전송: Amazon S3나 CloudWatch로 로그 데이터를 전송하여 보안을 강화할 수 있다.
사용 예시
- 보안 강화: SSH 키나 포트를 사용하지 않고 EC2 인스턴스에 접속하여 보안을 강화할 수 있다.
- 중앙 관리: 중앙에서 모든 인스턴스에 대한 접속을 관리할 수 있다.
SSM Parameter Store
SSM Parameter Store는 구성 데이터나 암호를 안전하게 저장하고 관리할 수 있는 서비스다. API 키나 비밀번호, 구성 데이터 등을 안전하게 관리할 수 있다.
주요 특징
- 구성 데이터 관리: 애플리케이션의 구성 데이터를 중앙에서 관리하고 저장할 수 있다.
- 보안: IAM을 사용하여 각 파라미터의 액세스를 관리할 수 있으며, 선택적 암호화를 통해 보안을 강화할 수 있다.
- 버전 관리: 파라미터의 버전을 관리하고 추적할 수 있다.
사용 예시: Spring Boot 애플리케이션에서 Parameter Store 사용하기
SSM Parameter Store를 사용하여 Spring Boot 애플리케이션의 application.properties
파일을 대체하는 방법을 예시로 설명한다.
1. 파라미터 생성
AWS Management Console에서 SSM Parameter Store에 파라미터를 생성한다.
aws ssm put-parameter --name "/config/myapp/db.username" --value "dbuser" --type "String"
aws ssm put-parameter --name "/config/myapp/db.password" --value "dbpassword" --type "SecureString"
2. Spring Boot 애플리케이션 설정
Spring Boot 애플리케이션에서 SSM Parameter Store를 사용하기 위해 spring-cloud-starter-aws-parameter-store-config 의존성을 추가한다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>
3. bootstrap.properties 설정
spring.application.name=myapp
spring.cloud.aws.parameterstore.enabled=true
spring.cloud.aws.parameterstore.prefix=/config/myapp
spring.cloud.aws.parameterstore.default-context=application
4. application.properties 대체
이제 SSM Parameter Store에 저장된 파라미터를 사용할 수 있다. 예를 들어, 데이터베이스 설정을 다음과 같이 구성할 수 있다.
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}