Amazon Aurora MySQL를 사용한 보안 - Amazon Aurora

Amazon Aurora MySQL를 사용한 보안

Amazon Aurora MySQL 보안은 다음과 같이 세 가지 수준에서 관리됩니다.

  • Aurora MySQL DB 클러스터 및 DB 인스턴스에서 Amazon RDS 관리 작업을 수행할 수 있는 사용자를 제어하려면 AWS Identity and Access Management(IAM)을 사용합니다. IAM 자격 증명을 사용하여 AWS에 연결할 때는 Amazon RDS 관리 작업에 필요한 권한을 부여할 수 있는 IAM 정책이 AWS 계정에 반드시 필요합니다. 자세한 내용은 Amazon Aurora의 Identity and Access Management(IAM) 단원을 참조하십시오.

    IAM을 사용하여 Amazon RDS 콘솔에 액세스하려면, 먼저 IAM 사용자 자격 증명으로 AWS Management 콘솔에 로그인해야 합니다. 그런 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔로 이동합니다.

  • Aurora MySQL DB 클러스터는 Amazon Virtual Private Cloud(VPC)에서 생성해야 합니다. Aurora MySQL DB 클러스터에서 DB 인스턴스의 엔드포인트 및 포트에 연결할 수 있는 디바이스 또는 Amazon EC2 인스턴스를 제어하려면 VPC 보안 그룹을 사용합니다. 이 엔드포인트와 포트는 Secure Sockets Layer(SSL) 방식으로 연결할 수 있습니다. 그 밖에도 기업의 방화벽 규칙을 통해 기업에서 이용하는 디바이스의 DB 인스턴스 연결 여부를 제어하는 것도 가능합니다. VPC에 대한 자세한 정보는 Amazon Virtual Private Cloud VPC 및 Amazon Aurora 단원을 참조하십시오.

    지원되는 VPC 테넌시는 Aurora MySQL DB 클러스터에서 사용하는 인스턴스 클래스에 따라 다릅니다. default VPC 테넌시로 VPC가 공유된 하드웨어에서 실행됩니다. dedicated VPC 테넌시를 사용하여 VPC는 전용 하드웨어 인스턴스에서 실행됩니다. Aurora MySQL은 인스턴스 클래스 기반으로 다음 VPC 테넌시를 지원합니다.

    • db.r3 인스턴스 클래스는 defaultdedicated VPC 테넌시를 모두 지원합니다.

    • db.r4 인스턴스 클래스는 defaultdedicated VPC 테넌시만 지원합니다.

    • db.r2 인스턴스 클래스는 default VPC 테넌시만 지원합니다.

    인스턴스 클래스에 대한 자세한 정보는 DB 인스턴스 클래스 단원을 참조하십시오. defaultdedicated VPC 테넌시에 대한 자세한 정보는 Amazon Elastic Compute Cloud 사용 설명서전용 인스턴스를 참조하십시오.

  • Amazon Aurora MySQL DB 클러스터에 대한 로그인 및 권한을 인증하기 위해서는 다음 접근 방식 중 하나를 따르거나 두 방식을 조합할 수 있습니다.

    • 독립형 MySQL 인스턴스와 동일한 접근법을 사용할 수 있습니다.

      CREATE USER, RENAME USER, GRANT, REVOKESET PASSWORD 등의 명령은 온프레미스 데이터베이스에서 작동하는 것과 마찬가지로 작동하며, 데이터베이스 스키마 테이블을 직접 수정할 때도 동일합니다. 자세한 내용은 MySQL 설명서의 액세스 제어 및 계정 관리 단원을 참조하십시오.

    • 또한 IAM 데이터베이스 인증을 사용할 수도 있습니다.

      IAM 데이터베이스 인증의 경우, IAM 사용자 또는 IAM 역할 및 인증 토큰을 이용해 DB 클러스터에 인증합니다. 인증 토큰은 서명 버전 4 서명 프로세스를 통해 생성하는 고유 값입니다. IAM 데이터베이스 인증을 사용하면 동일한 자격 증명을 사용해 AWS 리소스 및 데이터베이스에 대한 액세스를 제어할 수 있습니다. 자세한 정보는 을 위한 IAM 데이터베이스 인증 단원을 참조하십시오.

Amazon Aurora MySQL을 사용한 마스터 사용자 권한

Amazon Aurora MySQL DB 인스턴스를 생성할 때 마스터 사용자는 다음과 같은 기본 권한을 갖습니다.

  • ALTER

  • ALTER ROUTINE

  • CREATE

  • CREATE ROUTINE

  • CREATE TEMPORARY TABLES

  • CREATE USER

  • CREATE VIEW

  • DELETE

  • DROP

  • EVENT

  • EXECUTE

  • GRANT OPTION

  • INDEX

  • INSERT

  • LOAD FROM S3

  • LOCK TABLES

  • PROCESS

  • REFERENCES

  • RELOAD

  • REPLICATION CLIENT

  • REPLICATION SLAVE

  • SELECT

  • SHOW DATABASES

  • SHOW VIEW

  • TRIGGER

  • UPDATE

DB 클러스터를 생성할 때는 각 DB 클러스터의 관리 서비스를 위해 rdsadmin 사용자가 만들어집니다. rdsadmin 계정을 삭제하려고 하거나, 계정 이름 또는 암호를 변경하려고 하거나, 계정 권한을 변경하려고 하면 오류가 발생합니다.

Aurora MySQL DB 클러스터의 관리를 위해 기본 killkill_query 명령은 사용이 제한됩니다. 대신, Amazon RDS 명령으로 rds_killrds_kill_query를 사용하여 Aurora MySQL DB 인스턴스의 사용자 세션이나 쿼리를 종료할 수 있습니다.

참고

중국(닝샤) 리전에서는 데이터베이스 인스턴스와 스냅샷의 암호화가 지원되지 않습니다.

Aurora MySQL DB 클러스터에서 SSL/TLS 사용

Amazon Aurora MySQL DB 클러스터는 Amazon RDS MySQL DB 인스턴스와 동일한 프로세스 및 퍼블릭 키를 사용하여 애플리케이션의 Secure Sockets Layer(SSL) 및 Transport Layer Security(TLS) 연결을 지원합니다.

Amazon RDS가 SSL/TLS 인증서를 생성한 후 Amazon RDS가 인스턴스를 프로비저닝할 때 DB 인스턴스에 인증서를 설치합니다. 인증 기관이 서명하는 SSL 인증서에는 SSL/TLS 인증서에는 스푸핑 공격으로부터 보호해주는 SSL/TLS 인증서를 위한 일반 이름(CN)으로 DB 인스턴스 엔드포인트가 포함되어 있습니다. 그 결과 클라이언트가 Subject Alternative Names(SAN)를 지원할 경우 SSL/TLS를 이용한 DB 클러스터 연결의 유일한 방법은 DB 클러스터 엔드포인트를 이용하는 것입니다. 그렇지 않으면 라이터 인스턴스의 인스턴스 엔드포인트를 사용해야 합니다.

인증서 다운로드에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 클러스터에 대한 연결 암호화 단원을 참조하십시오.

Aurora MySQL 5.6은 TLS(전송 계층 보안) 버전 1.0을 지원하지 않습니다. Aurora MySQL 5.7은 TLS 버전 1.0, 1.1, 1.2를 지원합니다.

SAN과 SSL을 지원하는 클라이언트로서 MariaDB Connector/J 클라이언트를 권장합니다. 자세한 정보는 MariaDB Connector/J 다운로드 페이지 단원을 참조하십시오.

Aurora MySQL DB 클러스터에 대한 SSL/TLS 연결 필요

require_secure_transport DB 클러스터 파라미터를 사용하여 Aurora MySQL DB 클러스터에 대한 모든 사용자 연결에서 SSL/TLS를 사용하도록 요구할 수 있습니다. 기본적으로 require_secure_transport 파라미터는 OFF로 설정됩니다. require_secure_transport 파라미터를 ON으로 설정하면 해당 DB 클러스터에 대한 연결 시 SSL/TLS를 요구합니다.

require_secure_transport 파라미터 값은 DB 클러스터의 DB 클러스터 파라미터 그룹을 업데이트하여 설정할 수 있습니다. 변경 사항을 적용하기 위해 DB 클러스터를 재부팅할 필요가 없습니다. 파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 및 DB 클러스터 파라미터 그룹 작업 단원을 참조하십시오.

참고

require_secure_transport 파라미터는 Aurora MySQL 버전 5.7에서만 사용할 수 있습니다.

DB 클러스터에 대해 require_secure_transport 파라미터를 ON으로 설정하면 암호화된 연결을 설정할 수 있는 경우 데이터베이스 클라이언트가 인스턴스에 연결할 수 있습니다. 그렇지 않으면 다음과 유사한 오류 메시지가 클라이언트에 반환됩니다.

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Aurora MySQL DB 클러스터에 대한 연결 암호화

기본 mysql 클라이언트를 사용하여 연결을 암호화하려면 --ssl-ca parameter를 사용하여 mysql 클라이언트를 실행하고 다음과 같은 퍼블릭 키 등을 참조합니다.

MySQL 5.7 이상인 경우:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY

MySQL 5.6 이전인 경우:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert

특정 사용자 계정에 대한 SSL/TLS 연결을 요구할 수 있습니다. 예를 들면 MySQL 버전에 따라 다음 문 중 하나를 사용하여 사용자 계정 encrypted_user에 대한 SSL/TLS 연결을 요구할 수 있습니다.

MySQL 5.7 이상인 경우:

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

MySQL 5.6 이전인 경우:

GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;

RDS 프록시를 사용하는 경우 일반적인 클러스터 엔드포인트 대신 프록시 엔드포인트에 연결합니다. Aurora DB 클러스터에 직접 연결하는 것과 같은 방법으로 프록시 연결에 SSL/TLS를 필수 또는 선택 사항으로 지정할 수 있습니다. RDS Proxy 사용에 대한 자세한 내용은 Amazon RDS Proxy와의 연결 관리 단원을 참조하십시오.

참고

MySQL과의 SSL/TLS 연결에 대한 자세한 정보는 MySQL 설명서를 참조하십시오.