연습 - 백 엔드 풀의 암호화 구성

완료됨

배송 포털 애플리케이션에 대한 엔드 투 엔드 암호화를 구현하려고 합니다. 사용자와 서버 간에 모든 데이터를 암호화하면 권한이 없는 사용자가 데이터를 가로채서 읽을 수 없도록 할 수 있습니다.

이 단원에서는 웹 애플리케이션 및 Application Gateway를 설정하겠습니다. 그 다음에는 자체 서명된 SSL 인증서를 만들고 백 엔드 풀에서 암호화를 사용하도록 설정하여 Application Gateway에서 서버로 이동하는 트래픽을 보호하겠습니다.

다음 이미지에는 이 연습에서 구성할 요소가 강조 표시되어 있습니다. Azure Application Gateway v2를 사용하여 애플리케이션 게이트웨이를 설정합니다.

Diagram that highlights the elements (backend pool, SSL certificate, and HTTP settings) created in this exercise.

가상 머신 및 Application Gateway 배포

  1. 브라우저에서 Azure Cloud Shell을 열고 리소스를 만들려는 구독에 액세스하여 디렉터리에 로그인합니다. 이 연습에서는 Bash 셸 환경을 사용합니다.

  2. Cloud Shell에서 다음 명령을 실행하여 리소스에 대한 리소스 그룹을 만듭니다. <resource group name>을 리소스 그룹의 이름으로 바꾸고 <location>을 리소스를 배포하려는 Azure 지역으로 바꿉니다.

    az group create --resource-group <resource group name> --location <location>
    
  3. Cloud Shell에서 다음 명령을 실행하여 리소스 그룹 이름을 저장할 변수를 만듭니다.

    export rgName=<resource group name>
    
    
  4. Azure Cloud Shell에서 다음 명령을 실행하여 배송 포털의 소스 코드를 다운로드합니다.

    git clone https://github.com/MicrosoftDocs/mslearn-end-to-end-encryption-with-app-gateway shippingportal
    
  5. 배송 포트 폴더로 이동합니다.

    cd shippingportal
    
  6. 다음 설치 스크립트를 실행하여 가상 머신, 인증서 및 애플리케이션 게이트웨이를 만듭니다.

    bash setup-infra.sh
    

    참고 항목

    스크립트를 완료하는 데 몇 분 정도 걸립니다. 게이트웨이 및 리소스의 압축을 풀고 구성하기 위해 여러 프로세스를 통해 작동하도록 허용합니다. 프로세스가 0개의 경고와 0개의 오류와 함께 성공했음을 확인할 수 있습니다.

웹 서버가 올바르게 구성되었는지 확인합니다.

  1. 다음 명령을 실행하여 설치 스크립트에서 만든 웹 서버의 URL을 표시합니다.

    echo https://"$(az vm show \
      --name webservervm1 \
      --resource-group $rgName \
      --show-details \
      --query [publicIps] \
      --output tsv)"
    
  2. URL을 복사하여 웹 브라우저에 붙여넣고 URL로 이동합니다.

    브라우저에 다음 이미지와 유사한 경고 메시지가 표시될 가능성이 높습니다. 경고 메시지의 정확한 콘텐츠는 브라우저에 따라 달라질 수 있습니다. 예제 이미지는 Microsoft Edge에서 가져온 것입니다.

    Screenshot of a warning about an unauthenticated server in Microsoft Edge.

    인증할 수 없는 자체 서명된 인증서를 통해 웹 서버가 구성되었기 때문에 이 경고가 발생합니다. 이 경고 페이지에서 링크를 찾아서 선택하여 웹 사이트로 진행합니다. 예를 들어 웹 페이지로 이동 또는 고급을 선택한 다음 계속 또는 해당 항목으로 이동합니다. 결과는 다음 이미지와 같이 배송 포털 홈페이지로 이동합니다. 서버가 올바르게 구성되었는지 테스트하는 샘플 앱입니다.

    Screenshot of the shipping portal home page Microsoft Edge.

백 엔드 풀의 암호화 구성

  1. 다음 명령을 실행하여 웹 서버 역할을 하는 가상 머신의 개인 IP 주소를 가져옵니다.

    echo privateip="$(az vm list-ip-addresses \
      --resource-group $rgName \
      --name webservervm1 \
      --query "[0].virtualMachine.network.privateIpAddresses[0]" \
      --output tsv)"
    
  2. 개인 IP 주소를 저장할 변수를 만듭니다. 이전 단계의 IP 주소로 바꿉 <privateIP> 니다.

    export privateip=<privateIP>
    
    
  3. 가상 머신의 개인 IP 주소를 사용하여 Application Gateway에 대한 백 엔드 풀을 설정합니다.

    az network application-gateway address-pool create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name ap-backend \
      --servers $privateip
    
  4. 백 엔드 풀의 VM 인증서를 신뢰할 수 있는 루트 인증서로 Application Gateway에 업로드합니다. 설치 스크립트는 이 인증서를 생성하고 shipping-ssl.crt 파일에 저장했습니다.

    az network application-gateway root-cert create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name shipping-root-cert \
      --cert-file server-config/shipping-ssl.crt
    
  5. 인증서를 사용하도록 HTTP 설정을 구성합니다.

    az network application-gateway http-settings create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name https-settings \
      --port 443 \
      --protocol Https \
      --host-name $privateip
    
  6. 다음 명령을 실행하여 백 엔드 풀에 대한 신뢰할 수 있는 인증서를 백 엔드 VM에 설치된 인증서로 설정합니다.

    export rgID="$(az group show --name $rgName --query id --output tsv)"
    
    az network application-gateway http-settings update \
        --resource-group $rgName \
        --gateway-name gw-shipping \
        --name https-settings \
        --set trustedRootCertificates='[{"id": "'$rgID'/providers/Microsoft.Network/applicationGateways/gw-shipping/trustedRootCertificates/shipping-root-cert"}]'
    

이제 배송 포털 사이트와 애플리케이션 게이트웨이를 실행하는 가상 머신이 있습니다. Application Gateway와 애플리케이션 서버 간에 SSL 암호화를 구성했습니다.