-
AWS2 RDS (2)접속, 보안그룹생활코딩 AWS 2022. 4. 11. 15:37
===
RDS를 통해 DB서버를 생성 했으니 사용하기
DB Client를 이용해서 DB서버에 접속해봅시다
두가지 방법이 있다
(1)쉽고 덜안전 : Public Access부분을 키는 것
저기 아니요 라고 돼 있는 부분
(2)어렵고 안전 :
===
퍼블릭 액세스를 켜는 법 + RDS의 설정을 바꾸는 방법
수정 클릭
예로 바꾸고 넘어감
이렇게 뜨는데,
DB 인스턴스 수정 버튼을 누를 때
예약된 다음 유지 관리 기간에 적용을 하면
내가 바꿨던 것을 모았다가 RDS가 한꺼번에 지정함
즉시 적용을 하고 버튼 누르면 바로 설정 바꿈
즉시 적용하면 잠깐 멈출 수 있다. 이걸로 인해 서비스에 영향을 줄 수 있으니 조심하란 말
이 수정중이 사용가능으로 바뀌면 그때 우리가 사용할 수 있게 된다
접속을 하기 위해 인스턴스 정보로 가면
엔드포인트가 이 DB서버의 주소, 호스트네임이다.
mysql 모니터를 이용할 것이다.
mysql -h : host라는 뜻
붙여놓고 뒤에 -u : 생성할 때 입력했던 내 사용자아이디
-p 하고 엔터치면 password 누르라고 나옴
이렇게 접속이 된다
접속이 안되면?
아마존에서 우리에게 서비스 차원에서 제공하는 방화벽 기능이 Security group이라는 것이다
우리의 DB가 이 Security group 안에 속하게 되는데, 그 Security group 에 보안설정을 하게되면 저 그룹안에 속해있는 머신들(여기서는 우리의 DB서버)은 동일한 보안적인 설정을 갖게됨
우리가 설정해야될건 크게 두가지
(1)클라이언트가 아무나 접속하게하면 위험하므로 특정 IP를 가진 클라이언트만 접속하게하기, 또는 누구나 접속하겠다 하는 = 접속하는 SOURCE를 제약하는 것
(2)클라이언트도 서버에 접속하게되면 서버에는 여러 서버가 설치돼 있을 수 있다. 클라이언트가 그 중에 어떤 서버에 접속할것인지 지정하는게 = PORT
클라이언트가 DB서버에 있는 모든 서버에 접속하는게 아니라 개방해준 포트에 해당되는 서버만 접속할 수 있게
===
이거 클릭하면 EC2제품의 페이지로 가게됨(제 추정에는 RDS도 결국 EC2위에서 돌아가기 때문에 EC2가 쓰는거랑 똑같은걸 쓰는 것 같아요)
인바운드가 아웃바운드가 있습니다
인바운드는 DB서버 입장에서 안으로 들어오는 것 : 클라이언트를 허용하려면 이것
아웃바운드는 응답하는것
인바운드 세팅하면 아웃바운드 세팅 안해도 자동으로 된다
편집 클릭
유형에 MySQL 선택
프로토콜 TCP
포트범위 3306
소스는
위치무관으로 하면 누구나 접속할 수 있게 됨
내 IP는 내 컴퓨터의 현재 IP가 적용됨, 집밖이나 내 집의 IP가 바뀌면 접속 못함(그때 세팅 바꿔주기, 이게 더 안전하니까)
인바운드 항목이 생겼다. 여러곳에서 접속을 해야한다면 또 편집버튼 눌러서 규칙을 추가하면 된다
그리고나서 접속을 실행해보기
이젠 성공!
============
저번시간처럼 IP를 제한하는 것만으로 충분히 안전해지지만, 그것보다 훨씬 더 안전하게 하는 방법은
이런 구도를 만드는것
- 같은 VPC안에서 RDS는 외부에서 접속할 수 없도록 하고
- VPC안에 소속돼 있는 EC2인스턴스를 만들어서 이 EC2인스턴스 만이 RDS에 접속할 수 있게 하면
RDS에 직접접속하는 것을 막을 수 있다
더 많은 보안적인 고려가 필요한 상황이라면 이런 방식을 추천. AWS에서도 이걸 추천하고 있음
===
위에걸 테스트해보기 위해 첫번째로 필요한건
기존에 설정해놨던 public access와 같은 것들을 끄는 것
수정
이거하고 즉시적용
또 보안그룹의 인바운드
지우고 저장. 아무도 접속 못하게 만들어놓고 출발
===
EC2인스턴스 생성
우분투
t2.nano
vpc를 rds와 같은것으로 지정
퍼블릭 IP 자동 할당 활성화(외부에서도 접속할 수 있도록)
스토리지추가기본값
태그추가도기본값
보안 그룹 구성에 22번 포트가 열려있는데 SSH라고 해서 command line을 통해서 유닉스 리눅스 macOS와 같은 운영체제를 원격제어할 수 있는 방법을 사용하려면 22번 포트가 열려있어야 한다
그리고 어느 사용자나 접속할 수 있게 소스를 저렇게. 왜냐면 EC2만큼은 접속할 수 있어야 이 EC2인스턴스를 통해서 DB에 접속할 수 있다.
시작
키페어(=비밀번호) 선택
저거 체크박스 선택하고 시작
좀 시간이 걸림
running이 되면 퍼블릭 IP/DNS 로 접속하면 된다
===
SSH를 통해서 원격제어를 하려고 하는 것
EC2에 ubuntu인스턴스를 만들었기 때문에 ubuntu라고 하는 id값의 유저가 기본적으로 생성돼있다. 약속임
ssh ubuntu@그서버의주소
-i : 접속할 때 제출하는 비밀번호. 그 비밀번호가 위치하고 있는 디렉토리를 써주면 된다. cloudront수업만들때 썼던거라 이름이 저럼
여기서 mysql 모니터를 하려고 하면 없지 안 깔려있으니까
sudo apt update; : installer인 apt라는 프로그램의 상태를 최신상태로 업데이트
sudo apt install mysql-client : mysql 모니터가 설치
RDS페이지가서 엔드포인트의 주소를 카피
-h엔드포인트주소
-u
-p
왜 아무것도 안나와. 접속을 못하고 있다
그 이유는
RDS와 EC2모두 같은 VPC지만 EC2가 RDS에 접속하려고 하면 역시나 Security Group을 통해서 허용애 돼야 한다
===
보안그룹 클릭
인바운드 편집
EC2 인스턴스로 가서
IP주소를 RDS의 Security Group에 등록하면 된다. 이것도 있지만 더 좋은 방법은 EC2인스턴스가 소속돼있는 걔의 Security Group이 있을 거 아냐
===
launch-wizard-10클릭
저거 클릭
보기편하게 이렇게 적어놓기
그룹 ID 라고 돼 있는 저걸 카피
다시 RDS로 가서 RDS의 보안그룹 클릭
이건 이렇게
여기에 인바운드 - 편집에서
RDS가 있는 시큐리티 그룹에 우리가 만든 EC2인스턴스가 속해있는 시큐리티그룹에 속해 있는 머신들은 누구나 접속할 수 있게 하기 = EC2 시큐리티 그룹의 ID를 RDS 시큐리티 그룹에 등록해야해(8:45아 말하기도 힘드네요)
사용자 지정에 복사했던걸 넣고 조금 지우면 밑에 추천을 해줌
설명엔 for ec2라고 써놓고 저장
RDS가 속해있는 Security Group에는 EC2가 속해있는 Security Group의 머신들은 누구나 접속할 수 있게 허용한 것
===
아까 했던 명령어 다시
성공
이러면 좀 더 안전하게 RDS에 접속할 수 있다. 더 안전하게 운영한다.
EC2만 접속할 수 있게 되므로 훨씬 더 안전해
여러분은 항상 EC2를 경유해서 RDS를 접속해야 되는 불편함이 있지만 안전함이 최우선이므로
===
'생활코딩 AWS' 카테고리의 다른 글
AWS CloudWatch - CPUUtilization graph (0) 2022.04.25 AWS2 RDS (3)모니터링, 백업과 복원, 마치며 (0) 2022.04.12 AWS2 RDS (1)생성, AZ, VPC (0) 2022.04.10 AWS Auto Scaling (0) 2022.04.08 AWS Launch Template (0) 2022.04.08