Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
배스천 호스트(Bastion Host) Bastion은 중세시대 성벽에서 방어를 위해 밖으로 도출된 부분을 의미한다. 배스천 호스트는 외부에서 내부 네트워크에 접근할 수 있는 유일한 접근점이다. 보안성이 높은 인프라와 외부 인터넷을 연결하는 중계 서버로 작동하며, 모든 인바운드 트래픽은 배스천 호스트를 통과해야 내부 네트워크로 들어갈 수 있다. 따라서 인증, 인가의 기능을 수행한다고 볼 수 있다. 일반적으로 배스천 호스트는 공인 IP 주소로 프로비저닝 되고 SSH를 통해 액세스 될 수 있는 인스턴스이다. 따라서 AWS에서의 자원들은 private subnet에 위치하고, 유일한 접근점인 bastion host만이 public subnet에서 트래픽을 받는다. private subnet의 인스턴스는 이미 ..
CloudFront AWS의 CDN 서비스인 CloudFront는 리전으로부터 거리가 먼 사용자들에게 빠른 데이터 전송을 위해 각지에 준비된 Edge Location에 위치한 서비스이다. Edge Location은 600개 이상으로 33개인 리전에 비해 조밀하게 분포되어 있다. 이러한 EdgeLocation의 CloudFront로의 접속은, 사용자의 위치에 따라 가장 빠른 EdgeLocation으로 연결된다. EdgeLocation은 AWS의 리전에 전용 망으로 연결되어 있기 때문에, 공용망에 비해 빠른고 안정적인 네트워크를 제공할 수 있다. 만약 사용자가 요청한 데이터가 Edge Location에 없다면, cache miss가 발생하게 된다. cache miss가 발생되면 리전으로부터 원본 데이터를 E..
VPC Peering 격리된 VPC는 별도의 세팅이 없다면, 다른 VPC와 연결을 할 수 없다. 그렇다고 인터넷을 통해 다른 VPC로 접근을 한다면, 추가적인 암호화가 필요할 것이다. 따라서 AWS는 VPC간을 AWS 내부 네트워크로 안전하게 연결하는 피러일 기능을 제공한다. 이를 통해서 사설 IP만으로 통신이 가능하므로, 공인 IP에 대한 비용도 절약된다. VPC가 어떤 리전에 있던, 다른 계정이던 서로 간의 승인만 있다면 연결이 된다. 하지만, IP 대역은 달라야 한다. 그래서 랜덤 한 IP은 할당은 지양해야 하고, 할당 규칙을 지정해야 한다. 주의해야 할 점은 피어링 한 VPC 간에서만 통신이 되고, 다른 VPC로의 경유를 할 수는 없다. (전이적 피어링을 지원하지 않는다.) 이제부터 같은 리전의 ..
Cloud Formation 리전에 장애가 발생한다면, 서비스를 GUI 콘솔로 하나하나 다시 생성하는 것은 상당히 긴 시간이 걸린다. 따라서 인프라 세팅을 IaC와 같은 템플릿 코드화 해서, 장애 발생 시 해당 코드를 그대로 실행할 수 있도록 세팅하도록 해야 한다. 보통 Terraform과 같은 서드 파티를 사용하지만, AWS에서 지원하는 Cloud Formation을 사용할 수도 있다. 이러한 IaC의 장점은 다음과 같다. 1. 형상 관리가 편리하다. 형상 관리로 이전 버전을 저장하고 수정한다. 변경 코드를 실행하면, 변경된 내용들만 그대로 적용된다. 2. 테스트 환경 세팅 테스트 환경을 프로덕션 환경과 똑같이 세팅하고, 테스팅 후 지우기에 편리하다. 3. 장애 대응에서 빛을 발한다. 위에서 언급한 것..
NAT 게이트웨이의 생성에 대해서는 이전 글을 생성해 주자. https://everenew.tistory.com/394 AWS NAT Gateway를 Private Subnet과 연결하기 VPC와 Public subnet, IGW의 세팅은 완료되었다고 가정하고 진행하겠다. 이에 대한 내용을 아래 게시글을 참조하자. https://everenew.tistory.com/390 AWS VPC와 Public & Private Subnet의 차이점 VPC( Virtual Private Cloud ) everenew.tistory.com NAT 게이트웨이는 용량과 가용성을 AWS가 보장해 준다 하지만 특정 서브넷 안에 속하기 때문에 AZ에 종속적이다. 따라서 NAT 게이트웨이가 단 한 개만 존재한다면, 특정 AZ ..
VPC와 Public subnet, IGW의 세팅은 완료되었다고 가정하고 진행하겠다. 이에 대한 내용을 아래 게시글을 참조하자. https://everenew.tistory.com/390 AWS VPC와 Public & Private Subnet의 차이점 VPC( Virtual Private Cloud ) AWS의 VPC는 논리적으로 격리된 네트워크 서비스이다. VPC는 온프레미스에서 사용하는 사설 네트워크와 비슷한 용도로 사용한다. 따라서 VPC 또한 사설 IP를 사용해서 생성하 everenew.tistory.com NAT 게이트웨이 생성 VPC의 Nat 게이트웨이로 들어가서 생성해 주자. NAT 게이트웨이는 외부로 나갈 수 있도록, 퍼블릭 IP가 존재하므로 public subnet에 만들어 준다. 탄..
AWS CLI로 S3 버킷 생성 후 파일 업로드하기 위해서, EC2를 하나 만들어서 접속한다. (이러한 CLI를 개인 PC에 설치하여서 진행할 수도 있다.) https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface 이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이 docs.aws.amazon.com EC2 인스턴스는 아래와 같이 S3를 관리할 수 있는 Role이 부여돼야 ..
자격 증명 기반 정책 IAM 사용자를 대상으로 특정 작업 수행할 수 있도록 정책을 연결해 준다. 리소스 기반 정책 리소스에 설정하는 정책이다. 대표적으로 Amazon S3 버킷, Amazon SQS 대기열 등에 설정할 수 있다. 이를 사용하면 특정 role이나 user를 대상으로 사용할 수 있는 권한을 설정해 줄 수 있다. 두 정책에는 우선 순위는 없다. 명시적 거부가 최우선으로 거부되기 때문에 허용을 하더라도 거부가 있다면 거부된다. 허용에 대한 언급이 없는 경우는 암시적으로 거부된다. 말로만 들으면 이해하기가 힘들 수 있으니 S3 버킷에 리소스 기반 정책을 설정해 보자. S3의 버킷에 리소스 기반 정책을 부여 일단 Role을 준비했다 가정하고, S3 버킷을 만들어보자. 나머지는 기본 세팅을 그대로 두..
VPC( Virtual Private Cloud ) AWS의 VPC는 논리적으로 격리된 네트워크 서비스이다. VPC는 온프레미스에서 사용하는 사설 네트워크와 비슷한 용도로 사용한다. 따라서 VPC 또한 사설 IP를 사용해서 생성하게 된다. 하나의 VPC 내부에서는 논리적인 Router가 동작한다. subnet은 VPC 내부의 IP 대역대를 가지도록 세팅되고, 각각이 라우팅 테이블을 가지고 있다. 아래의 그림을 확인해 보자. 여기서 public subnet만이 외부로 접속할 수 있도록 해야 하기 때문에, Public subnet의 라우팅 테이블만 모든 트래픽을 Internet GateWay로 보내도록 0.0.0.0 => IGW 경로를 추가한다. 즉, public Subnet이라는 네트워크가 따로 존재하는 ..
회사에서는 로그를 남기기 위해 각각의 사원에게 IAM user를 할당한다. 하지만 모든 IAM user에게 일일이 권한을 부여하고 관리하는 것을 쉽지 않다. 따라서 user group라는 IAM 사용자 집합으로 그룹 내의 사용자들의 권한을 지정할 수 있다. 간단하게 user를 group에 권한 추가해보자. S3 그룹은 S3 읽기 권한을 가진다. 이 그룹에 사용자를 추가하자. 이제 그룹 내 정상적으로 추가가 된다. IAM login URL로 접속 사용자의 보안 자격 증명 탭에서 콘솔 로그인 링크가 확인된다. 이 링크로 IAM 유저에 바로 접속할 수 있다. 이 유저는 S3 그룹에 속했기 때문에, read 권한을 상속받아 S3의 버킷 리스트들이 보인다. 반면에 ec2는 권한이 없기 때문에 읽을 수 조차 없다...