온디맨드 DAST 스캔
버튼 클릭이나 양식 제출과 같은 작업을 포함합니다. 또한 버그를 유발하여 운영 데이터의 수정이나 손실로 이어질 수 있습니다.
DAST 스캔은 테스트 서버에서만 실행하십시오.
온디맨드 스캔
- Runner 태그 선택은 GitLab.com 및 자체 관리에서 사용 가능하며, GitLab 16.3부터 가능합니다.
- 브라우저 기반의 온디맨드 DAST 스캔은 GitLab 17.0부터 사용 가능하며, 동 버전에서 프록시 기반 DAST가 제거되었습니다.
온디맨드 DAST 스캔은 DevOps 생명 주기 외부에서 실행됩니다.
저장소의 변경 사항은 스캔을 트리거하지 않습니다.
수동으로 시작하거나 실행될 스케줄을 설정해야 합니다.
온디맨드 DAST 스캔의 경우, 사이트 프로필은 어떤 내용을 스캔할지를 정의하고,
스캐너 프로필은 어떻게 애플리케이션을 스캔할지를 정의합니다.
온디맨드 스캔은 적극적 모드 또는 수동 모드에서 실행할 수 있습니다:
- 수동 모드: 기본 모드로, 수동 브라우저 기반 스캔을 실행합니다.
-
적극적 모드: 적극적 브라우저 기반 스캔을 실행하며, 이는 스캔되는 사이트에 잠재적으로 해로울 수 있습니다.
우발적인 손상의 위험을 최소화하기 위해, 적극적 스캔을 실행하려면 유효화된 사이트 프로필이 필요합니다.
온디맨드 DAST 스캔 보기
온디맨드 스캔을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트 또는 그룹을 찾습니다.
- 보안 > 온디맨드 스캔을 선택합니다.
온디맨드 스캔은 상태별로 그룹화됩니다.
스캔 라이브러리는 사용 가능한 모든 온디맨드 스캔을 포함합니다.
온디맨드 DAST 스캔 실행
전제 조건:
- 보호된 브랜치에 대한 온디맨드 DAST 스캔을 실행할 권한이 있어야 합니다.
기본 브랜치는 자동으로 보호됩니다. 자세한 정보는
보호된 브랜치에서의 파이프라인 보안을 참조하십시오.
기존 온디맨드 스캔을 실행하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 보안 > 온디맨드 스캔을 선택합니다.
- 스캔 라이브러리 탭을 선택합니다.
-
스캔의 행에서 스캔 실행을 선택합니다.
스캔에 저장된 브랜치가 더 이상 존재하지 않는 경우, 다음을 수행해야 합니다:
- 스캔 편집.
- 새 브랜치를 선택합니다.
- 편집된 스캔을 저장합니다.
온디맨드 DAST 스캔이 실행되며, 프로젝트 대시보드에 결과가 표시됩니다.
온디맨드 스캔 만들기
온디맨드 스캔을 만들어:
- 즉시 실행합니다.
- Future에 실행될 수 있도록 저장합니다.
- 지정된 일정에 실행될 수 있도록 예약합니다.
온디맨드 DAST 스캔을 만들려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트나 그룹을 찾습니다.
- 보안 > 온디맨드 스캔을 선택합니다.
- 새 스캔을 선택합니다.
- 스캔 이름 및 설명 필드를 작성합니다.
- 브랜치 드롭다운 목록에서 원하는 브랜치를 선택합니다.
- 선택 사항. 러너 태그를 선택합니다.
-
스캐너 프로필 선택 또는 스캐너 프로필 변경을 선택하여 서랍을 열고:
- 서랍에서 스캐너 프로필을 선택하거나,
- 새 프로필을 선택하고 스캐너 프로필을 만든 후 프로필 저장을 선택합니다.
-
사이트 프로필 선택 또는 사이트 프로필 변경을 선택하여 서랍을 열고, 다음 중 하나를 선택합니다:
- 사이트 프로필 라이브러리 서랍에서 사이트 프로필을 선택하거나,
- 새 프로필을 선택하고 사이트 프로필을 만든 후 프로필 저장을 선택합니다.
-
온디맨드 스캔을 실행하려면:
- 즉시 실행하려면 저장하고 스캔 실행을 선택합니다.
- 미래에 실행하기 위해 스캔 저장을 선택합니다.
-
일정에 따라:
- 스캔 일정 사용 토글을 켭니다.
- 일정 필드를 완료합니다.
- 스캔 저장을 선택합니다.
온디맨드 DAST 스캔이 지정된 대로 실행되며 프로젝트 대시보드에 결과가 표시됩니다.
주문형 스캔 세부정보 보기
주문형 스캔의 세부정보를 보려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > On-demand scans를 선택합니다.
-
Scan library 탭을 선택합니다.
-
저장된 스캔의 행에서 More actions ()를 선택한 후 Edit을 선택합니다.
주문형 스캔 편집
주문형 스캔을 편집하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > On-demand scans를 선택합니다.
-
Scan library 탭을 선택합니다.
-
저장된 스캔의 행에서 More actions ()를 선택한 후 Edit을 선택합니다.
-
저장된 스캔의 세부정보를 편집합니다.
-
Save scan을 선택합니다.
주문형 스캔 삭제
주문형 스캔을 삭제하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > On-demand scans를 선택합니다.
-
Scan library 탭을 선택합니다.
-
저장된 스캔의 행에서 More actions ()를 선택한 후 Delete를 선택합니다.
-
확인 대화 상자에서 Delete를 선택합니다.
사이트 프로필
- 사이트 프로필 기능, 스캔 방법 및 파일 URL은 GitLab 15.6에서 GitLab.com 및 self-managed에서 활성화되었습니다.
- GraphQL 엔드포인트 경로 기능은 GitLab 15.7에서 도입되었습니다.
사이트 프로필은 DAST에 의해 스캔될 배포된 애플리케이션, 웹사이트 또는 API의 속성과 구성 세부정보를 정의합니다.
사이트 프로필은 .gitlab-ci.yml
및 주문형 스캔에서 참조될 수 있습니다.
사이트 프로필에는 다음이 포함됩니다:
-
Profile name: 스캔할 사이트에 할당하는 이름입니다. 사이트 프로필은
.gitlab-ci.yml
또는 주문형 스캔에서 참조되는 경우 이름을 변경할 수 없습니다. -
Site type: 스캔할 대상의 유형, 즉 웹사이트 또는 API 스캔입니다.
-
Target URL: DAST가 실행되는 URL입니다.
-
Excluded URLs: 스캔에서 제외할 URL의 쉼표로 구분된 목록입니다.
-
Request headers: 이름과 값을 포함한 HTTP 요청 헤더의 쉼표로 구분된 목록입니다. 이러한 헤더는 DAST가 하는 모든 요청에 추가됩니다.
-
Authentication:
-
Authenticated URL: 타겟 웹사이트에서 로그인 HTML 양식을 포함하는 페이지의 URL입니다. 사용자 이름과 비밀번호는 인증된 스캔을 생성하기 위해 로그인 양식과 함께 제출됩니다.
-
Username: 웹사이트에 인증하는 데 사용되는 사용자 이름입니다.
-
Password: 웹사이트에 인증하는 데 사용되는 비밀번호입니다.
-
Username form field: 로그인 HTML 양식에서 사용자 이름 필드의 이름입니다.
-
Password form field: 로그인 HTML 양식에서 비밀번호 필드의 이름입니다.
-
Submit form field: 선택할 때 로그인 HTML 양식을 제출하는 요소의
id
또는name
입니다.
-
-
Scan method: API 테스트를 수행하는 방법의 유형입니다. 지원되는 방법은 OpenAPI, Postman Collections, HTTP Archive (HAR) 또는 GraphQL입니다.
-
GraphQL endpoint path: GraphQL 엔드포인트의 경로입니다. 이 경로는 스캔할 테스트의 URI를 제공하기 위해 타겟 URL과 연결됩니다. GraphQL 엔드포인트는 introspection 쿼리를 지원해야 합니다.
-
File URL: OpenAPI, Postman Collection 또는 HTTP Archive 파일의 URL입니다.
-
API 사이트 유형이 선택되면, 호스트 재정의가 사용되어 스캔되는 API가 타겟과 동일한 호스트에 있도록 보장됩니다. 이는 잘못된 API에 대해 활성 스캔을 실행할 위험을 줄이기 위해 수행됩니다.
구성된 경우 요청 헤더 및 비밀번호 필드는 데이터베이스에 저장되기 전에 aes-256-gcm
을 사용하여 암호화됩니다.
이 데이터는 유효한 비밀 파일로만 읽고 복호화할 수 있습니다.
사이트 프로필 검증
사이트 프로필 검증은 잘못된 웹사이트에 대해 활성 스캔을 실행할 위험을 줄입니다.
사이트는 활성 스캔을 실행하기 전에 검증되어야 합니다.
각 사이트 검증 방법은 기능적으로 동등하므로 가장 적합한 방법을 사용하세요:
-
텍스트 파일 검증: 대상 사이트에 텍스트 파일을 업로드해야 합니다. 텍스트 파일은 프로젝트에 고유한 이름과 내용이 할당됩니다. 검증 프로세스는 파일의 내용을 확인합니다.
-
헤더 검증:
Gitlab-On-Demand-DAST
헤더가 대상 사이트에 추가되어야 하며, 프로젝트에 고유한 값이어야 합니다. 검증 프로세스는 헤더가 있는지 확인하고 그 값을 체크합니다. -
메타 태그 검증:
gitlab-dast-validation
이라는 메타 태그가 대상 사이트에 추가되어야 하며, 프로젝트에 고유한 값이어야 합니다. 페이지의<head>
섹션에 추가되었는지 확인하세요. 검증 프로세스는 메타 태그의 존재를 확인하고 그 값을 체크합니다.
사이트 프로필 생성
사이트 프로필을 생성하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
보안 > 보안 구성을 선택합니다.
-
동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로필 관리를 선택합니다.
-
새로 만들기 > 사이트 프로필을 선택합니다.
-
필드를 작성한 후 프로필 저장을 선택합니다.
사이트 프로필이 저장되어 온디맨드 스캔에 사용됩니다.
사이트 프로필 편집
참고: 사이트 프로필이 보안 정책에 연결된 경우 이 페이지에서 프로필을 편집할 수 없습니다. 더 많은 정보는 스캔 실행 정책을 참조하세요.
참고: 사이트 프로필의 대상 URL 또는 인증된 URL이 업데이트되면 해당 프로필과 관련된 요청 헤더와 비밀번호 필드가 지워집니다.
검증된 사이트 프로필의 파일, 헤더 또는 메타 태그가 편집되면 사이트의 검증 상태가 무효화됩니다.
사이트 프로필을 편집하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
보안 > 보안 구성을 선택합니다.
-
동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로필 관리를 선택합니다.
-
사이트 프로필 탭을 선택합니다.
-
프로필의 행에서 추가 작업 () 메뉴를 선택한 후 편집을 선택합니다.
-
필드를 편집한 후 프로필 저장을 선택합니다.
사이트 프로필 삭제
참고: 사이트 프로필이 보안 정책에 연결된 경우 사용자는 이 페이지에서 프로필을 삭제할 수 없습니다. 더 많은 정보는 스캔 실행 정책을 참조하세요.
사이트 프로필을 삭제하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
보안 > 보안 구성을 선택합니다.
-
동적 애플리케이션 보안 테스트(DAST) 섹션에서 프로필 관리를 선택합니다.
-
사이트 프로필 탭을 선택합니다.
-
프로필의 행에서 추가 작업 () 메뉴를 선택한 후 삭제를 선택합니다.
-
삭제 확인을 위해 삭제를 선택합니다.
사이트 프로필 검증
사이트 검증은 활성 스캔을 실행하는 데 필요합니다.
전제 조건:
-
검증 작업을 실행하기 위해 프로젝트에 러너가 있어야 합니다.
-
GitLab 서버의 인증서는 신뢰할 수 있어야 하며, 자체 서명된 인증서를 사용해서는 안 됩니다.
사이트 프로필을 검증하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
보안 > 보안 구성을 선택합니다.
-
동적 애플리케이션 보안 테스트(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 Spider 옵션이 더 이상 사용되지 않습니다.
- GitLab 17.0에 도입된 브라우저 기반의 수요 기반 DAST 스캔으로 인해 스파이더 타임아웃이 크롤 타임아웃으로 이름이 변경되었습니다.
스캐너 프로필은 보안 스캐너의 구성 세부정보를 정의합니다. 스캐너 프로필은 .gitlab-ci.yml
및 수요 기반 스캔에서 참조할 수 있습니다.
스캐너 프로필에는 다음이 포함됩니다:
-
프로필 이름: 스캐너 프로필에 부여하는 이름입니다. 예를 들어, “Spider_15”. 스캐너 프로필이
.gitlab-ci.yml
또는 수요 기반 스캔에서 참조되는 동안에는 이름을 변경할 수 없습니다. - 스캔 모드: 수동 스캔은 대상에 전송된 모든 HTTP 메시지(요청 및 응답)를 모니터링합니다. 능동 스캔은 잠재적인 취약점을 찾기 위해 대상을 공격합니다.
- 크롤 타임아웃: 크롤러가 사이트를 탐색하는 데 허용되는 최대 분 수입니다.
- 대상 타임아웃: DAST가 스캔을 시작하기 전에 사이트가 사용 가능한 상태가 될 때까지 기다리는 최대 초 수입니다.
- 디버그 메시지: DAST 콘솔 출력에 디버그 메시지를 포함합니다.
스캐너 프로필 만들기
스캐너 프로필을 만들려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > Security configuration을 선택합니다.
-
Dynamic Application Security Testing (DAST) 섹션에서 Manage profiles를 선택합니다.
-
New > Scanner profile을 선택합니다.
-
양식을 작성합니다. 각 필드에 대한 자세한 내용은 Scanner profile을 참조하세요.
-
Save profile을 선택합니다.
스캐너 프로필 편집하기
자세한 내용은 Scan execution policies를 참조하세요.
스캐너 프로필을 편집하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > Security configuration을 선택합니다.
-
Dynamic Application Security Testing (DAST) 섹션에서 Manage profiles를 선택합니다.
-
Scanner profiles 탭을 선택합니다.
-
스캐너의 행에서 More actions () 메뉴를 선택한 다음 Edit를 선택합니다.
-
양식을 편집합니다.
-
Save profile을 선택합니다.
스캐너 프로필 삭제하기
자세한 내용은 Scan execution policies를 참조하세요.
스캐너 프로필을 삭제하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Secure > Security configuration을 선택합니다.
-
Dynamic Application Security Testing (DAST) 섹션에서 Manage profiles를 선택합니다.
-
Scanner profiles 탭을 선택합니다.
-
스캐너의 행에서 More actions () 메뉴를 선택한 다음 Delete를 선택합니다.
-
Delete를 선택합니다.
감사
DAST 프로필, DAST 스캐너 프로필 및 DAST 사이트 프로필의 생성, 업데이트 및 삭제는 audit log에 포함됩니다.