MySQL DB 인스턴스 연결 보안
MySQL DB 인스턴스 연결 보안
AWS RDS 사용자 가이드의 이 페이지를 한국어로 설명합니다.
출처: 문서
본문
무단 액세스 및 잠재적 위협으로부터 MySQL DB 인스턴스를 보호하기 위해 강력한 보안 조치를 구현할 수 있습니다. 보안 그룹, SSL/TLS 암호화, IAM 데이터베이스 인증이 함께 작동하여 MySQL DB 인스턴스에 대한 다중 계층의 연결 보안을 만듭니다. 이러한 보안 제어는 규정 준수 요구 사항을 충족하고 데이터 침해를 방지하며 애플리케이션과 데이터베이스 간의 안전한 통신 채널을 유지하는 데 도움이 됩니다. 전송 중 데이터를 암호화하고 특정 IP 범위로 액세스를 제한하며 데이터베이스 암호 대신 IAM 역할을 통해 사용자 인증을 관리하여 MySQL DB 인스턴스를 보호할 수 있습니다.
MySQL DB 인스턴스의 보안은 세 가지 수준에서 관리됩니다.
- AWS Identity and Access Management는 DB 인스턴스에서 Amazon RDS 관리 작업을 수행할 수 있는 사용자를 제어합니다. IAM 자격 증명으로 AWS에 연결할 때 IAM 계정에는 Amazon RDS 관리 작업을 수행하는 데 필요한 권한을 부여하는 IAM 정책이 있어야 합니다. 자세한 내용은 Amazon RDS에 대한 Identity and access management를 참조하세요.
- DB 인스턴스를 생성할 때 VPC 보안 그룹을 사용하여 어떤 디바이스와 Amazon EC2 인스턴스가 DB 인스턴스의 엔드포인트와 포트에 대한 연결을 열 수 있는지 제어합니다. 이러한 연결은 Secure Sockets Layer(SSL) 및 Transport Layer Security(TLS)를 사용하여 만들 수 있습니다. 또한 회사 네트워크의 방화벽 규칙으로 회사에서 실행되는 디바이스가 DB 인스턴스에 대한 연결을 열 수 있는지 제어할 수 있습니다.
- MySQL DB 인스턴스의 로그인 및 권한을 인증하려면 다음 접근 방식 중 하나 또는 이들의 조합을 사용할 수 있습니다.
- 독립 실행형 MySQL 인스턴스와 동일한 접근 방식을 취할 수 있습니다.
CREATE USER,RENAME USER,GRANT,REVOKE,SET PASSWORD와 같은 명령은 온프레미스 데이터베이스에서와 동일하게 작동하며, 데이터베이스 스키마 테이블을 직접 수정하는 것도 동일합니다. 그러나 데이터베이스 스키마 테이블을 직접 수정하는 것은 모범 사례가 아니며 RDS for MySQL 버전 8.0.36부터는 지원되지 않습니다. 자세한 내용은 MySQL 문서의 Access control and account management를 참조하세요. - IAM 데이터베이스 인증을 사용할 수도 있습니다. IAM 데이터베이스 인증을 사용하면 IAM 사용자 또는 IAM 역할과 인증 토큰을 사용하여 DB 인스턴스에 인증합니다. 인증 토큰은 Signature Version 4 서명 프로세스를 사용하여 생성된 고유한 값입니다. IAM 데이터베이스 인증을 사용하면 동일한 자격 증명으로 AWS 리소스와 데이터베이스에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 MariaDB, MySQL 및 PostgreSQL용 IAM 데이터베이스 인증을 참조하세요.
- 또 다른 옵션은 RDS for MySQL용 Kerberos 인증입니다. DB 인스턴스는 AWS Directory Service for Microsoft Active Directory(AWS Managed Microsoft AD)와 함께 작동하여 Kerberos 인증을 활성화합니다. 신뢰 도메인에 가입된 MySQL DB 인스턴스로 사용자가 인증하면 인증 요청이 전달됩니다. 전달된 요청은 Directory Service로 만든 도메인 디렉터리로 이동합니다. 자세한 내용은 Amazon RDS for MySQL용 Kerberos 인증 사용을 참조하세요.
- 독립 실행형 MySQL 인스턴스와 동일한 접근 방식을 취할 수 있습니다.
Amazon RDS DB 인스턴스를 생성하면 마스터 사용자에게 다음 기본 권한이 부여됩니다.
| 엔진 버전 | 시스템 권한 | 데이터베이스 역할 |
|---|---|---|
| RDS for MySQL 버전 8.4.3 이상 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE ROLE, DROP ROLE, APPLICATION_PASSWORD_ADMIN, FLUSH_OPTIMIZER_COSTS, FLUSH_PRIVILEGES, FLUSH_STATUS, FLUSH_TABLES, FLUSH_USER_RESOURCES, ROLE_ADMIN, SENSITIVE_VARIABLES_OBSERVER, SESSION_VARIABLES_ADMIN, SET_ANY_DEFINER, SHOW_ROUTINE, XA_RECOVER_ADMIN |
rds_superuser_rolerds_superuser_role에 대한 자세한 내용은 RDS for MySQL용 역할 기반 권한 모델을 참조하세요. |
| RDS for MySQL 버전 8.0.36 이상 | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE ROLE, DROP ROLE, APPLICATION_PASSWORD_ADMIN, ROLE_ADMIN, SET_USER_ID, XA_RECOVER_ADMIN |
rds_superuser_rolerds_superuser_role에 대한 자세한 내용은 RDS for MySQL용 역할 기반 권한 모델을 참조하세요. |
| 8.0.36 미만의 RDS for MySQL 버전 | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, REPLICATION SLAVE |
없음 |