- Published on
AWS EC2의 보안그룹
- Authors
- Name
- Chan Sol OH
목차
개요
Security Groups(SG)는 AWS에서 네트워크 보안에 기본적인 기능이다. 인바운드와 아웃바운드가 가능한 대상을 지정하는 규칙이다. SG는 유저의 IP나 다른 SG를 참조할 수 있다.
만약 인터넷으로 EC2에 접속하려면 EC2의 외부에서 EC2로 트래픽이 들어갈 수 있도록 SG에 인바운드 규칙을 작성하고, EC2가 외부로 트래픽을 보낼 수 있도록 아웃 바운드 규칙을 지정해야한다.
다만, EC2끼리 SG를 연결시키면 EC2의 IP와 상관없이 통신시킬 수 있고, 연결되지 않은 SG를 가진 EC2는 통신할 수 없게할 수 있다. 이처럼 SG 안에 다른 EC2와 연결된 SG들을 넣을 수 있다. - 로드벨런스에대해 공부할 때 자세히 다둘것
SG의 규칙
SG는 EC2 인스턴스의 방화벽 역할을 한다. 그러기 위해 인, 아웃 바운드 규칙에 대상을 지정하는데 다음과 같은 규칙을 사용한다.
- 트래픽 타입과 프로토콜
- 접근 포트
- 인증된 IP 범위 - IPv4, IPv6, 0.0.0.0/0와 같이 CIDR를 사용함
- 인 바운드인지 아웃 바운드인지
추가사항
- EC2 인스턴스는 여러 SG를 가질 수 있다.
- region과 VPC에 의존적이라 바뀌면 새롭게 만들어야한다.
- SG는 EC2 외부에 존재하기 때문에 트래픽은 EC2 외부에서 막힌다.
SSH 접속을 위한 전용 SG를 만드는게 좋다
- 기본적으로 모든 인바운드 트래픽은 차단되고, 모든 아웃 바운드 트래픽은 열려있다.
Time out이 발생하면 무조건 SG 때문이고 접근을 차단하는 것은 EC2 웹 애플리케이션의 문제가 생긴 것이다.
SSH
서버에 접속하는 방법으로 보안이 적용된 프로토콜이다. 물론 비슷하게 브라우저를 통해서 EC2 Instance Connect를 사용해서 접속할 수 있다. SSH는 터미널이나 커맨드 라인에서 AWS를 다룰 때 주로 사용한다.
SSH 접속하는 방법 0. EC2의 SG는 인, 아웃 바운드에 SSH가 허용돼야함
- EC2의 pem 파일이 있는 디렉토리로 이동
- EC2 소유 계정과 EC2의 퍼블릭 IP를 이용해서 SSH 접속
EC2 IAM Role 적용 방법
빌드업 aws configure
- EC2 인스턴스에 접속 (SSH를 사용해도 무방)
aws --version
으로 aws-cli가 설치됐는지 확인 (없으면 설치, aws linux는 기본 설치 제공)aws iam list-users
입력 -> iam 자격 증명이 안됐기 때문에 관련 정보를aws configure
를 통해 입력한다. 하지만, 이 방법은매우매우매우
좋지 않은 방법이다.aws configure
로 작성한 개인정보는 EC2에 접근할 수 있는 모든 유저가 볼 수 있기 때문이다!!! 그렇기에 EC2 인스턴스에 액세스 키 ID와 비밀 액세스 키를 입력하는 최악의 방법이다!!- 그 대신에 IAM Role을 사용할 수 있다.
IAM Role 적용 방법
- EC2 인스턴스의
보안
탭으로 가서 IAM Role 확인 - 아무 것도 없을 것이다. - 작업 -> 보안 -> IAM Role 수정 버튼 클릭
- 새 페이지가 뜨고 IAM Role을 선택할 수 있다. - 사전에 만들어둔 IAM Role을 사용할 수 있음! 그럼 다음과 같이 아무런 자격증명을 작성하지 않더라도 인스턴스가 aws 서비스를 사용할 수 있음
[ec2-user@ip-172-31-38-128 .aws]$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
[ec2-user@ip-172-31-38-128 .aws]$ aws iam list-users
{
"Users": [
{
"UserName": "admin",
"PasswordLastUsed": "2023-10-19T12:43:04Z",
"CreateDate": "2023-10-17T14:53:11Z",
"UserId": "AIDAXYMB4PYS4NGCLVEOP",
"Path": "/",
"Arn": "arn:aws:iam::533385215525:user/admin"
}
]
}
EC2 구매 옵션
- On-Demand 인스턴스
- 단기로 자주, 사용량을 예측할 수 없을 때 사용한다.
- 가격이 제일 높지만, 장기 계약이 필요 없다.
- Reserve 인스턴스
- 특정 인스턴스 속성(인스턴스 타입, region, OS, ...)을 1~3년 동안 예약한다.
- Reserve 인스턴스의 스코프는 Resion을 지정할 수 있고, 특정 AZ에 사용량을 할당할 수 있다.
- 안정적인 사용량이 있는 애플리케이션에 적합
- 마켓플레이스에서 Reserved 인스턴스를 사고 팔 수 있다.
- Convertible Reserved 인스턴스
- 인스턴스 속성(인스턴스 타입, OS, scope나 tenancy)를 변경할 수 있다.
- 할인율은 줄어든다.
- Saving Plans
- Reserved 인스턴스와 비슷하게 장기계약에 특화됐다.
- 시간당 고정 가격으로 1~3년 계약한다. 초과하는 사용량은 On-demend 가격으로 청구한다.
- AWS Region은 변경할 수 없는 대신, 인스턴스 사이즈, OS, tenancy를 변경할 수 있다.
- Spot 인스턴스
- 가장 높은 할인율을 가지고 있다. 대신 인스턴스가 Spot 인스턴스에 지불하고자 하는 가격보다 많이 사용되면 인스턴스가 중단된다.
- 가장 가격 효율적인 인스턴스이고, 서비스가 중단되어도 복구하기 쉬운 작업에 적합
- Batch Jobs, Data 분석, 이미지 처리, 분산 처리 작업, 그리고 시작과 끝 시간이 유현한 작업에 적합하다.
- 다만, 언제든지 인스턴스가 종료될 수 있으므로, 중요한 작업은 사용하면 안된다.
- Dedicated Hosts
- EC2 인스턴스 크기의 물리 서버를 온전히 사용할 수 있다.
- 강력한 규제나 규정 준수 요구 사항이 있거나ㅠ 기존의 서버 결합 소프트웨어 라이선스(BYOL - Bring Your Own License)를 사용해야하는 경우에 적합
- 가격은 소켓 당, core 당, VM Software license 당 청구된다.
- 걔약은 On-demend처럼 초당 예약이나 Reserved 인스턴스처럼 1~3년 계약을 할 수 있다.
- 실제 물리서버를 예약하기 때문에 가장 비싸다
- Dedicated 인스턴스
- 전용 하드웨어에서 실행되는 인스턴스, 물리서버와는 다르다.
- 같은 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다. 비어있는 서버를 예약하고 그 서버는 계정만 사용가능하다!
- Dedicated Host와 차이점은 **Dedicated 인스턴스는 고유한 인스턴스 하드웨어를 갖는 것이고, Dedicated Host는 물리적 서버 자체에 액세스하여 low level 하드웨어에 대한 **
- Capacity Reservations
- 특정한 AZ에 인스턴스를 예약할 수 있고, 필요할 때마다 EC2 Capacity에 접속할 수 있다.
- 시간 약정이 없기 때문에 생성과 삭제가 자유롭다.
- 요금 할인 받으려면 Reserved 인스턴스나 Saving Plans와 결합해야한다. 인스턴스가 실행하든 정지돼있든 On-Demand로 계속 청구된다.
- 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 적합하다.
리조트로 비유해서 정리하자면,
- On demand : 리조트에 언제든지 나가고 들어올 수 있다.
- Reserved : 장기계약 1~3년
- Saving Plans : 특정 기간 동안 시간당 비용지불하고 장기계약, 따라서 시간에 따라 방을 바꿀 수 있다.
- Spot instances : 예약 마감 할인. 그러나 누군가 내가 낸 돈 보다 더 많은 비용을 지불한다고 하면 강제로 나가야함
- Dedicated Hosts : 리조트 전체를 빌려서 나만의 하드웨어를 가지게된다.
- Capacity Reservations : 예약할건데 숙박할진 확실하지 않음. 그래서 원할 때만 숙박할 수 있다.