AWS Bastion Host (사용자 관리) with terraform
Bastion Host 사용하는 이유
AWS에서 VPC를 별도로 생성한 후 Private 서브넷에 리소스들을 생성했다면, VPC 외부에서접근 하기 위해서는 VPN, Direct Connect 방법을 사용해야 합니다. 하지만 구축하기에 리소스가 듭니다. 따라서 동일한 VPC에 Public에서 접근 가능한 인스턴스를 생성한 후 ssh를 통해 연결할 수 있는 방법이 있습니다. 그것이 Bastion Host입니다. 제가 사용했던 용도로는 RDS Severless Aurora같은 경우 Private에 밖에 생성을 할 수 없으므로 Public에서 접근이 불가능해 Local에서 애플리케이션을 실행할 수 없었는데, Bastion Host의 ssh를 통해서 접근을 했습니다.
이때 다른 사용자가 Bastion Host를 사용하기 위해서 만들 때 사용한 key_pair를 공유하는 것은 바람직하지 않습니다. 따라서 사용자에 따른 Key를 등록해서 접속할 수 있게 해줘야 합니다. 그것이 사용자 관리입니다.
Bastion Host 만들기
Terraform 을 이용해서 환경을 만들 예정입니다. 각각의 모듈은 제 레포지토리에 정의돼 있으며, 사용법은 레포지토리 README 파일에 적어놓겠습니다. (Terraform Bastion Host Repository)
Bastion Host 사용자 관리
위의 README를 통해서 리소스들을 만들었다면, 이제 다른 사용자 또한 Bastion Host에 접근할 수 있도록 만들어보겠습니다.
1. ec2 만들 때 사용한 key pair말고 새로운 key pair 생성
ssh-keygen -f {pwd}/dkim (저는 dkim 유저를 만들 예정이므로 dkim이라고 키를 생성해줬습니다.)
2. 기존의 key pair로 ec2 인스턴스 접속
ssh EC2_ROOT 입력하여 접속
3. 사용할 유저의 이름으로 사용자 추가
sudo adduser dkim // 새로운 유저 생성
sudo su - dkim // 유저의 모든 권한을 주고 생성
chmod 700 .ssh // .ssh 폴더에 대한 권한 허용
touch .ssh/authorized_keys // authorized_keys 파일 생성
chmod 600 .ssh/authorized_keys // 권한 허용
vim .ssh/authorized_keys // 파일 생성
새롭게 만든 키페어의 public key 값을 넣어준다.
4. ssh config 추가 작성
위에서 ssh config를 작성한 것처럼 밑에 추가해준다. 나는 dkim 유저를 추가했으므로, 아래와 같이 추가해준다.
Host EC2_DKIM
HostName 255.255.255.255 (본인 ec2의 public IP)
User dkim (aws linux의 경우 root가 ec2-user이다.)
IdentityFile {pwd}/dkim (아까 위에서 ssh-keygen을 만들 때 사용한 경로를 입력한다.)
마지막으로 ssh EC2_DKIM을 입력하여 접속을 확인하면 마무리 된다.
5. 정리
Private Subnet에 위치한 리소스에 접근하기 위해 Bastion Host를 만들고, 여러 사용자가 접근할 수 있도록 만들었다. Terraform으로 모든 코드를 작성하는 것은 쉽지 않았다. 하지만 한 번 작성해놓으면 재사용이 가능하므로 매우 편리하다는 것을 다시금 느꼈다. 혹여나 코드가 동작 안 한다면, 댓글 부탁드립니다.
'Aws' 카테고리의 다른 글
AWS API Monitoring with terraform (0) | 2023.09.10 |
---|---|
AWS Event Scheduler 구현 (EventBridge + SNS + SQS) with terraform (0) | 2023.08.07 |
Cloudfront cache auto invalidate (0) | 2023.06.05 |
EKS Fargate 유형 애플리케이션 로그 수집 Part 2 (1) | 2023.05.15 |
S3를 CloudFront로 제공하기 (0) | 2023.05.08 |
댓글
이 글 공유하기
다른 글
-
AWS API Monitoring with terraform
AWS API Monitoring with terraform
2023.09.10 -
AWS Event Scheduler 구현 (EventBridge + SNS + SQS) with terraform
AWS Event Scheduler 구현 (EventBridge + SNS + SQS) with terraform
2023.08.07 -
Cloudfront cache auto invalidate
Cloudfront cache auto invalidate
2023.06.05 -
EKS Fargate 유형 애플리케이션 로그 수집 Part 2
EKS Fargate 유형 애플리케이션 로그 수집 Part 2
2023.05.15