Web Security Scanner를 사용하여 커스텀 스캔 설정

>

Google Cloud Console의 Web Security Scanner를 사용하여 배포된 애플리케이션에서 커스텀 스캔 예약 및 실행 Web Security Scanner는 방화벽 뒤에 없는 공개 URL 및 IP의 스캔을 지원합니다.

다음 동영상은 Web Security Scanner를 설정하는 단계와 대시보드 사용 방법을 설명합니다. 설정 단계는 이 페이지의 후반부에서 글로 설명됩니다.

시작하기 전에

Web Security Scanner를 사용하여 커스텀 스캔을 설정하려면 다음 안내를 따르세요.

  • 공개 URL 또는 IP에 배포된 애플리케이션이 있어야 합니다.
  • 조직에 Security Command Center가 사용 설정되어 있어야 합니다.

스캔하기 전에 애플리케이션을 주의 깊게 감사하여 원하는 스캔 범위를 넘어 데이터, 사용자 또는 시스템에 영향을 미칠 수 있는 기능이 있는지 확인하세요.

Web Security Scanner는 필드를 채우고 버튼을 누르고 링크를 클릭하고 기타 상호작용을 수행하기 때문에 주의해서 사용해야 합니다. Web Security Scanner 사용 시 데이터 또는 시스템의 상태를 변경하는 기능이 활성화되어 원치 않는 결과가 발생할 수 있습니다. 예를 들면 다음과 같습니다.

  • 공개 댓글을 허용하는 블로그 애플리케이션에서 Web Security Scanner가 모든 블로그 기사에 대한 댓글로 테스트 문자열을 게시할 수 있습니다.
  • 이메일 등록 페이지에서 Web Security Scanner가 다수의 테스트 이메일을 생성할 수 있습니다.

위험을 최소화하는 방법에 대한 도움말은 권장사항을 참조하여

Web Security Scanner 사용 설정

Web Security Scanner를 사용 설정하여 커스텀 스캔을 만들고 실행합니다. 조직에서 Security Command Center가 사용 설정되어 있어야 합니다.

1단계: 테스트 프로젝트 배포

커스텀 스캔에 대한 Web Security Scanner 설정을 완료하려면 이미 배포된 Compute Engine, Google Kubernetes Engine 또는 App Engine 애플리케이션의 URL이 필요합니다. 배포된 애플리케이션이 없거나 테스트 애플리케이션으로 Web Security Scanner를 사용해 보려면 원하는 언어로 테스트 App Engine 애플리케이션을 배포합니다.

2단계: IAM 역할 할당

Web Security Scanner 스캔을 실행하려면 스캔하려는 프로젝트에 대해 다음의 ID 및 액세스 관리(IAM) 역할 중 하나가 있어야 합니다.

  • 편집자
  • 소유자

이러한 역할 중 하나를 추가하려면 다음 안내를 따르세요.

  1. Cloud Console에서 IAM 및 관리 페이지로 이동합니다.
    IAM 및 관리 페이지로 이동
  2. 프로젝트 선택기 드롭다운 목록을 클릭합니다.
  3. 선택 대화상자가 나타나면 Web Security Scanner를 사용하여 스캔할 프로젝트를 선택합니다.
  4. 사용자 이름 옆에 있는IAM 페이지에서 수정을 클릭합니다.
  5. 수정 권한 패널이 나타나면 다른 역할 추가를 클릭한 후 다음 역할 중 하나를 선택합니다.
    • 프로젝트 > 소유자
    • 프로젝트 > 편집자
  6. 역할 추가가 완료되었으면 저장을 클릭합니다.

Web Security Scanner 역할에 대해 자세히 알아보세요.

3단계: 스캔 실행

스캔을 설정하면 나중에 실행되도록 대기열에 추가됩니다. 현재 부하에 따라 스캔이 실행되기까지 몇 시간이 걸릴 수 있습니다. 스캔을 생성, 저장, 실행하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  2. 스캔하려고 하는 배포된 애플리케이션이 포함된 프로젝트를 선택합니다.
  3. 새 스캔을 설정하려면 새 스캔을 클릭합니다.
  4. 로드되는 새 스캔 만들기 페이지에서 다음 값을 설정합니다.

    1. 시작 URL에서 스캔할 애플리케이션의 URL을 입력합니다.
    2. 일정에서 매주를 선택합니다.
    3. 다음 실행일에서 날짜를 선택합니다.

    Security Command Center로 내보내기 박스가 자동으로 선택됩니다. Web Security Scanner를 Web Security Scanner 보안 소스로 사용 설정한 경우 Web Security Scanner 대시보드에 스캔 결과가 표시됩니다.

    이 첫 번째 스캔에서는 새 스캔 만들기 페이지의 다른 값을 변경하지 않고 기본 스캔을 사용합니다. 스캔 설정에 관한 자세한 내용은 앱 스캔을 참조하세요.

  5. 저장을 클릭하여 스캔을 만듭니다.

  6. Web Security Scanner 페이지에서 스캔 이름을 클릭하여 개요 페이지를 로드한 후 스캔 실행을 클릭합니다.

    스캔은 대기열에 추가되었다가 나중에 실행됩니다. 스캔을 실행하기 전까지 몇 시간 정도 걸릴 수 있습니다.

  7. 스캔이 완료되면 스캔 개요 페이지에 결과 섹션이 표시됩니다. 다음 이미지는 취약점이 감지되지 않은 스캔 결과의 예시를 보여줍니다.

    Web Security Scanner를 Web Security Scanner 보안 소스로 사용 설정한 경우 Web Security Scanner 대시보드에 스캔 결과가 표시됩니다.

    특정 발견 항목의 세부정보를 표시하려면 스캔 결과에서 발견 항목 이름을 클릭합니다.

이제 기본 Web Security Scanner 스캔을 완료했습니다. 자체 애플리케이션을 스캔한 경우 이 페이지의 앱 스캔 섹션에서 스캔을 맞춤 설정하는 방법을 알아보세요.

스캔을 실행하는 테스트 애플리케이션을 배포한 경우 이 페이지에서 다음 삭제 단계를 완료하면 애플리케이션에 대한 App Engine 요금이 부과되지 않습니다.

4단계: 삭제

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

앱 스캔

테스트 계정을 사용하여 앱의 커스텀 스캔을 설정합니다.

1단계: 테스트 계정 만들기

앱을 스캔할 때는 민감한 데이터나 유해한 작업에 액세스할 수 없는 테스트 계정을 사용하는 것이 가장 좋습니다. 앱에 로그인할 수 있는 테스트 계정을 만들고 스캔을 만들 때 제공할 로그인 사용자 인증 정보를 기록합니다. 그러면 테스트 계정을 사용하여 데이터를 스캔할 수 있습니다.

2단계: 스캔 만들기

  1. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  2. 선택을 클릭하고 App Engine, Compute Engine 또는 GKE 애플리케이션이 이미 있는 프로젝트를 선택합니다.
  3. 새 스캔 양식을 표시하려면 스캔 만들기 또는 새 스캔을 클릭합니다.
  4. 새 스캔 양식에 값을 추가하려면 다음 테이블을 가이드로 사용하세요.
    필드 설명
    시작 URL

    간단한 사이트에는 일반적으로 사이트의 홈, 기본 페이지 또는 방문 페이지 같은 시작 URL이 하나만 필요합니다. Web Security Scanner는 이 URL에서 다른 모든 사이트 페이지를 찾을 수 있습니다. 하지만 사이트가 다음을 가지고 있는 경우 Web Security Scanner가 모든 페이지를 찾지 못할 수 있습니다.

    • 많은 페이지
    • 연결되지 않은 페이지 섬
    • 마우스 오버 기반 다중 레벨 메뉴와 같은 복잡한 자바스크립트가 필요한 이동

    이러한 경우에는 시작 URL을 추가로 지정하여 스캔 범위를 늘립니다.

    제외된 URL 복잡성을 줄이기 위해 올바른 정규 표현식을 사용할 필요 없이 하나 이상의 * 와일드 카드를 사용하는 단순화된 원시 언어로 제외가 정의됩니다. 세부정보와 올바른 패턴 샘플은 이 페이지의 뒷부분에 있는 URL 제외를 참조하세요.
    인증 > Google 계정

    Gmail에서 테스트 계정을 만든 다음 계정을 사용하여 제품을 스캔할 수 있습니다. G Suite 고객의 경우 도메인 내에 테스트 계정을 만들 수 있습니다(예: test-account@yourdomain.com). Web Security Scanner에서 이러한 계정은 Gmail 계정처럼 작동합니다. 2단계 인증은 지원되지 않습니다.

    Google은 Google 계정에 실명 정책을 적용합니다. 테스트 계정의 이름이 실제 것처럼 보이지 않으면 계정이 차단될 수 있습니다.

    인증 > Identity-Aware Proxy 알파

    Identity-Aware Proxy로 리소스를 보호하려면 IAP 가이드를 참조하세요.

    IAP로 보호되는 리소스와 함께 Web Security Scanner를 사용하려면 먼저 Web Security Scanner 서비스 계정을 IAP 구성원으로 추가합니다.

    1. Cloud Console에서 IAP 페이지로 이동합니다.
    2. Web Security Scanner와 함께 사용할 프로젝트를 선택합니다.
    3. 스캔할 애플리케이션 리소스를 선택한 다음 정보 패널에서 구성원 추가를 클릭합니다.
    4. 구성원 추가 패널의 새 구성원 상자에 Web Security Scanner 서비스 계정을 다음 형식으로 입력합니다.

      service-project-number@gcp-sa-websecurityscanner.iam.gserviceaccount.com.

    5. 역할 선택 드롭다운 목록에서 Cloud IAP > IAP 보안 웹 앱 사용자를 선택합니다.
    6. 역할 추가가 완료되었으면 저장을 클릭합니다.

    그런 다음 스캔에 OAuth 클라이언트 ID를 추가합니다. Web Security Scanner는 단일 OAuth 클라이언트 ID로 보호되는 애플리케이션만 검사할 수 있습니다. OAuth 클라이언트 ID를 추가하려면 다음 안내를 따르세요.

    1. Cloud Console에서 IAP 페이지로 이동합니다.
    2. Web Security Scanner와 함께 사용할 프로젝트를 선택합니다.
    3. 더보기 메뉴에서 OAuth 클라이언트 수정을 선택합니다.
    4. 표시되는 웹 애플리케이션용 클라이언트 ID 창에서 클라이언트 ID를 복사합니다.
    5. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    6. 인증에서 Identity-Aware Proxy 알파를 선택합니다.
    7. OAuth2 클라이언트 ID 상자에 복사한 OAuth 클라이언트 ID를 붙여넣은 다음 저장을 클릭합니다.
    인증 > 비 Google 계정

    자체 인증 시스템을 만들었으며 Google 계정 서비스를 사용하지 않는 경우에 이 옵션을 선택합니다. 로그인 양식의 URL, 사용자 이름, 비밀번호를 지정합니다. 이러한 사용자 인증 정보는 애플리케이션에 로그인하고 애플리케이션을 스캔하는 데 사용됩니다.

    Web Security Scanner는 애플리케이션에 로그인하기 위해 휴리스틱을 시도하고 스캔합니다. 특히 이 메서드는 username 필드와 password 필드가 포함된 두 개의 필드 로그인 양식을 찾습니다. 로그인 작업으로 스캐너가 스캔을 계속하도록 인증 쿠키가 생성되어야 합니다.

    커스텀 로그인 실패를 일으키는 일반적인 문제는 다음과 같습니다.

    • 비표준 HTML 양식 필드 사용(예시: password 유형 사용 안함)
    • 복잡한 로그인 양식 사용(예시: usernamepassword 필드가 둘 이상인 양식)
    • 로그인 성공 시 인증 쿠키 저장 안함
    • 경우에 따라 봇, DDOS, 기타 공격으로부터 보호하기 위한 카운터 조치를 통해 스캐너가 거부될 수 있습니다.

    애플리케이션의 인증된 스캔을 통한 가장 일관성 있는 실험 환경을 위해 Identity-Aware Proxy 통합을 사용하는 것이 좋습니다.

    일정 매일, 매주, 2주마다 또는 4주마다 스캔이 실행되도록 설정할 수 있습니다. 이후 버전의 애플리케이션이 테스트되도록 하려면 예약 스캔을 생성하는 것이 가장 좋습니다. 또한 Google은 종종 새 버그 유형을 확인하는 새 스캐너를 출시하기 때문에 예약 스캔을 실행하면 수동 작업 없이도 더 많은 범위를 활용할 수 있습니다.
  5. 값 추가를 마쳤으면 만들기를 클릭합니다. 이제 새 스캔을 실행할 수 있습니다.

Web Security Scanner는 실행할 때마다 무작위로 할당된 IP 주소를 사용합니다. 스캐너를 통과할 수 있도록 방화벽에 추가할 예상 IP 주소가 없습니다.

기본적으로 Web Security Scanner는 각 실행 중에 무작위로 할당된 IP 주소를 사용하므로 방화벽 구성에 사용할 수 있는 예측 가능한 IP 주소는 없습니다. Web Security Scanner IP 주소를 예측 가능하게 만들려면 이 페이지의 뒷부분에서 고정 IP에서 스캔을 사용 설정하는 단계를 완료하세요.

3단계: 스캔 실행

스캔을 실행하는 방법은 다음과 같습니다.

  1. 스캔을 생성하는 데 사용한 테스트 계정에 로그인합니다.
  2. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  3. 선택을 클릭하고 스캔을 만든 프로젝트를 선택합니다.
  4. 스캔 구성에서 실행하려는 스캔의 이름을 클릭합니다.
  5. 스캔 세부정보 페이지에서 실행을 클릭합니다.

스캔은 대기열에 배치되었다가 약간의 시간이 지난 후에 실행될 수 있습니다. 시스템 부하 및 다음의 특징에 따라 실행하는 데 몇 분 또는 몇 시간이 걸릴 수 있습니다.

  • 사이트 복잡성
  • 페이지당 실행 가능한 요소 수
  • 링크 수
  • 탐색을 포함한 사이트의 자바스크립트 용량

최대 10개의 서로 다른 스캔을 설정 및 실행할 수 있으며 그 이후에는 이전에 저장된 결과를 삭제하거나 정리해야 합니다.

커스텀 스캔 결과 보기

커스텀 스캔의 상태와 결과는 Cloud Console의 스캔 세부정보 페이지에 표시됩니다. 스캔 결과를 보려면 다음 안내를 따르세요.

  1. 스캔을 생성하는 데 사용한 테스트 계정에 로그인합니다.
  2. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  3. 선택을 클릭한 후 검토할 스캔이 포함된 프로젝트를 선택합니다.
  4. 스캔 구성에서 검토하려는 스캔의 이름을 클릭합니다.

스캔 세부정보 페이지가 로드되고 가장 최근 스캔의 결과가 표시됩니다. 검사가 진행 중인 경우 결과 탭에 현재 완료율을 표시합니다. 이전 스캔의 결과를 표시하려면 드롭다운 목록에서 스캔 날짜와 시간을 선택합니다.

완료된 커스텀 스캔의 세부정보는 다음과 같습니다.

  • 결과 탭에는 스캔으로 발견된 취약점 목록이 표시됩니다(존재하는 경우).
  • 크롤링된 URL 탭에 스캔으로 확인한 URL 목록이 표시됩니다.
  • 세부정보 탭에는 다음이 포함됩니다.
    • 시작 URL
    • 인증
    • 사용자 에이전트
    • 초당 쿼리 수(QPS)로 표시되는 최대 스캔 속도

스캔에 대한 자세한 내용은 프로젝트 로그 페이지에서 확인할 수 있습니다.

커스텀 스캔 수정

커스텀 스캔을 수정하려면 다음 안내를 따르세요.

  1. 스캔을 생성하는 데 사용한 테스트 계정에 로그인합니다.
  2. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  3. 선택을 클릭한 후 수정할 스캔이 포함된 프로젝트를 선택합니다.
  4. 스캔 구성에서 수정하려는 스캔의 이름을 클릭합니다.
  5. 스캔 세부정보 페이지가 표시되면 수정을 클릭합니다.
  6. 표시되는 [스캔 이름] 수정 페이지에서 원하는 대로 변경하고 저장을 클릭합니다.

수정된 커스텀 스캔은 다음 예약 시간에 실행하거나 수동으로 실행하여 업데이트된 결과를 가져올 수 있습니다.

커스텀 스캔 삭제

커스텀 스캔을 하나 이상 삭제하려면 다음 안내를 따르세요.

  1. 스캔을 생성하는 데 사용한 테스트 계정에 로그인합니다.
  2. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  3. 선택을 클릭한 후 수정할 스캔이 포함된 프로젝트를 선택합니다.
  4. 스캔 구성에서 하나 이상의 삭제하려는 스캔 옆에 있는 체크박스를 선택합니다.
  5. 삭제를 클릭한 다음 확인을 클릭합니다.

선택한 모든 스캔이 삭제됩니다.

고정 IP에서 스캔 설정

이 섹션에서는 정적 IP 기능의 Web Security Scanner 커스텀 스캔을 사용 설정하는 방법을 설명합니다. 이 기능을 사용 설정하면 Web Security Scanner가 예측 가능한 IP 주소를 사용하여 공개 Compute Engine 및 Google Kubernetes Engine(GKE) 애플리케이션을 스캔합니다. 이 기능은 현재 알파 버전이며 Web Security Scanner IP 주소는 이후 출시 버전에서 변경될 수 있습니다.

시작하기 전에

고정 IP 기능에서 Web Security Scanner 커스텀 스캔을 사용하려면 다음이 필요합니다.

  • 공개 Compute Engine 또는 GKE 애플리케이션 이 기능은 현재 App Engine 애플리케이션을 지원하지 않습니다.
  • 인증 없이 생성되거나 Google 계정 인증으로 생성된 스캔. 이 기능은 현재 Google 계정 이외의 인증을 사용하는 스캔은 지원하지 않습니다.

1단계: 방화벽 구성

고정 IP 알파에서 스캔을 위해 가입한 후 Web Security Scanner IP 주소를 허용하도록 방화벽을 구성합니다.

  1. Cloud Console에서 방화벽 규칙 페이지로 이동합니다.
    방화벽 규칙 페이지로 이동
  2. 선택을 클릭하고 프로젝트를 선택합니다.
  3. 방화벽 규칙 페이지가 나타나면 방화벽 규칙 만들기를 클릭합니다.
  4. 방화벽 규칙 만들기 페이지에서 다음 값을 설정합니다.
    1. 이름: web-security-scanner 또는 유사한 이름을 입력합니다.
    2. 우선순위: 애플리케이션에 대한 이그레스 트래픽을 거부하는 모든 규칙보다 높은 우선순위(더 낮은 숫자 값)를 선택합니다.
    3. 소스 IP 범위: 34.66.18.0/2634.66.114.64/26을 입력합니다.
    4. 프로토콜 및 포트: 모두 허용을 선택하거나 애플리케이션의 프로토콜 및 포트를 지정합니다. 대부분의 경우 tcp 체크박스를 선택한 다음 포트에 80443을 입력합니다.
  5. 값 설정을 마치면 만들기를 클릭합니다.

2단계: 스캔 구성

Web Security Scanner의 예측 가능한 IP 주소를 허용하도록 방화벽을 구성한 다음 사전 정의된 IP를 사용하도록 스캔을 구성합니다.

  1. Cloud Console에서 Web Security Scanner 페이지로 이동합니다.
    Web Security Scanner 페이지로 이동
  2. 선택을 클릭하고 프로젝트를 선택합니다.
  3. 새 스캔을 만들거나 기존 스캔을 수정합니다.
  4. 사전 정의된 소스 IP 집합에서 스캔 실행 체크박스를 선택합니다.
  5. 스캔을 저장합니다.

다음에 검사를 실행하면 방화벽의 보호를 받는 공개 Compute Engine 및 GKE 애플리케이션을 스캔합니다.

URL 제외

제외된 URL 패턴을 1개 이상 지정하여 커스텀 검사 중에 사이트 섹션을 테스트하지 않도록 할 수 있습니다. Web Security Scanner는 제외 항목과 일치하는 리소스를 요청하지 않습니다. 다음 섹션에서는 Web Security Scanner가 사용하는 패턴과 일치하는 패턴을 설명합니다.

URL 패턴 일치

제외된 URL 일치는 일치 패턴으로 정의된 URL 집합에 기반합니다. 일치 패턴은 다음 3개의 부분으로 구성된 URL입니다.

  • scheme: 예를 들면 http 또는 *입니다.
  • host: 예를 들면 www.google.com 또는 *.google.com 또는 *입니다.
  • path: 예를 들면 /*, /foo* 또는 /foo/bar. *입니다.

다음은 기본 구문입니다.

<exclude-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>

각 부분의 *에는 다음과 같은 함수가 있습니다.

  • scheme: *는 HTTP 또는 HTTPS와 일치합니다.
  • host:
    • *는 모든 호스트와 일치합니다.
    • *.hostname은 지정된 호스트 및 해당 하위 도메인과 일치합니다.
  • path: *는 0개 이상의 문자와 일치합니다.

올바른 패턴 일치

다음 표에는 유효한 패턴의 예시가 나와 있습니다.

패턴 동작 일치하는 URL의 예
http://*/* HTTP 스키마를 사용하는 모든 URL과 일치합니다.

http://www.google.com/

http://example.org/foo/bar.html

http://*/foo* HTTP 스키마를 사용하며 모든 호스트에서 경로가 /foo로 시작되는 모든 URL과 일치합니다.

http://example.com/foo/bar.html

http://www.google.com/foo

https://*.google.com/foo*bar 경로가 /foo로 시작하고 bar로 끝나는 경우, HTTPS 스키마를 사용하고 google.com 호스트(예시: www.google.com, docs.google.com, google.com 등)에 있는 모든 URL과 일치합니다.

http://www.google.com/foo/baz/bar

http://docs.google.com/foobar

http://example.org/foo/bar.html 지정된 URL과 일치합니다. http://example.org/foo/bar.html
http://127.0.0.1/* HTTP 스키마를 사용하고 호스트 127.0.0.1에 있는 모든 URL과 일치합니다.

http://127.0.0.1/

http://127.0.0.1/foo/bar.html

*://mail.google.com/* http://mail.google.com 또는 https://mail.google.com로 시작하는 모든 URL과 일치합니다.

http://mail.google.com/foo/baz/bar

https://mail.google.com/foobar

잘못된 패턴 일치

다음 표에는 유효하지 않은 패턴의 예시가 나와 있습니다.

패턴 이유
http://www.google.com URL에 경로가 포함되어 있지 않습니다.
http://*foo/bar 호스트 부분에서는 * 다음에 . 또는 /만 올 수 있습니다.
http://foo.*.bar/baz 호스트 부분에서 *를 사용할 경우 첫 번째 문자로만 사용해야 합니다.
http:/bar URL 스키마 구분 기호가 올바르게 형성되지 않았습니다. "/""//"여야 합니다.
foo://* URL 스키마가 잘못되었습니다.

다음 단계