연습 - 네트워크 보안

완료됨

이 연습에서는 Azure Portal을 활용하여 방화벽 규칙을 검토하고 관리합니다. 또한 퍼블릭 엔드포인트를 사용하는 동안 가장 안전한 연결을 구성하게 됩니다.

아직 수행하지 않은 경우 다음 단추를 사용하여 Azure Portal을 엽니다.

네트워크 보안

Azure SQL Database에 데이터베이스를 배포할 때 실행한 스크립트는 이 서버에 대한 Azure 서비스 및 리소스 액세스 허용을 활성화하여 모든 지역의 모든 리소스 또는 리소스에 대한 구독 액세스를 허용합니다. 퍼블릭 엔드포인트를 가장 안전하게 구성하기 위해서는 설정을 선택 취소하는 것이 중요합니다. 이 서버에 대한 Azure 서비스 및 리소스 액세스 허용 설정을 선택 취소하면 추가한 연결과 네트워크 이외의 모든 연결과 네트워크가 차단됩니다.

이 연습에서는 방화벽 규칙을 보고 편집하는 방법을 알아봅니다. 방화벽을 설정하는 작업은 복잡할 수 있습니다. 이는 모든 연결에 대해 IP 주소를 지정해야 하고 이때 경우에 따라 동적 IP 주소가 사용될 수 있기 때문입니다. 이 연습의 끝부분에 있는 데모 동영상에 네트워크를 보호하는 대체 방법이 나와 있습니다.

Azure Portal에서 방화벽 규칙 관리

  1. Azure Portal 리소스 메뉴에서 SQL 데이터베이스를 선택한 다음 Azure SQL Database(AdventureWorks)를 선택합니다.

  2. SQL 데이터베이스의 명령 모음에서 서버 방화벽 설정을 선택합니다.

    Screenshot of how to go to firewalls and virtual networks.

  3. Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용에서 설정 옆의 확인란을 선택 취소합니다.

  4. 배포 중에 시스템에서 컴퓨터의 클라이언트 IP 주소를 추가했겠지만, 클라이언트 IP와 일치하는 규칙이 없는 경우 규칙 이름에서 IP 주소를 추가하여 SSMS(SQL Server Management Studio)에서 로그인할 수 있도록 합니다.

  5. 저장을 선택하여 변경 내용을 저장합니다. SQL 데이터베이스 메뉴에서 개요를 선택하여 개요 페이지로 돌아갑니다.

  6. 로컬 컴퓨터에서 여전히 액세스할 수 있는지 확인하려면 SSMS로 이동합니다. 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택하여 Azure SQL Database 논리 서버에 대한 연결을 새로 고칩니다. 오류가 발생하지 않으면 사용자의 IP 주소에 대해 Azure SQL Database 논리 서버 보안 액세스를 성공적으로 구성한 것입니다.

    Screenshot of how to refresh the database connection.

  7. 필요에 따라 SSMS의 새 쿼리에서 이 코드를 실행하여 SSMS가 Azure SQL Database 인스턴스에 연결하는 방법을 확인할 수 있습니다.

    SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id=@@SPID;
    

    결과는 로컬 머신의 ‘퍼블릭’ IP 주소일 것입니다. Azure Cloud Shell이 아닌 PowerShell의 로컬 인스턴스에서 다음 명령을 실행하여 IP 주소를 확인할 수 있습니다.

    (Invoke-WebRequest -UseBasicParsing -Uri "https://ipinfo.io/ip").Content
    

    모듈 시작 부분에서 비슷한 명령을 사용하여 IP 주소를 찾은 적이 있습니다. 이 쿼리는 동일한 IP 주소를 반환할 것입니다.

Azure Cloud Shell을 사용하여 방화벽 규칙 관리

또한, Azure CLI 명령 az sql server firewall-rule을 사용하여 서버 수준 방화벽 규칙을 만들고, 삭제하고, 볼 수 있습니다. Azure VM(가상 머신)의 명령줄 인터페이스 또는 PowerShell Notebook을 통해 Azure CLI를 사용할 수 있습니다. 이 연습에서는 Cloud Shell을 실험하겠습니다. Azure Portal를 통해 Cloud Shell 터미널을 열 수 있지만 지금은 오른쪽에 있는 샌드박스 기본 제공 터미널(기본적으로 Cloud Shell 터미널과 같음)을 사용하겠습니다.

  1. 다음 명령을 실행하여 환경을 구성합니다.

    $database_name = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName <rgn>Sandbox resource group name</rgn>
    $logical_server = $server.ServerName
    
  2. 다음 명령을 입력하여 서버의 방화벽 설정을 나열합니다.

    az sql server firewall-rule list -g <rgn>Sandbox resource group name</rgn> -s $logical_server
    

    출력은 Azure Portal에서 Azure SQL 논리 서버의 네트워킹 메뉴에 있는 방화벽 규칙 설정에 있는 각 규칙에 대한 JSON 개체여야 합니다.

Azure Portal 또는 Cloud Shell을 사용하여 서버 수준 방화벽 규칙을 설정하면 논리 서버의 모든 데이터베이스에 대한 액세스 권한이 클라이언트 IP 주소에 부여됩니다. 데이터베이스 수준 방화벽 규칙을 구성할 수 있으며, 이 규칙은 SSMS에서 T-SQL 명령 EXECUTE sp_set_database_firewall_rule을 사용하여 개별 데이터베이스에 적용됩니다. T-SQL은 특정 데이터베이스에 대한 방화벽 규칙을 구성 하는 데 사용할 수 있는 유일한 방법입니다. 자세한 내용은 이 모듈의 요약 페이지에 있는 참조를 확인하십시오.

자세히 알아보기

서버 및 데이터베이스 수준의 특정 IP 주소 또는 IP 주소 범위에 대한 방화벽 규칙을 업데이트하는 방법을 알아보았습니다. 프로덕션 환경에서는 다양한 가상 네트워크 또는 리소스(예: Azure 앱 또는 Azure VM)에서 액세스해야 할 수도 있습니다. Azure VM에는 주소가 변경됨을 의미하는 동적 IP 주소가 있습니다. 고정 IP 주소를 설정할 수 있지만 방화벽 규칙을 사용하여 유지 관리하기 어려울 수 있습니다. 또는 가상 네트워크 규칙을 사용하여 VM 또는 다른 서비스를 포함하는 특정 서브넷에서의 액세스를 관리할 수 있습니다. Azure SQL Database 논리 서버에 가장 안전하게 연결하는 프라이빗 엔드포인트를 구성할 수도 있습니다.

네트워킹 메뉴를 사용하고 Azure SQL 논리 서버의 연결 탭으로 이동하여 클라이언트 연결부터 논리 서버까지 허용되는 최소 TLS 버전을 설정할 수도 있습니다.

이 동영상에서 Azure SQL Database의 데이터베이스에 연결하는 다양한 방법을 만들고 구성하고 비교하는 방법을 확인할 수 있습니다.

  • Azure 리소스에 대한 액세스 허용
  • 방화벽 규칙
  • 가상 네트워크 규칙
  • 프라이빗 엔드포인트