일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Today
- Total
기록
AWS/EC2 인스턴스를 SSM(Session Manager)으로 안전하게 연결 본문
시작하면서
AWS에서 EC2 인스턴스를 SSM(Session Manager)을 통해 관리하는 것은 매우 유용합니다. 특히 SSH 포트를 개방하지 않고 안전하게 EC2에 접근할 수 있기 때문에 보안 측면에서 큰 장점이 있습니다. 이 작업은 보안을 강화하고 네트워크 관리의 복잡성을 줄이는 데 의미가 있습니다. 예를 들어, SSH를 사용하면 포트 관리, 키 관리 등에서 추가적인 보안 위험이 생길 수 있지만, SSM을 사용하면 이러한 문제를 해결할 수 있습니다. 따라서 SSM을 통한 연결은 보안과 편리함을 모두 충족시키는 방법입니다.
이번 포스팅에서는 EC2 인스턴스를 SSM에 연결하는 과정을 단계별로 정리해보았습니다.
1. EC2 인스턴스 생성
먼저 EC2 인스턴스를 생성합니다. SSM 에이전트를 사용하기 위해 Amazon Linux 2를 사용하는 것을 권장합니다.
- AWS Management Console에 로그인합니다.
- 상단 메뉴에서 "Services"를 클릭하고 "EC2"를 선택합니다.
- 왼쪽 메뉴에서 "Instances"를 클릭하고 "Launch instances" 버튼을 클릭합니다.
- 인스턴스 이름을 지정하고, AMI로 Amazon Linux 2를 선택합니다.
- 인스턴스 유형을 선택합니다 (예: t2.micro).
- 키 페어를 생성하거나 기존 키 페어를 선택합니다. 키 페어는 EC2 인스턴스에 접근하기 위한 인증 수단입니다.
- 네트워크 설정과 스토리지 설정을 확인한 후 "Launch" 버튼을 클릭하여 인스턴스를 생성합니다.
2. IAM 역할 생성 및 연결
EC2 인스턴스가 SSM으로 접근 가능하게 하려면 SSM 권한이 포함된 IAM 역할을 부여해야 합니다. 이 IAM 역할은 EC2가 SSM과 상호작용할 수 있도록 권한을 제공합니다.
IAM 역할 생성
- AWS Management Console에서 "Services" -> "IAM"을 클릭합니다.
- 왼쪽 메뉴에서 "Roles"를 클릭하고 "Create role" 버튼을 클릭합니다.
- AWS 서비스로 "EC2"를 선택한 후 "Permissions"에서 "AmazonSSMManagedInstanceCore" 정책을 검색하고 선택합니다. 이 정책은 인스턴스가 SSM 서비스와 통신할 수 있는 권한을 부여합니다.
- 역할 이름을 입력하고 "Create role" 버튼을 클릭합니다 (예: EC2-SSM-Role).
EC2에 역할 연결
- 생성된 EC2 인스턴스를 선택하고 "Actions" -> "Security" -> "Modify IAM Role"을 클릭합니다.
- 방금 생성한 역할을 선택하여 EC2에 연결합니다. 이를 통해 EC2 인스턴스가 SSM에 접근할 수 있게 됩니다.
3. SSM 에이전트 설치 및 설정
Amazon Linux 2에는 기본적으로 SSM 에이전트가 설치되어 있지만, 설치되지 않은 경우에는 다음과 같은 명령어를 사용하여 설치할 수 있습니다.
#!/bin/bash
# 패키지 업데이트 및 SSM 에이전트 설치
yum update -y
yum install -y amazon-ssm-agent
# SSM 에이전트 활성화 및 시작
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent
이 스크립트를 EC2 인스턴스 생성 시 "User Data"에 추가하거나 SSH를 통해 직접 실행할 수 있습니다. User Data에 스크립트를 추가하면 인스턴스가 시작될 때 자동으로 필요한 설정이 적용됩니다.
4. EC2 인스턴스에 SSM 연결 확인
이제 인스턴스를 SSM을 통해 관리할 준비가 되었습니다. AWS Systems Manager의 Session Manager를 통해 연결할 수 있습니다.
- AWS Management Console에서 "EC2"로 이동하여 생성한 인스턴스를 선택합니다.
- "Connect" 버튼을 클릭하고, "Session Manager" 탭을 선택합니다.
- "Connect" 버튼을 클릭하면 브라우저에서 EC2 인스턴스와의 연결이 시작됩니다.
이때, 연결이 잘 이루어지지 않는다면 SSM 에이전트가 제대로 설치되었는지, IAM 역할이 올바르게 연결되었는지 다시 확인해야 합니다.
5. 트러블슈팅
- 경로 권한 문제: ssm에서 특정 디렉토리에 접근하려고 할 때 "Permission denied" 오류가 발생할 수 있습니다. 이는 사용자에게 해당 디렉토리에 대한 접근 권한이 없기 때문에 발생하는 문제입니다. 이를 해결하기 위해 다음과 같은 명령어를 사용합니다.
- 사용자 그룹 추가:현재 사용자를
ssm-user
그룹에 추가하여 권한을 부여합니다. 이를 통해 사용자가 특정 디렉토리에 접근할 수 있는 권한을 얻을 수 있습니다. sudo usermod -aG ec2-user ssm-user
- 디렉토리 권한 수정:디렉토리의 권한을 수정하여 사용자와 그룹이 해당 디렉토리에 접근할 수 있도록 설정합니다.
chmod 775
명령어는 디렉토리의 소유자와 그룹 사용자가 읽기, 쓰기, 실행 권한을 갖게 하며, 기타 사용자도 읽기와 실행 권한을 가질 수 있도록 설정합니다. sudo chmod 775 /home/ec2-user
- 사용자 그룹 추가:현재 사용자를
문제 발생 시의 실제 화면:
위 이미지에서 볼 수 있듯이, 초기에는 접근 권한이 없어 오류가 발생했지만, 적절한 권한을 부여한 후에는 정상적으로 접근이 가능했습니다.
결론
이번 포스팅에서는 EC2 인스턴스를 AWS SSM(Session Manager)을 통해 연결하는 방법을 단계별로 알아보았습니다. SSM을 사용하면 인스턴스 보안을 강화할 수 있을 뿐만 아니라, 간편하게 원격 접근이 가능해지는 장점이 있습니다. 특히, SSH 포트 개방 없이 안전하게 인스턴스를 제어할 수 있다는 점에서 큰 장점이 있습니다.
'DevOps' 카테고리의 다른 글
CICD 파이프라인 구축기(4) - 블루그린 배포를 활용한 무중단 배포 구축 (0) | 2024.12.30 |
---|---|
청구서와 Cost Explorer : AWS 비용 모니터링 (0) | 2024.11.22 |
AWS EC2 사용자 데이터를 이용한 도커 설치 및 실행 가이드 (0) | 2024.11.12 |
작성중 - [AWS/SAA-C03] Route 53: Routting Policies (0) | 2024.10.17 |
[AWS] Elasticache 생성과 연결 확인 (0) | 2024.10.14 |