보안 그룹은 EC2 인스턴스 같은 리소스로 들어오고 나가는 트래픽을 허용할 규칙의 묶음입니다. AWS 문서 기준으로 허용 규칙만 있고, 규칙에 없는 인바운드 트래픽은 기본으로 막으며, 허용한 요청의 응답은 자동으로 허용됩니다. 이 글에서는 AWS 콘솔의 보안 그룹 생성 화면에 값을 하나씩 입력해 보안 그룹을 만들고, 만든 규칙을 읽은 뒤 삭제합니다.
앞선 EC2 글에서는 시작 화면이 보안 그룹을 자동으로 만들었습니다. 이 글은 같은 보안 그룹을 EC2 시작과 따로, 직접 만드는 방법입니다.
준비물
| 항목 | 내용 |
|---|---|
| AWS 계정 | 실습용 IAM 사용자. ec2:CreateSecurityGroup, ec2:AuthorizeSecurityGroupIngress, ec2:DeleteSecurityGroup, ec2:DescribeSecurityGroups, ec2:DescribeVpcs 권한 필요 |
| 리전 | 아시아 태평양(서울) ap-northeast-2 |
| 네트워크 | 이 계정에 있던 VPC 하나. 이 글은 새 VPC를 만들지 않았습니다 |
| 예상 소요 시간 | 약 10분 |
화면의 계정 ID, 사용자 이름, 소유자와 VPC 이름은 가렸습니다. 보안 그룹과 VPC의 ID는 비밀 값이 아니라서 그대로 두었습니다. 이 글은 보안 그룹만 만들고 인스턴스에 연결하지 않습니다.
입력할 값
화면에 입력한 값을 먼저 모아 둡니다. 그대로 복사해 사용할 수 있습니다.
| 화면 항목 | 입력값 |
|---|---|
| 보안 그룹 이름 | cr-demo-sg |
| 설명 | Copy and Run demo security group |
| VPC | 이 글은 콘솔이 미리 보여 준 VPC를 그대로 썼습니다. 앞선 글을 따라 했다면 cr-demo-vpc를 고릅니다 |
| 인바운드 규칙 1 | 유형 HTTPS, 소스 0.0.0.0/0, 설명 HTTPS from anywhere |
| 인바운드 규칙 2 | 유형 SSH, 소스 10.60.0.0/16, 설명 SSH from VPC only |
10.60.0.0/16은 앞선 VPC 글에서 만든 cr-demo-vpc의 대역입니다. 이 글을 촬영한 VPC는 대역이 달라서 이 규칙이 실제로 어떤 주소와도 맞지 않았고, 규칙 입력 방법만 보여 줍니다. 따라 할 때는 cr-demo-vpc를 고르거나 소스를 본인 VPC 대역이나 접속할 PC의 IP로 바꿉니다.
1. 기본 정보와 VPC
EC2 콘솔 왼쪽 메뉴의 네트워크 및 보안에서 보안 그룹을 열고 보안 그룹 생성을 누릅니다. 이름 칸 아래에는 생성 후에는 이름을 편집할 수 없다는 안내가 있어서, 이름은 처음부터 정해서 입력합니다.
VPC 칸을 열면 이 계정의 VPC 목록이 나옵니다. 이 계정에는 VPC가 하나뿐이어서 그것을 골랐습니다. 고르면 아웃바운드 규칙에 모든 트래픽, 대상 0.0.0.0/0 한 줄이 자동으로 생깁니다. 인바운드 규칙은 비어 있습니다.
2. 인바운드 규칙 1: HTTPS
인바운드 규칙의 규칙 추가를 누르고 유형 칸을 연 뒤 HTTPS를 입력해 고릅니다. 프로토콜은 TCP, 포트 범위는 443으로 자동 채워지고 입력은 막힙니다.

유형을 HTTPS로 고르자 소스 유형이 Anywhere-IPv4로 바뀌었고, 소스에 0.0.0.0/0이 들어갔습니다. 아래에는 소스가 0.0.0.0/0인 규칙은 모든 IP 주소에서 인스턴스에 접근하도록 허용한다는 노란 경고가 나타났습니다. 설명 칸에 HTTPS from anywhere를 적습니다.
소스 유형 칸을 열면 네 가지가 보입니다.

| 소스 유형 | 의미 |
|---|---|
| 사용자 지정 | 직접 입력한 IP 대역 |
| Anywhere-IPv4 | 0.0.0.0/0 |
| Anywhere-IPv6 | ::/0 |
| 내 IP | 지금 콘솔에 접속한 PC의 공용 IP |
웹 서비스를 인터넷에 공개하려는 보안 그룹이면 HTTPS의 Anywhere는 흔한 설정입니다. 반대로 관리용 포트에는 Anywhere를 쓰지 않습니다.
3. 인바운드 규칙 2: SSH
규칙 추가를 한 번 더 눌러 두 번째 행을 만들고 유형에 SSH를 입력해 고릅니다. 포트 22가 자동으로 채워집니다. 이 화면에서 SSH는 소스 유형이 사용자 지정으로 시작했습니다. 소스 칸에 10.60.0.0/16을 입력하고 Enter를 누르면 아래에 같은 값이 태그로 붙습니다. 설명 칸에는 SSH from VPC only를 적습니다.

SSH는 0.0.0.0/0으로 열면 인터넷 전체가 22번 포트에 접속을 시도할 수 있습니다. 이 글은 사설 대역으로 한정했습니다. 내 PC에서 접속해야 하면 소스 유형을 내 IP로 고르면 됩니다.
4. 보안 그룹 생성
화면 맨 아래로 내려가 보안 그룹 생성을 누릅니다. 아웃바운드 규칙은 기본값 그대로 둡니다.

세부 정보에서 읽을 값은 세 가지입니다.
| 항목 | 값 | 읽는 방법 |
|---|---|---|
| 보안 그룹 ID | sg-로 시작하는 ID |
인스턴스에 연결하거나 다른 규칙의 소스로 지정할 때 쓰는 식별자 |
| 인바운드 규칙 수 | 2 | 입력한 HTTPS와 SSH |
| 아웃바운드 규칙 수 | 1 | 처음 자동으로 생긴 모든 트래픽 규칙 |
5. 아웃바운드 규칙 읽기
아웃바운드 규칙 탭을 엽니다.

새 보안 그룹은 나가는 트래픽을 모두 허용하는 규칙을 하나 가지고 있습니다. 인바운드는 입력한 규칙만 열려 있습니다. AWS 문서 기준으로 이 보안 그룹을 인스턴스에 연결하면 443과 22(지정한 대역에서만)로 들어오는 요청만 받고, 나머지 인바운드는 막힙니다. 이 글에서는 연결하지 않아 직접 시험하지는 않았습니다.
6. 정리: 보안 그룹 삭제
상단의 작업 메뉴를 열면 인바운드 규칙 편집, 아웃바운드 규칙 편집, 보안 그룹 공유, 태그 관리, 새 보안 그룹에 복사, 보안 그룹 삭제가 보입니다. 보안 그룹 삭제를 누릅니다.


대화상자의 삭제 대상이 cr-demo-sg 하나인지 확인하고 삭제를 누릅니다.

이 계정의 목록에는 VPC마다 자동으로 만들어진 default 보안 그룹만 남았습니다. 다른 보안 그룹이 있는 계정이면 목록이 더 길 수 있습니다.
자주 막히는 곳
| 증상 | 확인할 것 |
|---|---|
| 이름을 잘못 입력했는데 고칠 수 없음 | 생성 화면에 안내된 대로 이름은 만든 뒤 편집할 수 없습니다. 지우고 새로 만들거나 새 보안 그룹에 복사를 씁니다 |
| 규칙의 포트가 입력되지 않음 | HTTPS와 SSH처럼 유형을 고르면 프로토콜과 포트가 채워지고 입력이 막힙니다. 포트를 직접 정하려면 유형을 사용자 지정 TCP로 둡니다 |
| 유형을 고르자 소스가 0.0.0.0/0으로 바뀜 | HTTPS를 골랐을 때 이 화면은 Anywhere-IPv4를 자동으로 채웠습니다. 소스 유형을 직접 바꿔 줍니다 |
| 삭제가 거부됨 | 이 글은 인스턴스에 연결하지 않은 상태에서 삭제해 이 오류를 겪지 않았습니다. 거부되면 이 보안 그룹을 쓰는 인스턴스나 다른 보안 그룹의 규칙이 남아 있는지 확인합니다 |
이어서 해 볼 것
- 보안 그룹을 EC2 인스턴스 글의 시작 화면에서 기존 보안 그룹으로 고르기
- SSH 규칙의 소스를
내 IP로 바꾸고 인바운드 규칙 편집 화면 확인하기 - 규칙의 소스를 IP 대역 대신 다른 보안 그룹으로 지정해 보기
확인 범위
- 확인한 것: 서울 리전 콘솔(한국어 화면)에서 위 값으로 보안 그룹을 만들고, 인바운드와 아웃바운드 규칙을 읽고, 보안 그룹을 삭제하는 과정을 실제로 수행했습니다. 삭제 뒤 목록에는 default만 남았습니다.
- 확인하지 못한 것: 이 보안 그룹을 인스턴스에 연결해 실제로 접속이 허용되거나 막히는 것은 시험하지 않았습니다. 다른 보안 그룹을 소스로 지정하는 방법과 삭제가 거부되는 경우는 화면에서 확인하지 않았습니다.
- 화면 구성과 기본값은 콘솔 업데이트와 계정 설정에 따라 달라질 수 있습니다.
이 글의 다음 단계
- AWS CloudTrail 이벤트 기록에서 누가 언제 무엇을 했는지 읽기CloudTrail 이벤트 기록 화면에서 최근 변경 이벤트를 보고, 리소스 이름으로 걸러 한 보안 그룹의 생성부터 삭제까지를 추적합니다. 이벤트 상세와 JSON 레코드에서 사용자, 시각, 호출 내용, MFA 여부를 읽는 방법을 정리합니다.
- AWS 콘솔에서 EC2에 IAM 역할을 연결해 액세스 키 없이 S3 읽기 권한 주기IAM 콘솔에서 EC2용 역할 cr-demo-ec2-s3-read-role을 만들고 AmazonS3ReadOnlyAccess를 붙인 뒤, EC2 시작 화면의 고급 세부 정보에서 인스턴스에 연결합니다. 신뢰 정책과 권한 정책의 역할을 읽고, 인스턴스와 역할을 삭제해 정리합니다.