Azure Database for MySQL 고가용성, 자동화된 백업 및 확장 가능한 MySQL 호환 데이터베이스 호스팅을 제공하는 완전 관리형 관계형 데이터베이스 서비스입니다. 유연한 서버 배포를 보호하면 중요한 데이터를 보호하고 ID 및 네트워크 노출을 줄이며 규정 준수 요구 사항을 지원할 수 있습니다.
이 문서에서는 Azure Database for MySQL 배포를 보호하는 데 도움이 되는 보안 권장 사항을 제공합니다.
이 문서의 보안 권장 사항은 제로 트러스트 원칙인 "명시적으로 확인", "최소 권한 액세스 사용" 및 "위반 가정"을 구현합니다. 포괄적인 제로 트러스트 지침은 제로 트러스트 지침 센터를 참조하세요.
네트워크 보안
네트워크 보안 제어는 클라이언트가 Azure Database for MySQL 유연한 서버 인스턴스에 도달하는 방법을 제한하고 공용 인터넷 트래픽에 대한 노출을 줄이는 데 도움이 됩니다.
- 프로덕션 서버에 대한 공용 네트워크 액세스 사용 안 함: 프라이빗 연결 경로만 유연한 서버에 연결할 수 있도록 클라이언트가 프라이빗 엔드포인트를 통해 연결할 수 있는 경우 공용 액세스를 사용하지 않도록 설정합니다. 자세한 내용은 Azure Database for MySQL에 대한 프라이빗 링크 - 유연한 서버를 참조하세요.
- 공용 액세스 서버에 프라이빗 엔드포인트 사용: Private Link 사용하여 가상 네트워크의 개인 IP 주소를 통해 유연한 서버를 노출하고 데이터 액세스를 승인된 프라이빗 엔드포인트 연결로 제한합니다. 자세한 내용은 Azure Database for MySQL에 대한 프라이빗 링크 - 유연한 서버를 참조하세요.
- 가상 네트워크 통합을 사용하여 프라이빗 액세스 서버 배포: 유연한 서버를 위임된 서브넷에 삽입하고 동일한 가상 네트워크, 피어링된 가상 네트워크, VPN 또는 ExpressRoute에서만 액세스해야 하는 경우 가상 네트워크 통합을 사용합니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버에 가상 네트워크 통합을 사용하는 프라이빗 네트워크 액세스를 참조하세요.
- 공용 방화벽 규칙 제한: 공용 연결이 필요한 시나리오에 대해서만 공용 방화벽 규칙을 사용하고, 특정 IPv4 범위만 허용하며, 다른 고객의 구독에서 연결을 허용할 수 있으므로 모든 Azure 서비스에서 액세스를 허용하는 옵션을 사용하지 마세요. 자세한 내용은 Azure Database for MySQL - 유연한 서버에 대한 공용 네트워크 액세스를 참조하세요.
ID 및 액세스 관리
ID 및 액세스 제어는 인증을 중앙 집중화하고 자격 증명 노출을 줄이며 Azure 관리 작업 및 데이터베이스 액세스 모두에 대해 최소 권한을 적용하는 데 도움이 됩니다.
- 데이터베이스 액세스에 Microsoft Entra 인증 사용: 사용자와 애플리케이션이 MySQL 암호에만 의존하는 대신 Microsoft Entra ID로 인증할 수 있도록 Azure Database for MySQL 유연한 서버에 대한 Microsoft Entra 인증을 구성합니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버에 대한 Microsoft Entra 인증을 참조하세요.
- 가능한 경우 Microsoft Entra 전용 인증 사용: 사용자 및 애플리케이션을 Microsoft Entra 인증으로 마이그레이션한 후 MySQL 네이티브 인증을 사용하지 않도록 설정하여 유연한 서버에 대한 암호 기반 액세스 경로를 줄입니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버에 대한 Microsoft Entra 인증을 참조하세요.
- 애플리케이션 연결에 관리 ID 사용: 애플리케이션이 포함된 데이터베이스 암호 대신 토큰을 사용하여 Azure Database for MySQL 연결할 수 있도록 Microsoft Entra 인증과 함께 관리 ID 또는 서비스 주체를 사용합니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버에 대한 Microsoft Entra 인증을 참조하세요.
- 최소 권한 데이터베이스 권한 할당: 각 애플리케이션 또는 관리 기능에 대해 전용 MySQL 사용자 또는 Microsoft Entra 매핑된 데이터베이스 사용자를 만들고 각 ID에 필요한 스키마, 테이블 및 작업 권한만 부여합니다. 자세한 내용은 Azure Database for MySQL에서 사용자 만들기를 참조하세요.
- Azure Database for MySQL 관리자에 대한 조건부 액세스 적용: Azure Portal, Azure CLI, Azure PowerShell과 같은 Azure Resource Manager 도구를 통해 Flexible Server 리소스를 관리할 수 있는 ID에 대해 다단계 인증을 요구하는 조건부 액세스 정책을 적용합니다. 자세한 내용은 Azure 관리를 위한 MFA 필수 문서를 참조하세요.
데이터 보호
Azure Database for MySQL 기본적으로 서비스 관리형 키를 사용하여 미사용 데이터를 암호화합니다. 다음 컨트롤을 사용하면 암호화, 키 관리 및 암호화된 클라이언트 연결을 더 자세히 제어할 수 있습니다.
-
암호화된 클라이언트 연결 필요: 클라이언트 연결에서 TLS 암호화를 Azure Database for MySQL 사용하고 데이터베이스 트래픽을 명확한 텍스트로 보내지 않도록 계속
require_secure_transport사용하도록 설정합니다. 자세한 내용은 Azure Database for MySQL TLS(전송 계층 보안)를 참조하세요. -
MySQL 8.0 서버에 TLS 1.3을 강제 적용: 클라이언트 애플리케이션 및 드라이버가 TLS 1.3을 지원하는지 확인한 후 Azure Database for MySQL 8.0 유연한 서버에서
tls_version를TLS 1.3로 설정합니다. 자세한 내용은 Azure Database for MySQL TLS(전송 계층 보안)를 참조하세요. - 클라이언트에서 서버 인증서 유효성 검사: 클라이언트 애플리케이션을 구성하여 서버 인증서 체인의 유효성을 검사하고 루트 인증 기관만 신뢰하므로 일상적인 중간 CA 또는 서버 인증서 회전이 보안 연결을 중단하지 않습니다. 자세한 내용은 Azure Database for MySQL TLS(전송 계층 보안)를 참조하세요.
- 키 제어에 고객 관리형 키 사용: 업무 분리, 고객 제어 키 수명 주기 관리 또는 미사용 데이터 암호화에 대한 규정 준수 제어가 필요한 경우 Azure Key Vault 또는 Azure Key Vault 관리형 HSM에 저장된 고객 관리형 키를 사용합니다. 자세한 내용은 Azure Database for MySQL에 대한 고객 관리 키를 사용한 데이터 암호화를 참조하세요.
- 고객 관리형 키 종속성 보호: 고객 관리형 키를 저장하는 Key Vault 또는 관리형 HSM에서 일시 삭제 및 제거 보호를 사용하도록 설정하고, 서버의 사용자 할당 관리 ID에 필요한 키 권한을 할당하고, 키 액세스 손실로 인해 유연한 서버에 액세스할 수 없으므로 키 액세스를 모니터링합니다. 자세한 내용은 Azure Database for MySQL에 대한 고객 관리 키를 사용한 데이터 암호화를 참조하세요.
로깅 및 모니터링
로깅 및 모니터링 컨트롤을 사용하면 의심스러운 데이터베이스 활동을 검색하고, 관리 변경 내용을 조사하고, 규정 준수에 대한 감사 증거를 유지할 수 있습니다.
-
MySQL 감사 로그 사용: 다음으로
ON설정하고audit_log_enabled, 보안 및 규정 준수 요구 사항과 일치하는 감사 이벤트 유형을 선택하고, 조사를 위해 연결, 관리, DDL 및 DML 이벤트를 캡처합니다. 자세한 내용은 자습서: Azure Database for MySQL - 유연한 서버를 사용하여 감사 로그 구성을 참조하세요. -
감사 로그를 Azure Monitor 라우팅: 테이블에서 감사 이벤트를 쿼리하고, 증거를 유지하고, 데이터베이스 감사 이벤트를
AzureDiagnostics보안 작업 워크플로와 통합할 수 있도록 리소스 로그 범주를 Log Analytics 작업 영역, 이벤트 허브 또는 스토리지 계정으로 보내MySqlAuditLogs도록 진단 설정을 구성합니다. 자세한 내용은 자습서: Azure Database for MySQL - 유연한 서버를 사용하여 감사 로그 구성을 참조하세요. - 감사 통합 문서 사용: Azure Database for MySQL 대한 기본 제공 Azure Monitor 감사 통합 문서를 사용하여 관리 작업, 감사 요약, 연결 이벤트, 테이블 액세스 요약 및 식별된 오류를 검토합니다. 자세한 내용은 자습서: Azure Database for MySQL - 유연한 서버를 사용하여 감사 로그 구성을 참조하세요.
- 오픈 소스 관계형 데이터베이스에 Defender 사용: 클라우드용 Microsoft Defender 오픈 소스 관계형 데이터베이스에 Microsoft Defender 사용하도록 설정하여 Azure Database for MySQL 유연한 서버 인스턴스는 비정상적이거나 잠재적으로 유해한 데이터베이스 활동에 대한 경고를 생성할 수 있습니다. 자세한 내용은 Azure 오픈 소스 관계형 데이터베이스에 대한 Defender 사용을 참조하세요.
규정 준수 및 거버넌스
규정 준수 및 거버넌스 제어를 사용하면 Azure Database for MySQL 유연한 서버 플릿에서 일관된 보안 구성을 적용하고 프로덕션 리소스를 실수로 또는 무단으로 변경하지 않도록 보호할 수 있습니다.
-
Azure Policy 진단 로깅 적용: 로그를 Log Analytics, Event Hubs 또는 Storage로 라우팅하는 정책과 같이 진단 설정에 대한
microsoft.dbformysql/flexibleservers기본 제공 Azure Policy 정의를 할당하여 유연한 서버 감사 데이터가 일관되게 수집되도록 합니다. 자세한 내용은 Azure Policy 기본 제공 정책 정의를 참조하세요. -
프로덕션 서버에 삭제 잠금 적용: 프로덕션 Azure Database for MySQL 유연한 서버 리소스에 잠금을 추가하여
CanNotDelete정상적인 운영 변경을 유지하면서 실수로 삭제될 위험을 줄입니다. 자세한 내용은 인프라를 보호하기 위해 Azure 리소스 잠금을 참조하세요. - 거버넌스를 위한 데이터베이스 리소스 태그 지정: 워크로드, 환경, 데이터 분류, 소유자 및 비용 센터와 같은 태그를 적용하여 유연한 서버 리소스를 Azure Database for MySQL 정책 할당, 인벤토리 쿼리 및 비용 검토를 통해 프로덕션 및 중요한 데이터베이스 워크로드를 구분할 수 있습니다. 자세한 내용은 태그를 사용하여 Azure 리소스 및 관리 계층 구조 구성을 참조하세요.
백업 및 복구
백업 및 복구 컨트롤을 사용하면 실수로 인한 삭제, 데이터 손상, 지역 중단 및 위험한 변경 작업으로부터 복구할 수 있습니다.
- 복구 목표에 대한 백업 보존 구성: 워크로드 복구 지점 요구 사항 및 규정 준수 요구 사항에 따라 Azure Database for MySQL 유연한 서버 백업 보존 기간을 1일에서 35일 사이로 설정합니다. 자세한 내용은 Azure Database for MySQL의 백업 및 복원을 참조하세요.
- 지역 복구에 지역 중복 백업 사용: 쌍을 이루는 지역에 백업 복제가 필요한 경우 지역 중복 백업 스토리지를 사용하도록 설정하고 지역 가동 중단 후 지역 복원 기능을 사용하도록 설정합니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버의 비즈니스 연속성 개요를 참조하세요.
- 위험 수준이 높은 변경 전에 주문형 백업 트리거: 스키마 마이그레이션, 주요 구성 변경 또는 유지 관리 작업 전에 주문형 백업을 만들어 서버의 백업 보존 정책에 맞게 최근 복원 지점을 유지합니다. 자세한 내용은 Azure 포털을 사용하여 Azure Database for MySQL - 유연한 서버 인스턴스의 주문형 백업 트리거를 참조하세요.
- 복원 절차 테스트: 복구하는 동안 필요한 서버 설정, 태그, 네트워크 규칙 및 복원 후 작업을 이해할 수 있도록 대표적인 워크로드에 대한 지정 시간 복원 및 지역 복원 절차의 유효성을 검사합니다. 자세한 내용은 Azure Database for MySQL의 백업 및 복원을 참조하세요.