다음을 통해 공유


자습서: Azure SQL 데이터베이스의 데이터베이스 보안

적용 대상: Azure SQL 데이터베이스

이 자습서에서는 다음 방법에 대해 알아봅니다.

  • 서버 수준 및 데이터베이스 수준 방화벽 규칙 만들기
  • Microsoft Entra 관리자 구성
  • SQL 인증, Microsoft Entra 인증 및 보안 연결 문자열을 사용하여 사용자 액세스 관리
  • Microsoft Defender for SQL, 감사, 데이터 마스킹 및 암호화와 같은 보안 기능을 사용하도록 설정

참고 항목

Microsoft Entra ID는 이전에 Azure Active Directory(Azure AD)로 알려졌습니다.

Azure SQL 데이터베이스는 다음과 같은 방법으로 데이터를 보호합니다.

  • 방화벽 규칙을 사용하여 액세스 제한
  • ID를 요구하는 인증 메커니즘 사용
  • 역할 기반 멤버 자격 및 권한을 통한 권한 부여 사용
  • 보안 기능 사용

참고

Azure SQL Managed Instance는 Azure SQL Managed Instance연결 아키텍처에서 설명한 대로 네트워크 보안 규칙 및 프라이빗 엔드포인트를 사용하여 보호됩니다.

자세한 내용은 Azure SQL 데이터베이스 보안 개요기능 문서를 참조하세요.

이 무료 Learn 모듈에서는 Azure SQL 데이터베이스에서 데이터베이스를 보호하는 방법을 보여 줍니다.

필수 구성 요소

이 자습서를 완료하려면 다음 필수 조건이 충족되어야 합니다.

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure Portal에 로그인

자습서의 모든 단계를 수행하기 위해 Azure Portal에 로그인합니다.

방화벽 규칙 만들기

SQL Database의 데이터베이스는 Azure에서 방화벽으로 보호됩니다. 기본적으로 서버 및 데이터베이스에 대한 모든 연결은 거부됩니다. 자세히 알아보려면 서버 수준 및 데이터베이스 수준 방화벽 규칙 만들기를 참조하세요.

가장 안전한 구성을 위해 Azure 서비스 방문 허용끄기로 설정합니다. 그런 다음, Azure VM 또는 클라우드 서비스와 같이 연결해야 하는 리소스에 대해 예약된 IP(클래식 배포)를 만들고, 해당 IP 주소만 방화벽을 통해 액세스하도록 허용합니다. Resource Manager 배포 모델을 사용하는 경우 각 리소스에 대한 전용 공용 IP 주소가 필요합니다.

참고

SQL Database는 포트 1433을 통해 통신합니다. 회사 네트워크 내에서 연결하려는 경우 1433 포트를 통한 아웃바운드 트래픽이 네트워크 방화벽에서 허용되지 않을 수 있습니다. 이 경우 관리자가 1433 포트를 열어야 서버에 연결할 수 있습니다.

서버 수준 방화벽 규칙 설정

서버 수준 IP 방화벽 규칙은 동일한 서버 내의 모든 데이터베이스에 적용됩니다.

서버 수준 방화벽 규칙을 설정하려면,

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

    서버 이름을 강조 표시하는 논리적 SQL 데이터베이스에 대한 Azure Portal 페이지의 스크린샷.

    참고 항목

    이 자습서의 뒷부분에서 사용할 수 있도록 정규화된 서버 이름(예: yourserver.database.windows.net)을 복사합니다.

  2. 설정에서 네트워킹을 선택합니다. 퍼블릭 액세스 탭을 선택한 다음, 공용 네트워크 액세스에서 선택한 네트워크를 선택하여 방화벽 규칙 섹션을 표시합니다.

    서버 수준 IP 방화벽 규칙을 보여 주는 논리적 SQL Server에 대한 Azure Portal 네트워킹 페이지의 스크린샷.

  3. 도구 모음에서 클라이언트 IP 추가를 선택하여 현재 IP 주소를 새 IP 방화벽 규칙에 추가합니다. IP 방화벽 규칙은 단일 IP 주소 또는 IP 주소의 범위에 1433 포트를 열 수 있습니다.

  4. 확인을 선택하여 방화벽 설정을 저장합니다.

이제 지정된 IP 주소 또는 IP 주소 범위로 서버의 모든 데이터베이스에 연결할 수 있습니다.

데이터베이스 방화벽 규칙 설정

데이터베이스 수준 방화벽 규칙은 개별 데이터베이스에만 적용됩니다. 데이터베이스는 서버를 장애 조치(failover)하는 동안 이러한 규칙을 유지합니다. 데이터베이스 수준 방화벽 규칙은 서버 수준 방화벽 규칙을 구성한 후에 T-SQL(Transact-SQL) 문만 사용하여 구성할 수 있습니다.

데이터베이스 수준 방화벽 규칙을 설정하려면 다음을 수행합니다.

  1. SQL Server Management Studio와 같은 도구를 사용하여 데이터베이스에 연결합니다.

  2. 개체 탐색기에서 마우스 오른쪽 단추로 데이터베이스를 클릭하고 새 쿼리를 선택합니다.

  3. 쿼리 창에서 다음 명령문을 추가하고 IP 주소를 공용 IP 주소로 수정합니다.

    EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
    
  4. 도구 모음에서 실행을 선택하여 방화벽 규칙을 만듭니다.

참고

master 데이터베이스에 연결해야 하지만 SSMS에서 sp_set_firewall_rule 명령을 사용하여 서버 수준 방화벽 규칙을 만들 수도 있습니다.

Microsoft Entra 관리자 만들기

적절한 Microsoft Entra ID(이전의 Active Directory) 관리되는 도메인을 사용하고 있는지 확인합니다. 해당 도메인을 선택하려면 Azure Portal의 오른쪽 위 모서리를 사용합니다. 이 프로세스는 데이터베이스 또는 데이터 웨어하우스를 호스팅하는 논리 서버와 Microsoft Entra ID 모두에서 동일한 구독을 사용하는지 확인합니다.

디렉터리를 선택할 디렉터리 + 구독 필터 페이지를 보여 주는 Azure Portal 스크린샷.

Microsoft Entra 관리자를 설정하려면 다음을 수행합니다.

  1. Azure Portal SQL Server 페이지의 리소스 메뉴에서 Microsoft Entra ID를 선택한 다음 관리자 설정을 선택하고 Microsoft Entra ID 창을 엽니다.

    논리 서버에 대한 Azure Portal Microsoft Entra ID 페이지의 스크린샷.

    Important

    이 작업을 수행하려면 “전역 관리자”여야 합니다.

  2. Microsoft Entra ID 창에서 Microsoft Entra 사용자 또는 그룹을 검색하여 선택하고 선택을 선택합니다. Microsoft Entra 조직의 모든 구성원 및 그룹이 나열되며 회색으로 표시된 항목은 Microsoft Entra 관리자로 지원되지 않음입니다.

    Microsoft Entra 관리자를 추가하는 Azure Portal 페이지의 스크린샷.

    Important

    Azure RBAC(Azure 역할 기반 액세스 제어)는 포털에만 적용되며 SQL Server에 전파되지 않습니다.

  3. Microsoft Entra 관리자 페이지의 맨 위에서 저장을 선택합니다.

    관리자를 변경하는 프로세스에는 몇 분이 걸릴 수 있습니다. 새 관리자가 Microsoft Entra 관리자 필드에 표시됩니다.

참고 항목

Microsoft Entra 관리자를 설정할 때 새 관리자 이름(사용자 또는 그룹)은 master 데이터베이스에서 로그인 또는 사용자로 있을 수 없습니다. 이 사용자로 있는 경우 설정이 실패하고 변경 내용이 롤백되며, 해당 관리자 이름이 이미 있다고 나타냅니다. 로그인 또는 사용자는 Microsoft Entra ID에 속하지 않으므로 Microsoft Entra 인증을 사용하여 이 사용자에 연결하려는 작업은 모두 실패합니다.

Microsoft Entra ID 구성에 대한 자세한 내용은 다음을 참조하세요.

데이터베이스 액세스 관리

데이터베이스에 사용자를 추가하거나 보안 연결 문자열을 사용하여 사용자 액세스를 허용하여 데이터베이스 액세스를 관리합니다. 연결 문자열은 외부 애플리케이션에 유용합니다. 자세히 알아보려면 로그인 및 사용자 계정 관리Microsoft Entra 인증을 참조하세요.

사용자를 추가하려면 다음 데이터베이스 인증 유형을 선택합니다.

  • SQL 인증 - 로그인에서 사용자 이름과 암호를 사용하며, 이는 서버 내의 특정 데이터베이스 컨텍스트에서만 유효합니다.

  • Microsoft Entra ID에서 관리하는 ID를 사용하는 Microsoft Entra 인증

SQL 인증

SQL 인증을 사용하여 사용자를 추가하려면,

  1. SQL Server Management Studio와 같은 도구를 사용하여 데이터베이스에 연결합니다.

  2. 개체 탐색기에서 마우스 오른쪽 단추로 데이터베이스를 클릭하고 새 쿼리를 선택합니다.

  3. 쿼리 창에서 다음 명령을 입력합니다.

    CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    
  4. 도구 모음에서 실행을 선택하여 사용자를 만듭니다.

  5. 기본적으로 사용자는 데이터베이스에 연결할 수 있지만 데이터를 읽거나 쓰는 권한은 없습니다. 이러한 권한을 부여하려면 새 쿼리 창에서 다음 명령을 실행합니다.

    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

참고

새 사용자 만들기와 같은 관리자 작업을 실행할 필요가 없는 경우 데이터베이스 수준에서 관리자가 아닌 계정을 만듭니다.

Microsoft Entra 인증

Azure SQL 데이터베이스는 Microsoft Entra 서버 보안 주체(로그인)를 지원하지 않으므로 Microsoft Entra 계정으로 만든 데이터베이스 사용자는 포함된 데이터베이스 사용자로 만들어집니다. 포함된 데이터베이스 사용자는 같은 이름의 로그인이 있더라도 master 데이터베이스의 로그인에 연결되지 않습니다. Microsoft Entra ID는 개별 사용자 또는 그룹일 수 있습니다. 자세한 내용은 이식 가능한 데이터베이스를 만드는 포함된 데이터베이스 사용자를 참조하고, Microsoft Entra ID를 사용하여 인증하는 방법은 Microsoft Entra 자습서를 검토하세요.

참고 항목

데이터베이스 사용자(관리자 예외)는 Azure Portal을 사용하여 만들 수 없습니다. Microsoft Entra 역할은 SQL 서버, 데이터베이스 또는 데이터 웨어하우스에 전파되지 않습니다. 이러한 역할은 Azure 리소스를 관리하는 데만 사용되며 데이터베이스 권한에는 적용되지 않습니다.

예를 들어 SQL Server 기여자 역할은 데이터 웨어하우스 또는 데이터 웨어하우스에 연결할 수 있는 액세스 권한을 부여하지 않습니다. 이 권한은 데이터베이스 내에서 T-SQL 문을 사용하여 부여해야 합니다.

중요

콜론(:) 또는 앰퍼샌드(&)와 같은 특수 문자는 CREATE LOGINCREATE USER T-SQL 문에서 사용자 이름으로 지원되지 않습니다.

Microsoft Entra 인증으로 사용자를 추가하려면 다음을 수행합니다.

  1. ALTER ANY USER 이상의 권한이 있는 Microsoft Entra 계정을 사용하여 Azure의 서버에 연결합니다.

  2. 개체 탐색기에서 마우스 오른쪽 단추로 데이터베이스를 클릭하고 새 쿼리를 선택합니다.

  3. 쿼리 창에서 다음 명령을 입력하고, <Azure_AD_principal_name>을 Microsoft Entra 사용자의 보안 주체 이름 또는 Microsoft Entra 그룹의 표시 이름으로 수정합니다.

    CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
    

참고 항목

Microsoft Entra 사용자가 그룹에 대해 E (EXTERNAL_USER)X (EXTERNAL_GROUPS) 형식의 메타데이터로 표시됩니다. 자세한 내용은 sys.database_principals를 참조하세요.

보안 연결 문자열

클라이언트 애플리케이션과 SQL Database 간에 암호화된 보안 연결을 보장하려면 연결 문자열을 다음과 같이 구성해야 합니다.

  • 암호화된 연결 요청
  • 서버 인증서를 신뢰하지 않음

연결은 TLS(전송 계층 보안)를 사용하여 설정되고 중간자(man-in-the-middle) 공격의 위험을 줄입니다. 연결 문자열은 데이터베이스별로 사용할 수 있으며, ADO.NET, JDBC, ODBC 및 PHP와 같은 클라이언트 드라이버를 지원하도록 미리 구성되어 있습니다. TLS 및 연결에 대한 정보는 TLS 고려 사항을 참조하세요.

보안 연결 문자열을 복사하려면,

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

  2. 개요 페이지에서 데이터베이스 연결 문자열 표시를 선택합니다.

  3. 드라이버 탭을 선택하고 전체 연결 문자열을 복사합니다.

    연결 문자열 페이지를 보여 주는 Azure Portal 스크린샷. ADO.NET 탭이 선택되고 ADO.NET(SQL 인증) 연결 문자열이 표시됩니다.

보안 기능 사용

Azure SQL 데이터베이스는 Azure Portal을 사용하여 액세스하는 보안 기능을 제공합니다. 이러한 기능은 데이터베이스에서만 사용할 수 있는 데이터 마스킹을 제외하고는 데이터베이스와 서버 모두에서 사용할 수 있습니다. 자세한 내용은 Microsoft Defender for SQL, 감사, 동적 데이터 마스킹투명한 데이터 암호화를 참조하세요.

Microsoft Defender for SQL

Microsoft Defender for SQL 기능은 발생할 수 있는 잠재적 위협을 탐지하고 비정상적인 활동에 대한 보안 경고를 제공합니다. 사용자는 감사 기능을 사용하여 이러한 의심스러운 이벤트를 검색하고, 해당 이벤트가 데이터베이스의 데이터를 액세스, 위반 또는 악용했는지 여부를 확인할 수 있습니다. 또한 취약성 평가, 데이터 검색 및 분류 도구가 포함된 보안 개요도 사용자에게 제공됩니다.

참고

위협의 한 가지 예로, 공격자가 애플리케이션 입력에 악의적인 SQL을 삽입하는 프로세스인 SQL 삽입이 있습니다. 이 경우 애플리케이션에서 자체적으로 인식하지 못한 채 악성 SQL을 실행하여 공격자가 데이터베이스의 데이터를 위반하거나 수정할 수 있습니다.

Microsoft Defender for SQL을 사용하도록 설정하려면 다음을 수행합니다.

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

  2. 개요 페이지에서 서버 이름 링크를 선택합니다. 서버 페이지가 열립니다.

  3. SQL Server 페이지에서 보안 섹션을 찾아서 Defender for Cloud를 선택합니다.

    1. Microsoft Defender for SQL 아래에서 켜기를 선택하여 이 기능을 사용하도록 설정합니다. 취약성 평가 결과를 저장할 스토리지 계정을 선택합니다. 그런 다음 저장을 선택합니다.

      위협 탐지 설정에 대한 Azure Portal 탐색 창의 스크린샷.

      또한 보안 경고, 스토리지 세부 정보 및 위협 탐지 유형을 받을 수 있도록 이메일을 구성할 수도 있습니다.

  4. 데이터베이스의 SQL 데이터베이스 페이지로 돌아가서 보안 섹션 아래에서 Defender for Cloud를 선택합니다. 여기서는 데이터베이스에 사용할 수 있는 다양한 보안 표시기를 찾을 수 있습니다.

    데이터 검색 및 분류, 취약성 평가, 위협 탐지에 대한 원형 차트를 보여 주는 Azure Portal 위협 상태 페이지의 스크린샷.

비정상적인 활동이 탐지되면 이벤트에 대한 정보가 포함된 이메일을 받게 됩니다. 여기에는 활동, 데이터베이스, 서버, 이벤트 시간, 가능한 원인 및 잠재적 위협을 조사하고 완화하기 위해 추천되는 조치가 포함됩니다. 이러한 이메일을 받은 경우 Azure Portal을 시작하고 이벤트 시간에 대한 관련 감사 레코드를 표시하려면 Azure SQL 감사 로그 링크를 선택합니다.

잠재적인 Sql 삽입 위협 탐지를 나타내는 Azure의 샘플 메일 스크린샷. Azure SQL DB 감사 로그에 대한 이메일 본문의 링크가 강조 표시됩니다.

감사

감사 기능은 데이터베이스 이벤트를 추적하고 Azure Storage, Azure Monitor 로그 또는 Event Hub 중 감사 로그에 이벤트를 기록합니다. 감사는 규정 준수를 유지 관리하고, 데이터베이스 활동을 살펴보고, 잠재적인 보안 위반을 나타낼 수 있는 불일치 및 비정상을 파악하는 데 도움이 됩니다.

감사를 사용하도록 설정하려면,

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

  2. 보안 섹션에서 감사를 선택합니다.

  3. 감사 설정 아래에서 다음 값을 설정합니다.

    1. 감사켜기로 설정합니다.

    2. 감사 로그 대상을 다음 중 하나로 선택합니다.

      • 스토리지 - 이벤트 로그가 저장되고 .xel 파일로 다운로드될 수 있는 Azure 스토리지 계정입니다.

        감사 보고서 템플릿을 최대한 활용하려면 감사되는 모든 데이터베이스에 대해 동일한 스토리지 계정을 사용하세요.

      • Log Analytics - 쿼리 또는 추가 분석을 위해 이벤트를 자동으로 저장합니다.

        참고

        분석, 사용자 지정 경고 규칙, Excel 또는 Power BI 내보내기와 같은 고급 기능을 지원하려면 Log Analytics 작업 영역이 필요합니다. 작업 영역이 없으면 쿼리 편집기만 사용할 수 있습니다.

      • Event Hub - 다른 애플리케이션에서 사용할 수 있도록 이벤트를 라우팅할 수 있습니다.

    3. 저장을 선택합니다.

      Azure Portal 감사 설정 페이지의 스크린샷. 저장 버튼이 강조 표시됩니다. 감사 로그 대상 필드가 강조 표시됩니다.

  4. 이제 감사 로그 보기를 선택하여 데이터베이스 이벤트 데이터를 볼 수 있습니다.

    SQL 데이터베이스에 대한 감사 레코드를 보여 주는 Azure Portal 페이지의 스크린샷.

Important

PowerShell 또는 REST API를 사용하여 감사 이벤트를 추가로 사용자 지정하는 방법은 SQL Database 감사를 참조하세요.

동적 데이터 마스킹

데이터 마스킹 기능은 데이터베이스에서 중요한 데이터를 자동으로 숨깁니다.

데이터 마스킹을 사용하도록 설정하려면,

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

  2. 보안 섹션에서 동적 데이터 마스킹을 선택합니다.

  3. 동적 데이터 마스킹 설정 아래에서 마스크 추가를 선택하여 마스킹 규칙을 추가합니다. Azure는 사용할 수 있는 데이터베이스 스키마, 테이블 및 열을 자동으로 채웁니다.

    동적 데이터 마스크 필드를 저장하거나 추가하기 위한 Azure Portal 페이지의 스크린샷. 마스크에 권장되는 필드는 스키마, 테이블 및 테이블의 열을 표시합니다.

  4. 저장을 선택합니다. 선택한 정보가 이제 개인 정보 보호를 위해 마스킹되었습니다.

    간단한 INSERT 및 SELECT 문을 보여 주는 SSMS(SQL Server Management Studio) 스크린샷. SELECT 문은 LastName 열에 마스킹된 데이터를 표시합니다.

투명한 데이터 암호화

암호화 기능은 저장 데이터를 자동으로 암호화하며, 암호화된 데이터베이스에 액세스하는 애플리케이션을 변경할 필요가 없습니다. 새 데이터베이스의 경우 기본적으로 암호화가 설정됩니다. 또한 SSMS 및 Always Encrypted(상시 암호화) 기능을 사용하여 데이터를 암호화할 수도 있습니다.

암호화를 사용하도록 설정하거나 확인하려면,

  1. Azure Portal의 왼쪽 메뉴에서 SQL 데이터베이스를 선택하고 SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다.

  2. 보안 섹션에서 투명 데이터 암호화를 선택합니다.

  3. 필요한 경우 데이터 암호화켜기로 설정합니다. 저장을 선택합니다.

    투명한 데이터 암호화를 사용하도록 설정하는 Azure Portal 페이지의 스크린샷.

참고 항목

암호화 상태를 보려면 SSMS를 사용하여 데이터베이스에 연결하고, sys.dm_database_암호화_keys 보기의 encryption_state 열을 쿼리합니다. 3 상태는 데이터베이스가 암호화되었음을 나타냅니다.

참고 항목

테이블 이름, 개체 이름 및 인덱스 이름과 같이 고객 콘텐츠로 간주되는 일부 항목은 Microsoft의 지원 및 문제 해결을 위해 로그 파일로 전송될 수 있습니다.

.NET 애플리케이션 개발을 시작할 준비가 되셨나요? 다음 평가판 Learn 모듈을 사용하면 간단한 데이터베이스 생성을 포함하여 Azure SQL 데이터베이스를 쿼리하는 ASP.NET 애플리케이션을 개발하고 구성하는 방법을 배울 수 있습니다.

다음 단계

지리적 배포를 구현하는 방법에 대해 알아보려면 다음 자습서로 계속 진행하세요.