DAST 프로파일
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
DAST 사이트 프로파일과 스캐너 프로파일은 애플리케이션 및 이를 평가하는 데 사용하는 스캐너에 관한 정보를 저장합니다. DAST 프로파일, DAST 스캐너 프로파일, DAST 사이트 프로파일의 생성, 업데이트, 삭제는 감사 로그에 포함됩니다.
DAST 사이트 프로파일과 스캐너 프로파일은 애플리케이션 및 이를 평가하는 데 사용하는 스캐너에 관한 정보를 저장합니다. 프로파일을 정의하면 파이프라인 및 온디맨드 DAST 잡에 사용할 수 있습니다.
DAST 프로파일, DAST 스캐너 프로파일, DAST 사이트 프로파일의 생성, 업데이트, 삭제는 감사 로그에 포함됩니다.
사이트 프로파일#
히스토리
- 사이트 프로파일 기능인 스캔 방법과 파일 URL이 GitLab 15.6에서 GitLab.com 및 GitLab Self-Managed에서 활성화되었습니다.
- GraphQL 엔드포인트 경로 기능이 GitLab 15.7에서 도입되었습니다.
- 추가 변수가 GitLab 17.9에서 도입되었습니다.
사이트 프로파일은 DAST가 스캔할 배포된 애플리케이션, 웹사이트 또는 API의 속성 및 구성 세부 정보를 정의합니다.
사이트 프로파일에는 다음이 포함됩니다:
- 프로파일 이름: 스캔할 사이트에 할당하는 이름. 사이트 프로파일이
.gitlab-ci.yml또는 온디맨드 스캔에서 참조되는 동안에는 이름을 변경할 수 없습니다. - 사이트 유형: 스캔할 대상 유형으로 웹사이트 또는 API 스캔 중 선택.
- 대상 URL: DAST가 실행되는 URL.
- 제외된 URL: 스캔에서 제외할 URL의 쉼표로 구분된 목록. RE2 스타일 정규식을 사용할 수 있습니다. 정규식에 물음표(
?) 문자를 포함할 수 없습니다. 유효한 URL 문자이기 때문입니다. - 요청 헤더: 이름과 값을 포함한 HTTP 요청 헤더의 쉼표로 구분된 목록. 이 헤더들은 DAST가 수행하는 모든 요청에 추가됩니다.
- 인증:
- 인증 URL: 대상 웹사이트의 로그인 HTML 폼이 포함된 페이지의 URL. 인증된 스캔을 생성하기 위해 로그인 폼과 함께 사용자 이름과 비밀번호가 제출됩니다.
- 사용자 이름: 웹사이트에 인증하는 데 사용되는 사용자 이름.
- 비밀번호: 웹사이트에 인증하는 데 사용되는 비밀번호.
- 사용자 이름 폼 필드: 로그인 HTML 폼에서 사용자 이름 필드의 이름.
- 비밀번호 폼 필드: 로그인 HTML 폼에서 비밀번호 필드의 이름.
- 폼 제출 필드: 선택 시 로그인 HTML 폼을 제출하는 요소의
id또는name.
- 스캔 방법: API 테스트를 수행하는 방법의 유형. 지원되는 방법은 OpenAPI, Postman Collections, HTTP Archive(HAR), GraphQL입니다.
- GraphQL 엔드포인트 경로: GraphQL 엔드포인트의 경로. 이 경로는 대상 URL과 연결되어 스캔이 테스트할 URI를 제공합니다. GraphQL 엔드포인트는 인트로스펙션 쿼리를 지원해야 합니다.
- 파일 URL: OpenAPI, Postman Collection 또는 HTTP Archive 파일의 URL.
- 추가 변수: 특정 스캔 동작을 구성하는 환경 변수 목록. 이러한 변수들은 파이프라인 기반 DAST 스캔과 동일한 구성 옵션을 제공합니다. 예를 들어 타임아웃 설정, 인증 성공 URL 추가, 고급 스캔 기능 활성화 등이 있습니다.
API 사이트 유형이 선택된 경우, 스캔되는 API가 대상과 동일한 호스트에 있도록 호스트 재정의가 사용됩니다. 이는 잘못된 API에 대해 액티브 스캔을 실행하는 위험을 줄이기 위한 것입니다.
구성된 경우, 요청 헤더와 비밀번호 필드는 데이터베이스에 저장되기 전에 aes-256-gcm으로 암호화됩니다.
이 데이터는 유효한 시크릿 파일로만 읽고 복호화할 수 있습니다.
.gitlab-ci.yml 및 온디맨드 스캔에서 사이트 프로파일을 참조할 수 있습니다.
stages:
- dast
include:
- template: DAST.gitlab-ci.yml
dast:
stage: dast
dast_configuration:
site_profile: "<profile name>"
사이트 프로파일 검증#
사이트 프로파일 검증은 잘못된 웹사이트에 대해 액티브 스캔을 실행하는 위험을 줄입니다. 온디맨드 스캔을 실행하려면 사이트를 검증해야 합니다.
사이트 프로파일 검증은 보안 기능이 아닙니다. 필요한 경우 파이프라인 스캔으로 검증되지 않은 사이트에 대해 DAST를 실행할 수 있습니다.
각 사이트 검증 방법은 기능적으로 동등하므로, 가장 적합한 방법을 사용하세요:
- 텍스트 파일 검증: 대상 사이트에 텍스트 파일을 업로드해야 합니다. 텍스트 파일에는 프로젝트에 고유한 이름과 내용이 할당됩니다. 검증 프로세스는 파일의 내용을 확인합니다.
- 헤더 검증: 대상 사이트에
Gitlab-On-Demand-DAST헤더를 추가해야 하며, 프로젝트에 고유한 값을 사용합니다. 검증 프로세스는 헤더가 있는지 확인하고 값을 확인합니다. - 메타 태그 검증: 대상 사이트에
gitlab-dast-validation이라는 메타 태그를 추가해야 하며, 프로젝트에 고유한 값을 사용합니다. 페이지의<head>섹션에 추가되어야 합니다. 검증 프로세스는 메타 태그가 있는지 확인하고 값을 확인합니다.
사이트 프로파일 생성#
사이트 프로파일을 생성하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 새로 만들기 > 사이트 프로파일을 선택합니다.
- 필드를 작성한 다음 프로파일 저장을 선택합니다.
사이트 프로파일이 저장되어 온디맨드 스캔에 사용할 수 있습니다.
사이트 프로파일 편집#
스캔 전에 설정을 변경하려면 사이트 프로파일을 편집합니다.
사이트 프로파일이 보안 정책에 연결된 경우, 이 페이지에서 프로파일을 편집할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.
사이트 검증 파이프라인을 활성화하려면 dast-validation-runner 태그가 있는 러너를 정의하거나 태그가 없는 잡을 실행할 수 있는 러너를 정의해야 합니다.
사전 요구사항:
- DAST 스캔이 프로파일을 사용하는 경우, 스캔과 관련된 브랜치에 푸시할 수 있어야 합니다.
사이트 프로파일을 편집하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 사이트 프로파일 탭을 선택합니다.
- 프로파일 행에서 더 많은 작업 (⋮) 메뉴를 선택한 다음 편집을 선택합니다.
- 필드를 편집한 다음 프로파일 저장을 선택합니다.
사이트 프로파일의 대상 또는 인증 URL이 업데이트되면, 해당 프로파일과 연관된 요청 헤더와 비밀번호 필드가 지워집니다.
사이트 프로파일 삭제#
사이트 프로파일이 보안 정책에 연결된 경우, 사용자는 이 페이지에서 프로파일을 삭제할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요. 사이트 프로파일이 온디맨드 스캔에 연결된 경우 삭제되면, 온디맨드 스캔도 삭제됩니다.
사이트 프로파일을 삭제하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 사이트 프로파일 탭을 선택합니다.
- 프로파일 행에서 더 많은 작업 (⋮) 메뉴를 선택한 다음 삭제를 선택합니다.
- 삭제를 선택하여 삭제를 확인합니다.
사이트 프로파일 검증#
사이트를 검증하는 것은 액티브 스캔을 실행하는 데 필요합니다.
사전 요구사항:
- 검증 잡을 실행하려면 프로젝트에서 러너를 사용할 수 있어야 합니다.
사이트 프로파일을 검증하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 사이트 프로파일 탭을 선택합니다.
- 프로파일 행에서 검증을 선택합니다.
- 검증 방법을 선택합니다.
- 텍스트 파일 검증의 경우:
- 2단계에 나열된 검증 파일을 다운로드합니다.
- 검증 파일을 호스트의 3단계 위치 또는 원하는 위치에 업로드합니다.
- 필요한 경우 3단계에서 파일 위치를 편집합니다.
- 검증을 선택합니다.
- 헤더 검증의 경우:
- 2단계에서 클립보드 아이콘을 선택합니다.
- 검증할 사이트의 헤더를 편집하고 클립보드 내용을 붙여넣습니다.
- 3단계의 입력 필드를 선택하고 헤더 위치를 입력합니다.
- 검증을 선택합니다.
- 메타 태그 검증의 경우:
- 2단계에서 클립보드 아이콘을 선택합니다.
- 검증할 사이트의 내용을 편집하고 클립보드 내용을 붙여넣습니다.
- 3단계의 입력 필드를 선택하고 메타 태그 위치를 입력합니다.
- 검증을 선택합니다.
- 텍스트 파일 검증의 경우:
사이트가 검증되고 액티브 스캔이 실행될 수 있습니다. 사이트 프로파일의 검증 상태는 수동으로 취소하거나 파일, 헤더 또는 메타 태그가 편집될 때만 취소됩니다.
실패한 검증 재시도#
실패한 사이트 검증 시도는 프로파일 관리 페이지의 사이트 프로파일 탭에 나열됩니다.
사이트 프로파일의 실패한 검증을 재시도하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 사이트 프로파일 탭을 선택합니다.
- 프로파일 행에서 검증 재시도를 선택합니다.
사이트 프로파일의 검증 상태 취소#
사이트 프로파일의 검증 상태가 취소되면, 동일한 URL을 공유하는 모든 사이트 프로파일의 검증 상태도 취소됩니다.
사이트 프로파일의 검증 상태를 취소하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 검증된 프로파일 옆에서 검증 취소를 선택합니다.
사이트 프로파일의 검증 상태가 취소됩니다.
검증된 사이트 프로파일 헤더#
다음은 애플리케이션에서 필요한 사이트 프로파일 헤더를 제공하는 방법의 코드 샘플입니다.
온디맨드 스캔을 위한 Ruby on Rails 예시#
다음은 Ruby on Rails 애플리케이션에서 사용자 지정 헤더를 추가하는 방법입니다:
class DastWebsiteTargetController < ActionController::Base
def dast_website_target
response.headers['Gitlab-On-Demand-DAST'] = '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c'
head :ok
end
end
온디맨드 스캔을 위한 Django 예시#
다음은 Django에서 사용자 지정 헤더를 추가하는 방법입니다:
class DastWebsiteTargetView(View):
def head(self, *args, **kwargs):
response = HttpResponse()
response['Gitlab-On-Demand-DAST'] = '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c'
return response
온디맨드 스캔을 위한 Node (Express 포함) 예시#
다음은 Node (Express 포함)에서 사용자 지정 헤더를 추가하는 방법입니다:
app.get('/dast-website-target', function(req, res) {
res.append('Gitlab-On-Demand-DAST', '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c')
res.send('Respond to DAST ping')
})
스캐너 프로파일#
히스토리
- GitLab 17.0에서 브라우저 기반 온디맨드 DAST 스캔 도입으로 AJAX 스파이더 옵션이 더 이상 사용되지 않습니다.
- GitLab 17.0에서 브라우저 기반 온디맨드 DAST 스캔 도입으로 스파이더 타임아웃이 크롤 타임아웃으로 이름이 변경되었습니다.
스캐너 프로파일은 보안 스캐너의 구성 세부 정보를 정의합니다.
스캐너 프로파일에는 다음이 포함됩니다:
- 프로파일 이름: 스캐너 프로파일에 부여하는 이름. 예를 들어 "Spider_15". 스캐너 프로파일이
.gitlab-ci.yml또는 온디맨드 스캔에서 참조되는 동안에는 이름을 변경할 수 없습니다. - 스캔 모드: 패시브 스캔은 대상으로 전송된 모든 HTTP 메시지(요청 및 응답)를 모니터링합니다. 액티브 스캔은 잠재적인 취약점을 찾기 위해 대상을 공격합니다.
- 크롤 타임아웃: 크롤러가 사이트를 탐색하는 데 허용된 최대 시간(분).
- 대상 타임아웃: 스캔을 시작하기 전에 DAST가 사이트가 사용 가능해질 때까지 대기하는 최대 시간(초).
- 디버그 메시지: DAST 콘솔 출력에 디버그 메시지를 포함합니다.
.gitlab-ci.yml 및 온디맨드 스캔에서 스캐너 프로파일을 참조할 수 있습니다.
stages:
- dast
include:
- template: DAST.gitlab-ci.yml
dast:
stage: dast
dast_configuration:
scanner_profile: "<profile name>"
스캐너 프로파일 생성#
스캐너 프로파일을 생성하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 새로 만들기 > 스캐너 프로파일을 선택합니다.
- 폼을 작성합니다. 각 필드에 대한 세부 정보는 스캐너 프로파일을 참조하세요.
- 프로파일 저장을 선택합니다.
스캐너 프로파일 편집#
사전 요구사항:
- DAST 스캔이 프로파일을 사용하는 경우, 스캔과 관련된 브랜치에 푸시할 수 있어야 합니다.
스캐너 프로파일이 보안 정책에 연결된 경우, 이 페이지에서 프로파일을 편집할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.
스캐너 프로파일을 편집하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 스캐너 프로파일 탭을 선택합니다.
- 스캐너 행에서 더 많은 작업 (⋮) 메뉴를 선택한 다음 편집을 선택합니다.
- 폼을 편집합니다.
- 프로파일 저장을 선택합니다.
스캐너 프로파일 삭제#
스캐너 프로파일이 보안 정책에 연결된 경우, 사용자는 이 페이지에서 프로파일을 삭제할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요. 스캐너 프로파일이 온디맨드 스캔에 연결된 경우 삭제되면, 온디맨드 스캔도 삭제됩니다.
스캐너 프로파일을 삭제하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
- 동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로파일 관리를 선택합니다.
- 스캐너 프로파일 탭을 선택합니다.
- 스캐너 행에서 더 많은 작업 (⋮) 메뉴를 선택한 다음 삭제를 선택합니다.
- 삭제를 선택합니다.
