Azure SQL Database 보안

적용 대상:Azure SQL Database

Azure SQL Database는 사용자 개입 없이 업그레이드, 패치, 백업 및 모니터링과 같은 데이터베이스 관리 기능을 처리하는 완전히 관리되는 PaaS(Platform as a Service) 데이터베이스 엔진입니다. 고객 레코드, 재무 정보 및 지적 재산권을 비롯한 중요한 비즈니스 데이터를 저장하는 경우가 많기 때문에 데이터 위반, 무단 액세스 및 규정 준수 위반으로부터 보호하려면 Azure SQL Database 보안이 필수적입니다.

이 문서에서는 Azure SQL Database 배포를 가장 안전하게 보호하는 방법에 대한 지침을 제공합니다.

네트워크 보안

Azure SQL Database의 네트워크 보안은 무단 연결을 방지하고, 공격에 대한 노출을 줄이며, 적절한 네트워크 격리 및 액세스 제어를 통해 신뢰할 수 있는 원본만 데이터베이스에 연결할 수 있도록 합니다.

  • 보안 강화를 위해 프라이빗 엔드포인트 사용: Azure Private Link를 사용하여 개인 IP 주소를 통해 Azure SQL Database에 연결하여 공용 인터넷에 데이터베이스를 노출하지 않도록 합니다. 프라이빗 연결은 데이터 반출 위험을 없애고 공격 노출 영역을 줄입니다. 자세한 내용은 Azure SQL Database용 Azure Private Link를 참조하세요.

  • 적절한 연결 정책 선택: 프록시 및 리디렉션 연결 정책의 차이점을 이해합니다. 리디렉션은 짧은 대기 시간을 제공하며 Azure 내에서의 연결에 권장되는 반면, 프록시는 Azure 외부의 연결에 필요합니다. 자세한 내용은 Azure SQL Database 연결 아키텍처를 참조하세요.

  • 서버 수준 방화벽 규칙 구성: 연결할 수 있는 IP 주소 또는 범위를 지정하는 IP 방화벽 규칙을 구성하여 Azure에서 논리 서버에 대한 액세스를 제어합니다. 필요한 IP 주소만 허용하여 최소 권한 원칙을 사용합니다. 자세한 내용은 Azure SQL Database 및 Azure Synapse IP 방화벽 규칙을 참조하세요.

  • 데이터베이스 수준 방화벽 규칙 구성: 보다 세부적인 제어를 위해 개별 데이터베이스에 적용되는 데이터베이스 수준 방화벽 규칙을 구성합니다. 이 구성을 사용하면 데이터베이스별 액세스 정책을 구현할 수 있습니다. 자세한 내용은 데이터베이스 수준 방화벽 규칙을 참조하세요.

  • Azure Virtual Network와 통합: 가상 네트워크 규칙을 사용하여 Azure 가상 네트워크 내의 특정 서브넷에서만 트래픽을 허용합니다. 이 구성은 IP 기반 규칙을 넘어 네트워크 격리의 추가 계층을 제공합니다. 자세한 내용은 Azure SQL Database에 대한 가상 네트워크 규칙을 참조하세요.

  • 연결 암호화 사용: 전송 중인 암호화를 사용하도록 모든 클라이언트 연결을 구성합니다. Azure SQL Database는 기본적으로 TLS(전송 계층 보안) 1.2를 지원하여 클라이언트와 데이터베이스 간에 이동하는 동안 데이터가 보호되도록 합니다. TLS 1.3도 사용할 수 있습니다. 자세한 내용은 연결 아키텍처를 참조하세요.

  • 프라이빗 엔드포인트를 사용할 때 공용 액세스 사용 안 함: 프라이빗 엔드포인트를 사용하는 경우 공용 네트워크 액세스를 완전히 사용하지 않도록 설정하여 모든 연결이 프라이빗 엔드포인트를 통과하도록 합니다. 이 구성은 최고 수준의 네트워크 보안을 제공합니다. 자세한 내용은 공용 네트워크 액세스 거부를 참조하세요.

ID 관리

강력한 ID 및 인증 제어를 통해 권한 있는 사용자 및 애플리케이션만 중앙 집중식 ID 관리 및 보다 쉬운 계정 수명 주기 제어를 제공하면서 Azure SQL Database 리소스에 액세스할 수 있습니다.

  • Microsoft Entra 관리자 구성: 중앙 집중식 ID 관리 및 고급 보안 기능을 사용하도록 논리 서버에 대한 Microsoft Entra(이전의 Azure Active Directory) 관리자를 지정합니다. 이 관리자는 액세스 및 인증 정책을 관리할 수 있습니다. 자세한 내용은 Microsoft Entra 인증 구성을 참조하세요.

  • Microsoft Entra 인증 사용: 중앙 집중식 ID 관리 및 더 쉬운 계정 수명 주기 제어를 위해 SQL 인증 대신 Microsoft Entra 인증을 사용합니다. Microsoft Entra ID는 뛰어난 보안을 제공하며 조건부 액세스 및 다단계 인증과 같은 고급 기능을 지원합니다. 자세한 내용은 Microsoft Entra 인증을 참조하세요.

  • 조건부 액세스 정책 구성: 조건부 액세스 정책을 사용하여 사용자 위치, 디바이스 준수 및 위험 수준과 같은 조건에 따라 액세스를 제어합니다. 이 방법은 각 액세스 시도의 컨텍스트에 응답하는 적응형 보안을 제공합니다. 자세한 내용은 조건부 액세스를 참조하세요.

  • 포함된 데이터베이스 사용자 만들기: 가능하면 서버 수준 로그인 대신 Microsoft Entra ID 또는 그룹에 매핑되는 포함된 데이터베이스 사용자를 사용합니다. 이 방법은 사용 권한 관리를 간소화하고 서버 수준 액세스의 필요성을 제거하여 보안을 향상시킵니다. 자세한 내용은 포함된 데이터베이스 사용자를 참조하세요.

  • 다단계 인증 사용: 관리자 계정 및 권한 있는 사용자가 암호 이외의 추가 보안 계층을 추가하려면 MFA(다단계 인증)가 필요합니다. Microsoft Entra ID는 전화 확인, 인증자 앱 및 FIDO2 보안 키를 비롯한 다양한 MFA 방법을 지원합니다. 자세한 내용은 다단계 인증을 참조하세요.

  • 애플리케이션에 관리 ID 사용: Azure 리소스에 대한 관리 ID를 사용하도록 설정하여 자격 증명을 저장하지 않고 애플리케이션이 인증할 수 있도록 합니다. 이 방법은 암호가 포함된 연결 문자열을 관리할 필요가 없도록 하고 자격 증명 노출 위험을 줄입니다. 자세한 내용은 Azure SQL용 Microsoft Entra의 관리 ID를 참조하세요.

  • 강력한 암호 정책 적용: SQL 인증을 사용하는 경우 쉽게 추측할 수 없는 복잡한 암호가 필요합니다. 암호 회전 정책을 구현하고 여러 계정에서 암호를 다시 사용하지 않도록 합니다. 자세한 내용은 암호 정책을 참조하세요.

  • 가능한 경우 SQL 인증 사용 안 함: 최대 보안을 위해 SQL 인증을 완전히 사용하지 않도록 설정하고 모든 연결에서 Microsoft Entra 인증을 사용하도록 요구하는 것이 좋습니다. 이 방법은 약하거나 손상된 SQL 암호의 위험을 제거합니다. 자세한 내용은 Microsoft Entra 전용 인증을 참조하세요.

권한 있는 액세스

권한 있는 액세스를 제어하면 무단 변경이 방지되고 손상된 계정의 영향이 줄어들며 관리 작업이 제대로 모니터링 및 제어됩니다.

  • 최소 권한 액세스 구현: 사용자에게 작업 기능을 수행하는 데 필요한 최소 권한만 부여합니다. 최소 권한 원칙을 유지하기 위해 정기적으로 사용 권한을 검토하고 조정합니다. 자세한 내용은 데이터베이스 엔진 사용 권한 시작을 참조하세요.

  • 별도의 관리 역할: 모든 데이터베이스 관리자에게 관리자 권한을 부여하지 않습니다. 가능하면 더 세분화된 사용 권한을 사용하고 다른 관리 기능 간에 업무 분리를 구현합니다. 자세한 내용은 사용 권한을 참조하세요.

  • Azure RBAC(역할 기반 액세스 제어) 사용: Azure RBAC를 구현하여 Azure SQL Database 관리 작업에 대한 액세스를 제어합니다. 특정 관리 작업에 필요한 권한만 제공하는 사용자 지정 역할을 만듭니다. 자세한 내용은 Azure SQL Database용 Azure RBAC를 참조하세요.

  • 권한 있는 활동 모니터링: 감사를 사용하도록 설정하여 권한 있는 계정에서 수행하는 모든 작업을 추적합니다. 의심스러운 활동 또는 무단 변경에 대한 감사 로그를 정기적으로 검토합니다. 중요한 작업에 대한 경고를 구성합니다. 자세한 내용은 Azure SQL Database 감사를 참조하세요.

  • 액세스 관리에 데이터베이스 역할 사용: 기본 제공 데이터베이스 역할을 활용하고 사용자 지정 역할을 만들어 역할 기반 보안을 구현합니다. 관리를 간소화하고 오류를 줄이기 위해 개별 권한을 부여하는 대신 역할에 사용자를 할당합니다. 자세한 내용은 데이터베이스 수준 역할을 참조하세요.

  • Just-In-Time 액세스 구현: Microsoft Entra PIM(Privileged Identity Management)을 사용하여 관리 역할에 대한 시간 제한 승인 기반 액세스를 제공합니다. 이 접근 방식을 통해 사용자는 필요할 때만 상승된 권한만 가질 수 있습니다. 자세한 내용은 Privileged Identity Management를 참조하세요.

데이터 보호

데이터 보호는 암호화, 액세스 제어 및 데이터 분류를 통해 정보를 보호하여 중요한 정보의 무단 공개, 변조 또는 손실을 방지합니다.

  • TDE(투명한 데이터 암호화) 사용: TDE를 사용하여 미사용 데이터베이스, 로그 및 백업 파일을 암호화합니다. TDE는 새로 만든 모든 Azure SQL 데이터베이스에 대해 기본적으로 사용하도록 설정됩니다. 암호화 키를 추가로 제어하려면 Azure Key Vault에서 고객 관리형 키를 사용하는 것이 좋습니다. 자세한 내용은 고객 관리형 키를 사용하여 TDE(투명한 데이터 암호화) 및 TDE를 참조하세요.

  • 중요한 데이터에 대해 Always Encrypted 구현: Always Encrypted를 사용하여 사용, 미사용 및 전송 중인 매우 중요한 데이터를 보호합니다. 이 보호를 통해 데이터베이스 관리자도 중요한 데이터를 일반 텍스트로 볼 수 없습니다. 향상된 기능을 위해 보안 enclave와 함께 Always Encrypted를 사용합니다. 자세한 내용은 Always Encrypted를 참조하세요.

  • 변조 방지 데이터에 원장 사용: 원장을 사용하여 중요한 데이터의 변경 내용에 대한 변경할 수 없는 레코드를 만들어 변조 방지 로깅을 제공합니다. 원장 테이블은 데이터 무결성에 대한 암호화 증명을 제공하며 규정 요구 사항을 충족하는 데 도움이 될 수 있습니다. 자세한 내용은 원장을 참조하세요.

  • 동적 데이터 마스킹 사용: 동적 데이터 마스킹을 적용하여 애플리케이션에 대한 데이터 기능을 유지하면서 권한이 없는 사용자의 중요한 데이터를 난독 처리합니다. 이 기능은 애플리케이션을 변경하지 않고도 중요한 정보에 대한 무단 액세스를 방지하는 데 도움이 됩니다. 자세한 내용은 동적 데이터 마스킹을 참조하세요.

  • 중요한 데이터 분류 및 레이블 지정: SQL 데이터 검색 및 분류를 사용하여 데이터베이스에서 중요한 데이터를 식별, 분류 및 레이블 지정합니다. 이 분류는 더 나은 보호 및 규정 준수 보고를 가능하게 하며 중요한 데이터가 있는 위치를 이해하는 데 도움이 됩니다. Microsoft Purview와 통합하면 향상된 데이터 거버넌스 기능이 제공됩니다. 자세한 내용은 데이터 검색 및 분류 및Microsoft Purview 통합을 참조하세요.

  • 열 수준 보안 구현: 열 수준에서 중요한 데이터에 대한 액세스를 제한할 수 있는 권한을 부여합니다. 특히 중요한 열에 액세스해야 하는 사용자에게 SELECT, UPDATE 또는 REFERENCES 권한만 제공합니다. 자세한 내용은 열 수준 보안을 참조하세요.

  • RLS(Row-Level 보안) 사용: 사용자가 관련 데이터 행에만 액세스할 수 있도록 RLS를 구현합니다. 이 기능은 중요한 애플리케이션 변경 없이 애플리케이션 수준 보안을 제공하며 다중 테넌트 시나리오에 적합합니다. 자세한 내용은 Row-Level 보안을 참조하세요.

백업 및 복구

신뢰할 수 있는 백업 및 복구 프로세스는 오류, 재해 또는 공격으로 인한 손실로부터 데이터를 보호하면서 복구 시간 및 지점 목표를 충족할 수 있도록 합니다.

  • 자동화된 백업 구성 확인: 자동화된 백업이 올바르게 구성되고 보존 기간이 비즈니스 요구 사항을 충족하는지 확인합니다. Azure SQL Database는 기본적으로 1~35일의 구성 가능한 보존 기간을 사용하여 자동화된 백업을 제공합니다. 자세한 내용은 자동화된 백업을 참조하세요.

  • 백업 스토리지 중복성 구성: 가용성 및 재해 복구 요구 사항에 따라 적절한 백업 스토리지 중복성 옵션을 선택합니다. 옵션에는 LRS(로컬 중복), ZRS(영역 중복), GRS(지역 중복) 및 GZRS(지역 영역 중복) 스토리지가 포함됩니다. 자세한 내용은 Backup 스토리지 중복성을 참조하세요.

  • 규정 준수를 위해 장기 보존 사용: 기본 보존 기간을 초과하는 규정 준수 요구 사항에 대해 LTR(장기 백업 보존)을 구성합니다. LTR을 사용하면 최대 10년 동안 전체 백업을 저장할 수 있습니다. 자세한 내용은 장기 보존을 참조하세요.

  • 백업 및 복원 절차 테스트: 백업 및 복원 프로시저를 정기적으로 테스트하여 올바르게 작동하고 RTO(복구 시간 목표)를 충족하는지 확인합니다. 복원된 데이터베이스가 완벽하게 작동하고 데이터 무결성이 유지되는지 확인합니다. 자세한 내용은 데이터베이스 복구를 참조하세요.

  • 백업 작업 모니터링: 백업 작업을 추적하여 성공적으로 완료되었는지 확인합니다. Azure Monitor를 사용하고 백업 실패에 대한 경고를 구성합니다. 자세한 내용은 백업 스토리지 사용 모니터링 및 문제 해결을 참조하세요.

  • 암호화를 사용하여 백업 보호: 원본 데이터베이스에서 TDE를 사용하도록 설정하면 백업 파일이 자동으로 암호화됩니다. TDE가 미사용 백업 데이터를 보호하도록 설정되어 있는지 확인합니다. 자세한 내용은 투명한 데이터 암호화를 참조하세요.

  • 재해 복구를 위한 지역 복원 구현: 지역 복원 기능을 사용하여 지역 중복 백업에서 Azure 지역으로 데이터베이스를 복원합니다. 이 기능은 지역 가동 중단 및 재해에 대한 보호를 제공합니다. 자세한 내용은 지역 복원을 참조하세요.

감사 및 위협 검색

포괄적인 모니터링 및 위협 탐지를 통해 보안 문제를 식별하고, 비정상적인 활동을 검색하고, Azure SQL Database에 대한 잠재적 위협에 신속하게 대응할 수 있습니다.

  • MICROSOFT Defender for SQL 사용: 데이터베이스에 액세스하거나 악용하려는 비정상적이고 잠재적으로 유해한 시도를 감지하도록 SQL용 Microsoft Defender를 구성합니다. 이 기능은 취약성 평가 및 위협 탐지를 비롯한 고급 위협 방지 기능을 제공합니다. 자세한 내용은 SQL용 Microsoft Defender를 참조하세요.

  • 클라우드용 Microsoft Defender와 통합: Azure 리소스 전체에서 중앙 집중식 보안 관리 및 위협 방지를 위해 클라우드용 Microsoft Defender를 사용합니다. 이 기능은 보안 권장 사항, 규정 준수 추적 및 통합 위협 방지를 제공합니다. 자세한 내용은 클라우드용 Microsoft Defender를 참조하세요.

  • 고급 위협 방지 경고 구성: SQL 삽입 공격, 비정상적인 데이터베이스 액세스 패턴 및 무차별 암호 대입 인증 시도와 같은 의심스러운 데이터베이스 활동에 대한 경고를 설정합니다. 알림 받는 사람을 구성하고 Azure Security Center와 통합합니다. 자세한 내용은 Advanced Threat Protection을 참조하세요.

  • 감사 사용: 데이터베이스 이벤트를 추적하고 Azure Storage, Log Analytics 작업 영역 또는 Event Hubs의 감사 로그에 기록하도록 감사를 구성합니다. 포괄적인 검사를 위해 서버 수준 및 데이터베이스 수준 이벤트를 모두 감사합니다. 자세한 내용은 Azure SQL Database 감사를 참조하세요.

  • 데이터베이스 모니터링에 Azure Monitor 사용: Azure Monitor와 통합하여 메트릭 및 로그를 수집하고 분석합니다. 보안 관련 이벤트에 대한 사용자 지정 대시보드 및 경고를 만듭니다. 자세한 내용은 Azure SQL Database 모니터링을 참조하세요.

  • 정기적으로 감사 로그 검토: 감사 로그를 정기적으로 검토하여 의심스러운 활동 또는 무단 액세스 시도를 식별하는 프로세스를 설정합니다. 권한 있는 계정 활동, 실패한 인증 시도 및 중요한 데이터에 대한 액세스에 집중합니다. 자세한 내용은 Azure SQL Database 감사를 참조하세요.

  • 진단 로그 사용: 장기 보존 및 분석을 위해 Azure Monitor 로그, Event Hubs 또는 Azure Storage로 로그를 스트리밍하도록 진단 설정을 구성합니다. SQLSecurityAuditEvents와 같은 보안 관련 로그 범주를 포함합니다. 자세한 내용은 진단 설정을 참조하세요.

보안 평가 및 위협 완화

Azure SQL Database 환경을 정기적으로 평가하면 보안 표준을 준수하면서 취약성을 식별하고 보안 상태를 개선하는 데 도움이 됩니다.

  • 취약성 평가 실행: Azure Portal에서 SQL 취약성 평가를 사용하여 잠재적인 데이터베이스 취약성을 검색하고 수정합니다. 정기적인 검사를 예약하고 수정 진행률을 추적합니다. 자세한 내용은 SQL 취약성 평가를 참조하세요.

  • 중요한 데이터 분류 및 레이블 지정: SQL 데이터 검색 및 분류를 사용하여 더 나은 보호 및 규정 준수를 위해 중요한 데이터를 식별하고 레이블을 지정합니다. 감사 및 동적 데이터 마스킹과 같은 다른 보안 기능은 분류 메타데이터를 사용할 수 있습니다. 자세한 내용은 데이터 검색 및 분류를 참조하세요.

  • 보안 권장 사항 검토: Azure Security Center 및 Microsoft Defender for SQL에서 보안 권장 사항을 정기적으로 검토합니다. 심각도 및 잠재적 영향에 따라 결과의 우선 순위를 지정하고 수정합니다. 자세한 내용은 SQL용 Microsoft Defender를 참조하세요.

  • 데이터베이스 수준 암호화 구현: TDE 외에도 매우 중요한 열에 Always Encrypted를 사용하고 적절한 키 관리 사례를 구현하는 것이 좋습니다. 중앙 집중식 키 관리에 Azure Key Vault를 사용합니다. 자세한 내용은 Always Encrypted를 참조하세요.

  • SQL 삽입으로부터 보호: SQL 삽입 공격을 방지하기 위해 애플리케이션에서 매개 변수가 있는 쿼리 및 저장 프로시저를 구현합니다. SQL 문에 사용자 입력을 연결하지 마세요. 자세한 내용은 SQL 인젝션을 참조하세요.

  • 정기적으로 액세스 권한 검토: 사용자에게 적절한 권한이 있는지 확인하기 위해 정기적인 액세스 검토를 수행합니다. 불필요한 권한을 제거하고 더 이상 액세스할 필요가 없는 사용자의 계정을 비활성화합니다. 자세한 내용은 데이터베이스 엔진 사용 권한 시작을 참조하세요.

  • 중요 데이터에 데이터베이스 원장 사용: 감사에 중요하거나 변조에 민감한 데이터가 포함된 데이터베이스의 경우 원장이 데이터 무결성에 대한 암호화 증명을 제공할 수 있도록 합니다. 자세한 내용은 원장을 참조하세요.

  • 심층 방어 보안 구현: 다양한 보안 범위를 대상으로 하는 여러 보안 기능을 사용하여 다양한 위협에 대한 포괄적인 보호를 제공합니다. 최대 보안을 위해 네트워크 보안, ID 관리, 데이터 보호 및 모니터링을 결합합니다. 자세한 내용은 보안 모범 사례를 참조하세요.

  • Microsoft Cloud Security Benchmark: Azure SQL Database용 Microsoft Cloud Security Benchmark를 기반으로 보안 제어를 구현합니다. 이 벤치마크는 업계 표준에 부합하는 포괄적인 보안 기준을 제공합니다. 자세한 내용은 Azure SQL Database에 대한 보안 기준을 참조하세요.