목표
CLI 명령어 해석:
aws s3 ls : 사용자가 소유한 모든 버킷의 목록을 표시
aws s3 mb s3://labclibucket-9731 : "labclibucket-9731" 라는 버킷을 생성
aws s3 cp /home/ssm-user/HappyFace.jpg s3://labclibucket-9731
: cp 명령은 지정된 버킷에 파일 하나를 복사
aws s3 ls s3://labclibucket-9731
: "labclibucket-9731"버킷 안에 있는 객체의 목록을 표시.
보안 주체 : AWS 리소스에 대한 작업 또는 요청을
IAM 정책 : 명시적 허용문이나 명시적 거부문 중 하나가 포함, 혹은 둘다 포함됨.
심층 보안 : 다주 보안 계층을 만드는 데 중심을 준 전략. 네트워크 엣지, Virtual Private Cloud(VPC), 로드 밸런싱과 모든 인스턴스, 컴퓨팅 서비스, OS 등에 심층 방어를 적용해야 한다.
AWS Organization의 서비스 제어 정책 (SCP)와 IAM 자격 증명 기반 정책을 둘 다 사용할 경우, 두 곳에서 모두 허용하는 권한만 사용 가능
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": "*" } ] } //scp
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject" ], "Resource": "*" } ] } //IAM 정책
다음의 경우 사용자는 s3:ListBucket 작업만 수행할 수 있다.
보안 그룹 | 네트워크 ACL |
---|---|
탄력적 네트워크 인터페이스에 연결되며 하이퍼바이저에서 구현됨 | 서브넷에 연결되며 네트워크에서 구현됨 |
-------------------------------------------------------------------- | ------------------------------------------------------------- |
허용 규칙만 지원 | 허용 규칙 및 거부 규칙 지원 |
-------------------------------------------------------------------- | ------------------------------------------------------------- |
상태 저장 방화벽 | 상태 비저장 방화벽 |
-------------------------------------------------------------------- | ------------------------------------------------------------- |
트래픽 허용 여부를 결정하기 전에 모든 규칙이 평가됨 | 트래픽 허용 여부를 결정할 때 모든 규칙은 순서대로 평가됨 |
-------------------------------------------------------------------- | ------------------------------------------------------------- |
인스턴스와 연결된 경우 인스턴스에만 적용됨 | 연결된 서브넷에 배포된 모든 인스턴스에 적용됨 |
AMI는 EC2인스턴스의 이미지로 S3에 저장되는데, 반복해서 배포할 수 있다. EC2인스턴스를 만들고 이를 AMI로 만든다. (Baked AMI)
=> 빠르게 애플리케이션 배포가 가능하다. 그러나 내부 버전이 바뀌게 될 경우, AMI를 변경하는 것이 번거로울 수 있다.
AMI 받을 수 있는 위치
AWS Compute Optimizer : CloudWatch 지표를 가지고 수동으로 성능을 비교하는 시간을 줄이고, 140가지가 넘는 인스턴스 중에서 EC2 및 EC2 Auto Scaling 그룹에 가장 적합한 인스턴스를 선택할 수 있다.
테넌시 : EC2 인스턴스는 하나의 물리적 서버가 호스팅하는데, 이는 기본적으로 공유 테넌시를 사용한다.
목표
vpc 생성 후
퍼블릭 서브넷 생성
(참고: VPC의 CIDR 범위는 10.0.0.0/16이며, 여기에는 모든 10.0.x.x IP 주소가 포함됩니다. 방금 생성한 서브넷의 CIDR 범위는 10.0.0.0/24이며, 모든 10.0.0.x IP 주소가 포함되어 있습니다. 이러한 범위는 서로 비슷해 보이지만, 서브넷은 CIDR 범위가 /24이기 때문에 VPC보다 작습니다.)
프라이빗 서브넷 생성
(참고: CIDR 블록 10.0.2.0/23에는 10.0.2.x 및 10.0.3.x로 시작하는 모든 IP 주소가 포함되어 있습니다. 인터넷에서 액세스할 수 있어야 하는 특별한 경우를 제외하고 프라이빗 서브넷은 대부분의 리소스를 프라이빗으로 유지해야 하기 때문에 크기가 퍼블릭 서브넷의 두 배입니다.)
인터넷 게이트웨이 생성
사용자가 만든 VPC에 인터넷 게이트웨이를 연결하는 과정
(라우팅 테이블 생성 -> 인터넷 바운드 트래픽을 인터넷 게이트웨이로 보내는 경로를 라우팅 테이블에 추가 -> 퍼블릭 서브넷을 라우팅 테이블에 연결, VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야 함.)
(현재는 트래픽을 로컬에 라우팅하는 기본 라우팅 테이블만 존재, 퍼블릭 트래픽을 인터넷 게이트웨이로 라우팅하는 추가 라우팅 테이블이 필요.)
+서브넷은 한 번에 하나의 라우팅 테이블에만 연결할 수 있지만, 여러 서브넷을 하나의 라우팅 테이블에 연결할 수 있다.
라우팅 테이블 생성
(but 이 라우팅 테이블은 10.0.0.0/16 네트워크 내의 트래픽이 네트워크 내에서 흐르도록 허용하는 경로가 하나 있지만 이 경로는 트래픽을 네트워크 외부로 라우팅하지는 않는다.) 따라서 새 경로를 추가해 퍼블릭 트래픽을 통과하도록 허용해야 한다.
새 경로를 추가하는 과정
인터넷 게이투웨이를 통과하는 인터넷의 경로를 포함시키는 과정
(사용자들이 EC2 인스턴스에 엑세스할 수 있도록 보안 그룹 생성. VPC의 보안 그룹은 Amazon EC2 인스턴스에 허용하는 트래픽을 지정함)
+Amazon EC2 보안 그룹을 사용하면 Amazon VPC 내 인스턴스의 보안을 유지할 수 있습니다. VPC의 보안 그룹을 통해 각 Amazon EC2 인스턴스에 허용되는 인바운드 및 아웃바운드 네트워크 트래픽을 지정할 수 있다. 인스턴스에 명시적으로 허용되지 않은 트래픽은 자동으로 거부한다.
HTTP 트래픽을 허용하는 보안 그룹 생성.
(이 과제에서는 퍼블릭 서브넷에서 Amazon EC2 인스턴스를 시작. 인터넷을 통한 IPv4 통신을 활성화하려면 인스턴스에 해당 인스턴스의 프라이빗 IPv4 주소와 연결된 퍼블릭 IPv4 주소가 있어야 한다.
+기본적으로 인스턴스는 VPC와 서브넷 안에서 정의된 프라이빗(내부) IP 주소 공간만 인식.)
퍼블릭 서브넷에서 EC2 인스턴스를 시작할 수 있도록 인스턴스 설정
<Apache 웹 서버를 시작하고, HTTP 연결 테스트하는 화면
cd ~
curl -I https://aws.amazon.com/training/
//홈 디렉터리(/home/ssm-user/)로 변경하고 cURL 명령을 사용하여 웹 연결을 테스트하는 코드
(NAT 게이트웨이를 생성 -> 라우팅 테이블 생성하여 비로컬 트래픽을 NAT 게이트웨이로 라우팅 -> 라우팅 테이블을 프라이빗 서브넷에 연결.)
+NAT 게이트웨이를 생성하려면 NAT 게이트웨이가 속할 퍼블릭 서브넷을 지정해야 하며, NAT 게이트웨이와 연결할 탄력적 IP 주소도 지정해야 한다. 탄력적 IP 주소는 NAT 게이트웨이에 연결한 후 변경할 수 없다.
NAT 게이트웨이 생성
프라이빗 라우팅 테이블 생성
NAT 게이트웨이를 통해 인터넷 바운드 트래픽을 보내는 경로 추가
프라이빗 서브넷의 인터넷 바운드 트래픽을 동일한 가용 영역에 있는 NAT 게이트웨이로 보내기.
(퍼블릭 보안 그룹에 할당된 리소스에서 들어오는 HTTPS 트래픽을 허용하는 보안 그룹을 생성)
+멀티 티어 아키텍처에서 프라이빗 서브넷의 리소스는 인터넷에서 직접 액세스할 수 없어야 하지만, 공개적으로 액세스할 수 있는 리소스에서 프라이빗 리소스로 웹 트래픽을 라우팅하는 일반적인 사용 사례이기도 하다.
+보안 그룹을 규칙의 소스로 지정하면 지정된 프로토콜과 포트의 경우, 소스 보안 그룹과 연결된 네트워크 인터페이스에서 오는 트래픽이 허용된다. 들어오는 트래픽은 퍼블릭 IP 주소 또는 탄력적 IP 주소가 아닌 원본 보안 그룹과 연결된 네트워크 인터페이스의 프라이빗 IP 주소를 기반으로 허용된다. 보안 그룹을 원본으로 추가해도 원본 보안 그룹의 규칙이 추가되지는 않는다.
프라이빗 보안 그룹 생성
+프라이빗 인스턴스는 NAT 게이트웨이 또는 NAT 인스턴스를 통해 트래픽을 라우팅하여 인터넷에 액세스할 수 있다. 인터넷을 통과하기 위해 NAT 게이트웨이 또는 NAT 인스턴스의 퍼블릭 IP 주소를 사용한다. NAT 게이트웨이 또는 NAT 인스턴스는 아웃바운드 통신을 허용하지만, 인터넷상에서 시스템이 프라이빗 주소가 지정된 인스턴스에 연결을 시작하는 것은 허용하지 않는다.
프라이빗 서브넷에서 실행할 EC2 인스턴스 설정
(EC2 인스턴스에서 priavte Instance를 선택 후, connect 버튼을 눌러 과제 8과 같이 실행하여 밑의 명령어를 적어준다.)
cd ~
curl -I https://aws.amazon.com/training/
이 게시글은 2024년 7월 1일부터 5일까지 진행하는
DSC 공유대학 AWS 클라우드 양성 캠프 프로그램에서 들은 수업 내용으로 작성하였습니다.