다음을 통해 공유


Azure SQL Database 및 SQL Managed Instance 보안 기능 개요

적용 대상:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

이 문서에서는 Azure SQL Database, Azure SQLManaged Instance 및 Azure Synapse Analytics를 사용하는 애플리케이션의 데이터 계층을 보호하는 기본 사항을 간략하게 설명합니다. 이 문서에 설명된 보안 전략은 다음 다이어그램에 표시된 대로 계층화된 심층 방어 접근 방식을 따르고 외부에서 바깥으로 이동합니다.

계층화된 심층 방어 다이어그램 고객 데이터는 네트워크 보안, 액세스 관리, 위협 및 정보 보호 계층으로 둘러싸여 있습니다.

네트워크 보안

Azure SQL Database, Azure SQL Managed Instance 및 Azure Synapse Analytics는 클라우드 및 엔터프라이즈 애플리케이션을 위한 관계형 데이터베이스 서비스를 제공합니다. 고객 데이터를 보호하기 위해 방화벽은 IP 주소 또는 Azure Virtual Network 트래픽 원본에 따라 액세스 권한을 명시적으로 부여할 때까지 서버에 대한 네트워크 액세스를 방지합니다.

IP 방화벽 규칙

IP 방화벽 규칙은 각 요청이 시작된 IP 주소를 기준으로 하여 데이터베이스 액세스 권한을 부여합니다. 자세한 내용은 Azure SQL Database 및 Azure Synapse Analytics 방화벽 규칙 개요를 참조하세요.

Virtual Network 방화벽 규칙

가상 네트워크 서비스 엔드포인트는 Azure 백본을 통해 가상 네트워크 연결을 확장하며, 트래픽이 생성되는 가상 네트워크 서브넷을 Azure SQL Database가 식별할 수 있도록 합니다. 트래픽이 Azure SQL Database로 전송되도록 하려면 SQL 서비스 태그를 사용해 네트워크 보안 그룹을 통한 아웃바운드 트래픽을 허용합니다.

  • Azure SQL Database는 가상 네트워크 규칙을 통해 Virtual Network 내의 선택한 서브넷에서 전송된 통신만 수락할 수 있습니다.
  • 방화벽 규칙을 사용하여 액세스를 제어하는 것은 SQL Managed Instance에 적용되지 않습니다. 필요한 네트워킹 구성에 대한 자세한 내용은 관리되는 인스턴스에 연결을 참조하세요.

참고

방화벽 규칙을 사용하여 액세스를 제어하는 것은 SQL Managed Instance에 적용되지 않습니다. 필요한 네트워킹 구성에 대한 자세한 내용은 관리되는 인스턴스에 연결을 참조하세요.

네트워크 보안 경계

Azure 네트워크 보안 경계는 가상 네트워크 외부에서 배포하는 PaaS(Platform-as-a-Service) 리소스 주위에 논리적 네트워크 경계를 만듭니다.

  • Azure 네트워크 보안 경계를 사용하면 Azure SQL Database에 대한 공용 네트워크 액세스를 제어할 수 있습니다.
  • Azure 네트워크 보안 경계를 사용하여 액세스를 제어하는 것은 Azure SQL Managed Instance에 적용되지 않습니다.

중요

네트워크 보안 경계가 있는 Azure SQL Database는 현재 미리 보기로 제공됩니다. 미리 보기는 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

인증

인증은 사용자의 신원을 증명하는 과정입니다. Azure SQL Database 및 SQL Managed Instance는 Microsoft Entra ID(이전의 Azure Active Directory) 및 SQL 인증을 사용하여 인증을 지원합니다. SQL Managed Instance는 Microsoft Entra 보안 주체에 대해 Windows 인증을 추가로 지원합니다.

  • Microsoft Entra 인증:

    Microsoft Entra 인증은 Microsoft Entra ID의 ID를 사용하여 Azure SQL Database, Azure SQL Managed InstanceAzure Synapse Analytics 에 연결하는 메커니즘입니다. 관리자는 Microsoft Entra 인증을 통해 데이터베이스 사용자의 ID와 권한, 기타 Azure 서비스를 중앙에서 관리할 수 있습니다. 이 기능은 비밀 및 암호 사용을 제거하는 데 도움이 될 수 있습니다.

    SQL Database에서 Microsoft Entra 인증을 사용하려면 Microsoft Entra 관리자라는 서버 관리자를 만듭니다. 자세한 내용은 Microsoft Entra 인증을 사용하여 SQL Database에 연결을 참조하세요. Microsoft Entra 인증에서는 관리 계정과 페더레이션된 계정이 모두 지원됩니다. 페더레이션된 계정은 Microsoft Entra ID와 페더레이션된 고객 도메인에 대해 Windows 사용자 및 그룹을 지원합니다.

    Microsoft Entra는 다단계 인증, Windows 통합 인증조건부 액세스를 비롯한 여러 가지 인증 옵션을 지원합니다.

  • Microsoft Entra 보안 주체에 대한 Windows 인증:

    Microsoft Entra 보안 주체에 대한 Kerberos 인증을 사용하면 Azure SQL Managed Instance에 대한 Windows 인증을 사용할 수 있습니다. Managed Instance용 Windows 인증은 고객이 기존 서비스를 클라우드로 이동하면서 원활한 사용자 환경을 유지하고 인프라 최신화를 위한 기반을 제공할 수 있도록 지원합니다.

    Microsoft Entra 보안 주체에 대해 Windows 인증을 사용하도록 설정하려면 Microsoft Entra 테넌트를 독립적인 Kerberos 영역으로 전환하고 고객 도메인에서 들어오는 트러스트를 만듭니다. Microsoft Entra ID 및 Kerberos를 사용하여 Azure SQL Managed Instance에 대한 Windows 인증을 구현하는 방법을 알아봅니다.

  • SQL 인증:

    SQL 인증은 사용자 이름과 암호를 사용하여 Azure SQL Database 또는 Azure SQL Managed Instance에 연결할 때 사용자의 인증을 나타냅니다. 서버를 만들 때 사용자 이름 및 암호를 사용하여 서버 관리자 로그인을 지정해야 합니다. 서버 관리자는 이 자격 증명을 사용하여 해당 서버 또는 인스턴스의 모든 데이터베이스에 데이터베이스 소유자로 인증할 수 있습니다. 그런 다음 서버 관리자는 다른 SQL 로그인 및 사용자를 만들 수 있으며, 이를 통해 사용자는 사용자 이름과 암호를 사용하여 연결할 수 있습니다.

권한 부여 및 액세스 관리

권한 부여는 서버 및 데이터베이스 관리 및 데이터베이스 내의 데이터, 리소스 및 명령에 대한 액세스를 제어하는 것을 의미합니다. Azure SQL Database 또는 Azure SQL Managed Instance의 데이터베이스 내에서 사용자에게 권한을 할당합니다. 포털 사용자 계정의 역할 할당은 Azure 내에서 데이터베이스 및 서버 관리를 제어합니다. 자세한 내용은 Azure Portal의 Azure 역할 기반 액세스 제어를 참조하세요.

데이터베이스 역할에 사용자 계정을 추가하고 해당 역할에 데이터베이스 수준 권한을 할당하여 사용 권한을 관리합니다. 또는 개별 사용자에게 특정 개체 수준 권한을 부여합니다 . 자세한 내용은 로그인 및 사용자를 참조하세요.

또한 Azure SQL Managed Instance는 인스턴스에 대한 권한을 관리하는 서버 수준 역할 (고정 또는 사용자 지정)을 제공합니다. 서버 수준 역할에는 서버 전체 권한 범위가 있습니다. 서버 수준 보안 주체를 서버 수준 역할에 추가할 수 있습니다.

필요한 경우 사용자 지정 역할을 만드는 것이 가장 좋습니다. 작업을 수행하는 데 필요한 최소한의 권한을 가진 역할에 사용자를 추가합니다. 사용자에게 직접 권한을 할당하지 마십시오. 서버 관리자 계정은 광범위한 권한을 가지며 관리 업무를 수행하는 일부 사용자에게만 부여되어야 하는 기본 제공 db_owner 역할의 구성원입니다. 사용자가 수행할 수 있는 작업의 범위를 추가로 제한하려면 EXECUTE AS 를 사용하여 호출된 모듈의 실행 컨텍스트를 지정합니다. 이러한 모범 사례를 따르는 것도 의무 분리를 향한 기본적인 단계입니다.

행 수준 보안

Row-Level 보안을 사용하면 쿼리를 실행하는 사용자의 특성(예: 그룹 멤버 자격 또는 실행 컨텍스트)에 따라 데이터베이스 테이블의 행에 대한 액세스를 제어할 수 있습니다. Row-Level Security를 사용하여 사용자 지정 레이블 기반 보안 개념을 구현합니다. 자세한 내용은 행 수준 보안을 참조하세요.

Row-Level 보안이 클라이언트 앱을 통해 사용자가 액세스하지 못하도록 SQL 데이터베이스의 개별 행을 보호하는 다이어그램

위협 보호

Azure SQL Database 및 SQL Managed Instance는 감사 및 위협 탐지 기능을 제공하여 고객 데이터를 보호합니다.

Azure Monitor 로그 및 Event Hubs의 SQL 감사

SQL Database 및 SQL Managed Instance 감사는 데이터베이스 활동을 추적하며 고객이 소유한 Azure Storage 계정의 감사 로그에 데이터베이스 이벤트를 기록하여 보안 표준 규정 준수 상태를 유지할 수 있도록 지원합니다. 감사를 사용하면 진행 중인 데이터베이스 활동을 모니터링하고 기록 활동을 분석 및 조사하여 잠재적 위협 또는 의심되는 남용 및 보안 위반을 식별할 수 있습니다. 자세한 내용은 SQL Database 감사 시작을 참조하세요.

고급 위협 방어

Advanced Threat Protection은 로그를 분석하여 비정상적인 동작과 잠재적으로 유해한 데이터베이스 액세스 또는 악용 시도를 감지합니다. SQL 삽입, 잠재적인 데이터 침투 및 무차별 암호 대입 공격과 같은 의심스러운 활동에 대한 경고 또는 권한 상승 및 위반된 자격 증명 사용을 포착하기 위한 액세스 패턴의 변칙에 대한 경고를 만듭니다. 의심스러운 활동에 대한 세부 정보가 제공되는 클라우드용 Microsoft Defender의 경고와 위협을 완화하기 위한 조치와 함께 제공되는 추가 조사를 위한 권장 사항을 볼 수 있습니다. 추가 요금으로 서버당 Advanced Threat Protection을 사용하도록 설정할 수 있습니다. 자세한 내용은 SQL Database Advanced Threat Protection을 참조하세요.

외부 공격자 및 악의적인 내부자로부터 웹앱에 대한 SQL 데이터베이스에 대한 SQL 위협 감지 모니터링 액세스를 보여 주는 다이어그램

정보 보호 및 암호화

전송 계층 보안(전송 중 암호화)

SQL Database, SQL Managed Instance 및 Azure Synapse Analytics는 TLS(전송 계층 보안)를 사용하여 동작 중인 데이터를 암호화하여 고객 데이터를 보호합니다. 이러한 서비스는 항상 TLS 암호화 연결을 적용하여 클라이언트와 서버 간에 전송 중인 모든 데이터가 암호화되도록 합니다.

특히 SQL Database, SQL Managed Instance 및 Azure Synapse Analytics는 구성 플래그 ForceEncryptionYes.로 설정합니다. 클라이언트와 드라이버는 이러한 서비스에 연결하려면 암호화된 연결을 지원해야 합니다. 연결할 수 있는 TDS 프로토콜의 가장 낮은 버전은 TDS 7.1입니다.

TDS 8.0 지원 SQL 드라이버가 있는 경우 모범 사례로 엄격한 연결 암호화를 사용합니다.

드라이버가 TDS 8.0을 지원하지 않는 경우 필수 암호화를 사용하고 서버 인증서를 신뢰하지 않습니다. 예를 들어 ADO.NET 드라이버를 사용하는 경우 연결 문자열을 사용하여 Encrypt=TrueTrustServerCertificate=False 이 작업을 수행합니다. Azure Portal에서 가져오는 연결 문자열은 이미 이러한 값으로 구성되었습니다.

프로덕션 환경에서 매개 변수 TrustServerCertificate 를 설정하지 True 마세요. TrustServerCertificate=True 는 너무 관대하며 중간에서 맨 인 더 미들 공격으로부터 보호하지 않습니다. 대신 클라이언트가 서버 인증서에 다른 도메인 이름이 필요한 경우 매개 변수를 HostNameInCertificate 사용하여 유효성 검사에 올바른 도메인 이름을 제공합니다.

예를 들어 ADO.NET 드라이버를 사용하여 사용자 지정 도메인 이름 contoso-instance.123456.database.windows.net을 통해 관리형 인스턴스 contoso-instance.contoso.com 에 연결하는 경우, 연결 매개 변수 Encrypt=True를 설정하고 별도로 HostNameInCertificate=contoso-instance.123456.database.windows.net를 설정합니다. 이 구성을 사용하면 드라이버가 예상된 VNet 로컬 엔드포인트 도메인 이름에 대해 서버 인증서의 유효성을 검사할 수 있습니다.

중요

일부 타사 드라이버는 기본적으로 TLS를 사용하지 않거나 이전 버전의 TLS(1.2 이전 버전)를 사용하여 작동할 수 있습니다. 이 경우 서버가 데이터베이스에 연결할 수 있도록 허용합니다. 그러나 특히 중요한 데이터를 저장하는 경우 이러한 드라이버 및 애플리케이션이 SQL Database에 연결할 수 있도록 허용하는 보안 위험을 평가합니다.

TLS 및 연결에 대한 자세한 내용은 TLS 고려 사항을 참조하세요.

서비스 관리형 키를 사용한 투명한 데이터 암호화(미사용 중 암호화)

Azure SQL Database, SQL Managed Instance 및 Azure Synapse Analytics용 TDE(투명한 데이터 암호화)는 보안 계층을 추가하여 원시 파일이나 백업에 대해 무단/오프라인으로 액세스할 수 없도록 미사용 데이터를 보호합니다. 무단/오프라인 액세스의 일반적인 시나리오에는 데이터 센터 도난, 하드웨어 또는 미디어(예: 디스크 드라이브 및 백업 테이프)의 보안되지 않은 폐기 등이 해당됩니다. TDE는 애플리케이션 개발자가 기존 애플리케이션을 변경할 필요가 없는 AES 암호화 알고리즘을 사용하여 전체 데이터베이스를 암호화합니다.

Azure에서는 새로 만드는 모든 데이터베이스가 기본적으로 암호화되며, 기본 제공 서버 인증서를 통해 데이터베이스 암호화 키가 보호됩니다. 이 서비스는 인증서 유지 관리 및 회전을 관리하며 사용자의 입력이 필요하지 않습니다. 암호화 키를 제어하려는 경우 Azure Key Vault에서 키를 관리할 수 있습니다.

고객 관리형 키를 사용한 투명한 데이터 암호화(미사용 암호화)

암호화 키에 대한 더 큰 제어가 필요한 경우 TDE( 투명한 데이터 암호화 )는 CMK(고객 관리형 키)를 지원합니다. 이 CMK는 논리 서버와 연결되며 해당 서버 내의 모든 데이터베이스에 대한 데이터베이스 암호화 키를 래핑합니다. 또는 개별 데이터베이스 수준에서 CMK를 구성할 수 있습니다. CMK를 관리하여 규정 준수 또는 엄격한 보안 정책에 필요한 키 회전, 해지 및 감사를 제어할 수 있습니다.

보안 인클레이브(사용 중 암호화)를 사용한 Always Encrypted 및 Always Encrypted

Always Encrypted 기능의 기본 사항을 보여 주는 다이어그램 잠금이 있는 SQL 데이터베이스는 키가 포함된 앱에서만 액세스합니다.

보안 Enclave를 사용하는 Always EncryptedAlways Encrypted는 특정 데이터베이스 열에 저장된 중요한 데이터를 액세스로부터 보호하도록 설계된 기능입니다(예: 신용 카드 번호, 국가/지역 식별 번호 또는 알아야 할 데이터). 이 보호에는 관리 작업을 수행하기 위해 데이터베이스에 액세스할 권한이 있지만 암호화된 열의 특정 데이터에 액세스할 필요가 없는 데이터베이스 관리자 또는 기타 권한 있는 사용자가 포함됩니다. 데이터는 항상 암호화되므로 암호화 키 액세스 권한이 있는 클라이언트 애플리케이션에서 처리해야 하는 경우에만 암호화된 데이터의 암호가 해독됩니다. 암호화 키는 SQL Database 또는 SQL Managed Instance에 표시되지 않으며 Windows 인증서 저장소 또는 Azure Key Vault에 저장할 수 있습니다.

동적 데이터 마스킹

동적 데이터 마스킹을 보여 주는 다이어그램 비즈니스 앱은 데이터를 비즈니스 앱으로 다시 보내기 전에 데이터를 마스킹하는 SQL 데이터베이스로 데이터를 보냅니다.

동적 데이터 마스킹에서는 권한이 없는 사용자로 마스킹하여 중요한 데이터 노출을 제한합니다. 동적 데이터 마스킹은 Azure SQL Database 및 SQL Managed Instance에서 잠재적으로 중요한 데이터를 자동으로 검색하여 애플리케이션 계층에 미치는 영향을 최소화하면서 해당 필드를 마스킹할 수 있는 실행 가능한 권장 사항을 제공합니다. 지정된 데이터베이스 필드에 대한 쿼리의 결과 집합에서 중요한 데이터를 난독 처리하지만 데이터베이스의 데이터는 변경되지 않습니다. 자세한 내용은 SQL Database 및 SQL Managed Instance 동적 데이터 마스킹 시작을 참조하세요.

Ledger

Azure SQL Database 및 SQL Managed Instance의 원장은 데이터 무결성에 대한 암호학적 증명을 제공하는 기능입니다. 원장을 사용하면 데이터의 변조 방지 기능을 확보할 수 있습니다. 감사자 또는 다른 비즈니스 당사자와 같은 다른 당사자에게 데이터가 변조되지 않았음을 암호화된 방식으로 증명할 수 있습니다.

Ledger는 변조 증거 기술을 사용하여 변경할 수 없는 원장 내에서 데이터베이스 변경 내용을 기록하여 무단 수정 여부를 감지할 수 있도록 합니다. 이 기능은 여러 당사자 간의 규정 준수, 감사 가능성 및 신뢰가 필요한 시나리오에 특히 유용합니다. 원장을 사용하도록 설정하면 데이터의 무결성을 확인하여 사기 또는 데이터 조작의 위험을 줄일 수 있습니다.

보안 관리

취약점 평가

취약성 평가는 전반적인 데이터베이스 보안을 사전에 개선하기 위해 잠재적인 데이터베이스 취약성을 검색, 추적 및 수정할 수 있는 손쉽게 구성 가능한 서비스입니다. VA(취약성 평가)는 고급 SQL 보안 기능을 위한 통합 패키지인 Microsoft Defender for SQL 제품의 일부입니다. 중앙 Microsoft Defender for SQL 포털을 통해 취약성 평가에 액세스하고 관리할 수 있습니다.

데이터 검색 및 분류

데이터 검색 및 분류는 데이터베이스의 중요한 데이터를 검색, 분류 및 레이블 지정하기 위해 Azure SQL Database 및 SQL Managed Instance에 기본 제공되는 기본 기능을 제공합니다. 가장 중요한 데이터(비즈니스, 재무, 의료, 개인 데이터 등)를 검색하고 분류하는 것은 조직 정보 보호 키에 중요한 역할을 합니다. 다음을 위한 인프라 역할을 합니다.

  • 중요한 데이터에 대한 비정상적인 액세스를 모니터링 및 감사하고 경고하는 것과 같은 다양한 보안 시나리오.
  • 매우 중요한 데이터가 들어 있는 데이터베이스에 대한 액세스 제어 및 보안 강화.
  • 데이터 프라이버시 표준 및 규정 준수 요구 사항을 충족하도록 지원

자세한 내용은 데이터 검색 및 분류 시작을 참조하세요.

규정 준수

애플리케이션이 다양한 보안 요구 사항을 충족하는 데 도움이 되는 기능 외에도 Azure SQL Database는 정기적인 감사에도 참여합니다. 다양한 규정 준수 표준에 대해 인증되었습니다. 자세한 내용은 Microsoft Azure 보안 센터를 참조하세요. 여기서 최신 SQL Database 규정 준수 인증서 목록을 찾을 수 있습니다.