aws

AWS RDS MySQL을 사용할 때 외부 IP 접근을 설정하는 방법과 차이점

hoazzinews 2024. 12. 1. 18:38

AWS RDS MySQL을 사용할 때 외부 IP 접근을 설정하는 방법은 크게 두 가지로 나눌 수 있습니다:

  - AWS 보안 그룹을 이용한 접근 제어

  - MySQL 사용자 테이블의 host 컬럼을 이용한 접근 제어

 

1. AWS 보안 그룹을 이용한 접근 제어

  1-1. 목적: AWS 보안 그룹은 네트워크 수준에서 접근을 제어합니다.

  1-2. 방법: AWS Management Console을 사용하여 RDS 인스턴스에 연결된 보안 그룹에서 인바운드 규칙을 설정합니다.

  1-3. 장점:

    - 네트워크 레벨에서 보안: RDS 인스턴스에 연결하려면, 해당 IP가 보안 그룹의 규칙을 통해 허용되어야 하므로 네트워크 외부에서의 접근을 제어할 수 있습니다.

     - 관리 용이성: 관리가 직관적이고 AWS의 다른 서비스들과 연동되어 설정이 간편합니다.

    - 외부 서비스와의 통합: AWS의 다양한 서비스와 쉽게 연동할 수 있습니다.

  1-4. 단점:

    - SQL 레벨 권한 설정 불가능: 보안 그룹은 네트워크 레벨에서의 접근 제어만 제공하므로, MySQL 내부에서의 세밀한 권한 제어는 불가능합니다.

    - 다양한 사용자 관리 어려움: 여러 MySQL 사용자에 대해 IP 주소별로 세부적인 접근을 관리하려면 보안 그룹을 추가적으로 설정해야 할 수 있습니다.

 

2. MySQL 사용자 테이블의 host 컬럼을 이용한 접근 제어

  2-1. 목적: MySQL의 사용자 권한 시스템을 통해 데이터베이스 레벨에서 접근을 제어합니다.

  2-1. 방법: MySQL user 테이블의 host 컬럼을 사용하여 특정 IP에서만 로그인할 수 있도록 제한합니다.('username'@'192.168.56.102' )

  2-3. 장점:

    - 세밀한 제어: MySQL 사용자별로 접근할 수 있는 IP 범위를 지정할 수 있어, 네트워크 상에서의 정확한 접근 제어가 가능합니다.

    - 데이터베이스 레벨에서의 제어: MySQL의 사용자 권한 시스템을 활용해, 데이터베이스에 접근할 수 있는 IP 외에도 다양한 권한을 세부적으로 설정할 수 있습니다. 예를 들어, 특정 사용자가 특정 DB나 테이블에만 접근하도록 할 수 있습니다.

  2-4. 단점:

    - 보안 그룹을 우회할 수 없음: 보안 그룹을 통해 IP 접근이 허용되지 않으면, MySQL에서 접근 제어를 설정해도 해당 IP가 네트워크적으로 연결할 수 없으므로, MySQL 레벨의 접근 제어만으로는 유효하지 않습니다.

    - 관리 복잡성 증가: 사용자 수가 많아지거나 다양한 접근이 필요한 경우, MySQL 내에서의 권한 관리가 복잡해질 수 있습니다.

 

  AWS 보안 그룹 MySQL 사용자 테이블의 host 컬럼
적용 범위 네트워크 레벨 (EC2 인스턴스, VPC 등) 데이터베이스 레벨 (특정 사용자와 IP 제한)
설정 위치 AWS Management Console 또는 CLI MySQL 쿼리 (예: CREATE USER 명령)
관리 용이성 AWS에서 한 번에 관리 가능 MySQL에서 개별적으로 관리 필요
네트워크 접근 제어 네트워크 트래픽을 차단하여 접근 제어 SQL 레벨에서 사용자별 IP 접근 제어
보안 레벨 네트워크 보안 (IP 기반) MySQL 사용자별 접근 보안 (세부 권한 설정)
연동 AWS와 다른 서비스들과 연동 가능 MySQL 내부에서만 관리

 

 

결론적으로 AWS 보안 그룹은 네트워크 수준에서의 접근 제어를 제공하며, MySQL 사용자 테이블의 host 컬럼은 데이터베이스 수준에서 특정 사용자에 대해 IP 접근을 제한하는 방법입니다. 따라서 두가지 방법은 상호 보완적인 방식으로 운영될 수 있으며, AWS 보안 그룹을 사용하여 기본적인 네트워크 접근 제어를 하고, MySQL host 컬럼을 통해 세부적인 사용자별 제어를 추가로 하는 것이 가장 안전한 접근 방법입니다.