AWS RDS MariaDB 생성 with SSL

By | 2022년 3월 3일
Table of Content

AWS RDS MariaDB 생성 with SSL

AWS Console 접속

여기 로 접속해서 데이타베이스 생성을 클릭합니다.

데이터베이스 생성

  • 손쉬운 생성 선택

  • MariaDB 선택

  • 프리 티어 선택

  • DB 인스턴스 식별자 에 디비명을 입력

    유일한 이름이어야 합니다.
    소문자만 사용가능하며, 띄어쓰기는 불가합니다.

  • 마스터 사용자 이름 을 입력합니다.(admin, root 등은 사용하지 않습니다.)

  • 암호 자동 생성 선택

  • 비밀번호 분실시 아래 메뉴에서 비밀번호 재설정 가능

보안 그룹

필요한 경우 inbound/outbound 보안그룹 설정 가능

MariaDB 에서 마스터 계정으로 접속

아래의 메뉴에서 퍼블릭 접속을 허용할 수 있지만 권장하지 않습니다.

하지만 하나의 user 라도 퍼블릭 액세스가 필요하다면 퍼블릭 접속을 허용해야 합니다.
(퍼블릭 액세스가 필요한 데이타는 RDS 자체를 분리해서 별도로 생성해야 합니다.)

기존 EC2 에서 접속하거나, 신규 EC2 를 생성 후 MariaDB 에 접속합니다.

RDS 의 AZ 와 EC2 의 AZ 는 동일해야 합니다.

아래의 명령으로 MySQL Client 를 설치합니다.

sudo yum install mysql57

접속용 계정 생성

RDS 에 접속합니다.

mysql -h <RDS 엔드포인트> -u <마스터계정 ID> -p
Enter password:<마스터계정 비밀번호>
mysql> use mysql;
mysql> select host, user, authentication_string from user;

mysql> create user '아이디'@'%' identified by '비밀번호';

mysql> create schema 디비명 default character set utf8;

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON 디비명.* TO '아이디'@'%' identified by '비밀번호';

mysql> flush privileges;

RDS 에서는 사용자 마스터 계정이 진짜 마스터 계정이 아니라,
상위의 또 다른 마스터 계정이 있습니다.
따라서 ALL privileges 를 사용할 수는 없고,
권한을 나열해 주어야 합니다.

SSL 연결 활성화

AWS RDS 는 기본적으로 SSL 설정이 되어 있습니다.

또한 대부분의 클라이언트도 SSL 사용(사용할수 있으면)이 설정되어 있습니다.
따라서 별다른 설정없이 SSL 연결이 이루어집니다.

SSL 연결이 되어 있는지 확인하기 위해서는 아래 명령을 입력해 봅니다.
SSL 연결이 아닌경우 아무 내용도 출력되지 않습니다.

SHOW SESSION STATUS LIKE 'Ssl_cipher';
mysql> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| Ssl_cipher    | ECDHE-RSA-AES128-GCM-SHA256 |
+---------------+-----------------------------+
1 row in set (0.00 sec)
mysql> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Ssl_cipher    |       |
+---------------+-------+
1 row in set (0.009 sec)

No KST, Yes UTC

서버 시간이 KST 가 아니다.

SELECT NOW();
Category: AWS

답글 남기기