

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 침투 테스트 생성
<a name="perform-penetration-test"></a>

테스트 범위, 대상 도메인 및 AWS 리소스 액세스를 구성하여 웹 애플리케이션에 대한 자동 침투 테스트를 설정합니다. 침투 테스트는 확인된 도메인에 대한 실제 공격 시나리오를 시뮬레이션하여 애플리케이션 실행의 보안 취약성을 식별하는 데 도움이 됩니다.

AWS Security Agent는 구성된 범위 및 권한을 기반으로 웹 애플리케이션에 대한 포괄적인 보안 테스트를 수행하여 공격자가 발견하기 전에 악용 가능한 취약성에 대한 자세한 결과를 제공합니다.

이 절차에서는 테스트 세부 정보를 구성하고, 테스트 범위를 정의하고, 필요한 권한을 설정하여 침투 테스트를 생성합니다.

## 사전 조건
<a name="_prerequisites"></a>

시작하기 전에 다음을 갖추었는지 확인하세요.
+ AWS Security Agent 웹 애플리케이션에 대한 액세스
+ 테스트를 위해 하나 이상의 확인된 도메인
+ AWS Security Agent에 대한 적절한 권한이 있는 IAM 역할
+ 애플리케이션의 아키텍처 및 중요 경로 이해

## 침투 테스트 생성 시작
<a name="_start_creating_a_penetration_test"></a>

에이전트 웹 앱에서 침투 테스트 생성 페이지로 이동합니다.

1. AWS Security Agent 웹 애플리케이션에 로그인합니다.

1. **침투 테스트** 섹션으로 이동합니다.

1. **침투 테스트 생성을** 선택합니다.

**작은 정보**  
확인된 도메인만 침투 테스트에 포함될 수 있습니다. 관리자에게 AWS 관리 콘솔에서 도메인을 확인하도록 요청합니다. [침투 테스트를 위한 애플리케이션 도메인 활성화](enable-test-domain.md)을(를) 참조하세요.

## 침투 테스트 이름 지정
<a name="_name_your_penetration_test"></a>

이 침투 테스트의 목적과 범위를 식별하는 데 도움이 되는 설명 이름을 제공합니다.

1. **침투 테스트 이름** 필드에 침투 테스트를 설명하는 이름을 입력합니다.  
**Example**  

   이름은 테스트 중인 애플리케이션, 환경 또는 구성 요소를 명확하게 식별해야 합니다. 최대 100자입니다.

## 침투 테스트 범위 구성
<a name="_configure_penetration_test_scope"></a>

테스트할 도메인 및 URL 경로를 정의하고 테스트 경계를 제어하도록 선택적 제외를 구성합니다.

### 대상 도메인 추가
<a name="_add_target_domains"></a>

보안 취약성을 적극적으로 테스트할 확인된 도메인을 지정합니다.

1. **침투 테스트 범위** 섹션에서 **대상 URLs** 찾습니다.

1. **확인된 도메인** 섹션을 확장하여 사용 가능한 도메인을 확인합니다.

1. **대상 URL** 필드에 대상 도메인 URL을 입력합니다.
**중요**  
확인된 도메인만 테스트할 수 있습니다. URL은 AWS Security Agent에서 이전에 확인한 도메인 아래에 있어야 합니다. 확인된 도메인의 하위 도메인은 별도의 확인이 필요하지 않습니다.

1. 여러 대상 도메인을 추가하려면:

   1. **도메인 추가**를 선택합니다.

   1. 각 추가 도메인 URL을 입력합니다.

1. 대상 도메인을 제거하려면 도메인 URL 옆의 **제거**를 선택합니다.

**작은 정보**  
최상의 결과를 얻으려면 APIs, 인증 서비스 및 콘텐츠 전송을 위한 하위 도메인을 포함하여 애플리케이션 사용자 흐름의 일부인 모든 도메인을 포함하세요. 확인된 상위 도메인의 하위 도메인은 별도의 확인이 필요하지 않습니다.

### 위험 유형 제외(선택 사항)
<a name="_exclude_risk_types_optional"></a>

애플리케이션에 적용되지 않는 경우 테스트에서 제외할 특정 위험 범주를 선택합니다.

1. **위험 유형 제외** 필드를 찾습니다.

1. 드롭다운을 선택하여 사용 가능한 위험 유형을 확인합니다.

1. 침투 테스트에서 제외할 위험 유형을 하나 이상 선택합니다.
**참고**  
위험 유형을 제외하면 테스트 범위가 제한됩니다. 애플리케이션과 관련이 없거나 별도로 테스트하려는 위험 유형만 제외합니다.

### out-of-scope URL 경로 추가(선택 사항)
<a name="_add_out_of_scope_url_paths_optional"></a>

침투 테스트 중에 테스트해서는 안 되는 URL 경로를 지정합니다. AWS Security Agent는 지정된 경로와 그 아래에 중첩된 모든 경로를 제외합니다. 예를 들어 범위를 out-of-scope URL`https://example.com/admin`로를 추가하는 경우 `https://example.com/admin/tools`도 out-of-scope.

1. **Out-of-scope URLs** 섹션을 찾습니다.

1. **Out-of-scope URLs** 입력 필드에 제외할 URL 경로(예: `/admin/delete` 또는 `/api/reset`)를 입력합니다.
**주의**  
Out-of-scope 경로는 취약성에 대해 테스트되지 않습니다. 파괴적 작업 또는 민감한 관리 함수와 같이 테스트 중에 액세스해서는 안 되는 경로만 제외해야 합니다.

1. out-of-scope 경로를 여러 개 추가하려면:

   1. **URL 추가**를 선택합니다.

   1. 각 추가 경로를 입력합니다.

1. 경로를 제거하려면 경로 옆의 **제거**를 선택합니다.

### 액세스 가능한 도메인 추가(선택 사항)
<a name="_add_accessible_domains_optional"></a>

테스트에 필요하지만 취약성 테스트의 대상이 아닌 도메인을 지정합니다.

1. **액세스 가능한 URLs** 섹션을 찾습니다.

1. **액세스 가능한 URLs** 입력 필드에 테스트 중에 액세스할 수 있어야 하는 도메인을 입력합니다.
**참고**  
대상 도메인 외부에 있는 타사 서비스(예: Okta, Auth0, Stripe)에 대한 액세스 가능한 도메인을 추가합니다. 이는 AWS Security Agent가 테스트 중에 로그인 및 탐색을 위해 이러한 URLs에 액세스할 수 있도록 하기 위해 필요합니다. AWS Security Agent는 이러한 도메인을 침투 테스트하지 않으며 액세스 목적으로만 사용됩니다. 액세스 가능한 도메인은 대상과 다른 도메인에 속해 있더라도 소유권 확인이 필요하지 않습니다. 대상 도메인에만 확인된 소유권이 필요합니다.

1. 액세스 가능한 도메인을 여러 개 추가하려면:

   1. **URL 추가**를 선택합니다.

   1. 각 추가 도메인을 입력합니다.

1. 도메인을 제거하려면 도메인 옆의 **제거**를 선택합니다.

### 사용자 지정 HTTP 헤더 추가(선택 사항)
<a name="_add_custom_http_headers_optional"></a>

침투 테스트 중에 AWS Security Agent의 요청에 추가할 사용자 지정 HTTP 헤더를 지정합니다.

1. **사용자 지정 HTTP 헤더** 섹션을 찾습니다.

1. **사용자 지정 HTTP 헤더** 입력 필드에 아웃바운드 요청과 연결할 헤더 이름과 값을 입력합니다.
**참고**  
다른 사용자 지정 **사용자 에이전트** 헤더 값을 지정하지 않는 한 AWS Security Agent는 기본적으로 **사용자 에이전트** 세트에 대한 사용자 지정 헤더를 **securityagent**에 추가합니다.

1. 여러 사용자 지정 헤더를 추가하려면:

   1. **헤더 추가(Add header)**를 선택합니다.

   1. 각 추가 사용자 지정 헤더를 입력합니다.

1. 사용자 지정 헤더를 제거하려면 헤더 옆의 **제거**를 선택합니다.

## IAM 역할 구성
<a name="_configure_iam_role"></a>

이 침투 테스트를 위해 미리 구성된 서비스 역할을 선택합니다. AWS Security Agent는 에이전트 스페이스를 설정할 때 관리자가 IAM 역할을 구성하는 에이전트 스페이스 기반 권한 모델을 사용합니다. 이미 구성되어 사용할 준비가 된 역할 중에서 선택합니다.

1. **권한** 섹션에서 **서비스 역할** 드롭다운을 찾습니다.

1. AWS Security Agent에 필요한 AWS 리소스에 대한 액세스 권한을 부여하는 IAM 역할을 선택합니다.
**중요**  
선택한 IAM 역할에는 VPC 리소스, CloudWatch Logs 및 침투 테스트에 필요한 기타 AWS 서비스에 액세스할 수 있는 권한이 있어야 합니다. 역할이 AWS Security Agent와 올바른 신뢰 관계를 맺고 있는지 확인합니다.

1. **CloudWatch 로그 그룹** 드롭다운을 찾습니다.

1. 침투 테스트 로그가 저장될 로그 그룹을 선택합니다(선택 사항).
**참고**  
선택한 CloudWatch 로그 그룹은 요청, 수신된 응답 및 발견된 취약성을 포함하여 침투 테스트 실행에 대한 자세한 로그를 저장합니다.  
로그 그룹을 선택하지 않으면 새 CloudWatch 로그 그룹이 `/aws/securityagent` 접두사와 함께 자동으로 생성되어 침투 테스트 로그를 저장합니다.

## 자동 코드 수정
<a name="_automatic_code_remediation"></a>

**자동 문제 해결 활성화** 확인란을 선택합니다.

**중요**  
소스 코드 리포지토리의 보안 조사 결과를 해결하기 위해 AWS Security Agent는 리포지토리에 풀 요청을 제출할 수 있습니다. 풀 요청은 리포지토리에 대한 읽기 액세스 권한이 있는 모든 사용자에게 표시될 수 있습니다.

## VPC 리소스 구성(선택 사항)
<a name="_configure_vpc_resources_optional"></a>

대상 도메인이 프라이빗이고 VPC 내에서 호스팅되는 경우 AWS Security Agent가 침투 테스트를 실행해야 하는 VPC 설정을 구성합니다. 이 단계는 공개적으로 액세스할 수 없는 애플리케이션에만 필요합니다.

**참고**  
대상 도메인에 공개적으로 액세스할 수 있는 경우이 단계를 건너뜁니다. VPC 구성은 Amazon Virtual Private Cloud 내에서 호스팅되는 프라이빗 애플리케이션을 테스트하는 경우에만 필요합니다.

침투 테스트 환경의 VPC, 서브넷 및 보안 그룹을 선택합니다.

1. **VPC** 섹션에서 **VPC ID** 드롭다운을 찾습니다.

1. 대상 도메인이 호스팅되는 VPC를 선택합니다.
**중요**  
선택한 VPC에는 3단계에서 지정한 대상 도메인이 포함되어야 합니다. VPC에 AWS Security Agent가 애플리케이션에 액세스할 수 있도록 허용하는 적절한 라우팅 및 네트워크 구성이 있는지 확인합니다.

1. **서브넷 드롭다운을** 찾습니다.

1. 침투 테스트를 실행해야 하는 서브넷을 하나 이상 선택합니다.
**참고**  
대상 애플리케이션에 대한 네트워크 액세스 권한이 있는 서브넷을 선택합니다. 침투 테스트는 이러한 서브넷에 배포된 리소스에서 실행됩니다.

1. **보안 그룹** 드롭다운을 찾습니다.

1. 침투 테스트에 대한 네트워크 액세스를 제어하는 보안 그룹을 선택합니다.
**중요**  
선택한 보안 그룹은 대상 도메인 및 액세스 가능한 도메인으로의 아웃바운드 트래픽을 허용해야 합니다. 보안 그룹 규칙이 포괄적인 테스트에 필요한 네트워크 액세스를 허용하는지 확인합니다.

## 인증 자격 증명 구성(선택 사항)
<a name="_configure_authentication_credentials_optional"></a>

대상 도메인에 인증이 필요한 경우 AWS Security Agent가 침투 테스트 중에 애플리케이션의 보호 영역에 액세스할 수 있도록 자격 증명을 제공합니다. 이 단계는 사용자 인증이 필요한 애플리케이션에만 필요합니다.

**참고**  
대상 도메인에 인증이 필요하지 않거나 테스트하려는 모든 영역에 공개적으로 액세스할 수 있는 경우이 단계를 건너뜁니다. 애플리케이션의 인증된 섹션을 테스트하기 위해 AWS Security Agent가 필요한 경우에만 자격 증명을 구성합니다.

### 자격 증명 추가
<a name="_add_credentials"></a>

AWS Security Agent가 애플리케이션에 액세스하는 데 사용할 인증 자격 증명을 제공합니다.

1. **자격 증명 \#1** 섹션에서 자격 증명 입력 방법을 선택합니다.
   +  자격 **증명 입력** - 자격 증명을 AWS Security Agent에 직접 입력합니다.
   +  **고급 설정** - 민감한 자격 증명 정보의 경우 AWS Secrets Manager 또는 AWS Lambda 함수와 같은 고급 옵션을 사용합니다. 세부 정보는 [침투 테스트를 위한 인증 자격 증명 제공](provide-testing-credentials.md) 섹션을 참조하세요.
**작은 정보**  
프로덕션 환경 또는 민감한 자격 증명의 경우 고급 설정 옵션을 사용하여 AWS Secrets Manager 또는 Systems Manager Parameter Store에 저장된 자격 증명을 안전하게 참조하는 것이 좋습니다.

### 자격 증명 세부 정보 입력
<a name="_enter_credential_details"></a>

인증된 계정의 사용자 이름과 암호를 입력합니다.

1. **사용자 이름** 필드에 인증할 사용자 이름을 입력합니다.

1. **암호** 필드에 인증을 위한 암호를 입력합니다.
**중요**  
제공한 자격 증명에 테스트하려는 영역에 적합한 액세스 수준이 있는지 확인합니다. 자격 증명은 관리 권한이 아닌 일반적인 사용자의 액세스 수준을 나타내야 합니다.

### 액세스 도메인 선택
<a name="_select_access_domain"></a>

인증에 이러한 자격 증명을 사용할 대상 도메인을 지정합니다.

1. **액세스 도메인** 드롭다운에서 이러한 자격 증명을 사용할 도메인을 선택합니다.
**참고**  
다른 자격 증명이 필요한 대상 도메인이 여러 개 있는 경우이 자격 증명 구성을 완료한 후 **다른 자격 증명 추가**를 클릭하여 자격 증명 세트를 추가할 수 있습니다.

### 에이전트 로그인 프롬프트 구성(선택 사항)
<a name="_configure_agent_login_prompt_optional"></a>

애플리케이션의 인증 프로세스를 통해 AWS Security Agent를 안내하는 지침을 제공합니다.

1. 인증 흐름에 특정 지침이 필요한 경우 **에이전트 로그인 프롬프트** 섹션을 확장합니다.

1. 애플리케이션의 로그인 흐름에서 제공된 자격 증명을 사용하는 방법을 설명하는 지침을 입력합니다.
**참고**  
에이전트 로그인 프롬프트는 자격 증명을 애플리케이션에 적용하는 방법을 에이전트에게 알려줍니다. 이는 복잡한 인증 흐름, 다단계 로그인 프로세스 또는 비표준 로그인 절차가 있는 애플리케이션에 유용합니다. "/로그인으로 이동, '이메일' 필드에 사용자 이름 입력, 암호 입력, '로그인' 선택"과 같은 step-by-step 지침을 포함합니다.

### 여러 자격 증명 추가(선택 사항)
<a name="_add_multiple_credentials_optional"></a>

애플리케이션에 여러 자격 증명 세트가 필요하거나 다른 도메인에 별도의 인증이 필요한 경우 자격 증명 세트를 추가합니다.

1. 첫 번째 자격 증명 구성을 완료한 후 **다른 자격 증명 추가**를 선택합니다.

1. 각 추가 자격 증명 세트에 대해 자격 증명 구성 단계를 반복합니다.

1. 자격 증명 세트를 제거하려면 자격 증명 헤더 옆의 **제거**를 선택합니다.

**작은 정보**  
다양한 사용자 역할을 테스트하거나, 여러 인증된 도메인에 액세스하거나, 애플리케이션에서 역할 기반 액세스 제어를 확인할 때 여러 자격 증명을 구성합니다.

## 추가 리소스 연결(선택 사항)
<a name="_attach_additional_resources_optional"></a>

AWS Security Agent가 보다 철저하고 정확한 침투 테스트를 수행할 수 있도록 보조 리소스를 제공합니다. 추가 리소스에는 애플리케이션에 대한 컨텍스트를 제공하는 아키텍처 다이어그램, API 설명서, 구성 파일, GitHub 리포지토리 또는 S3-hosted 자료가 포함될 수 있습니다.

**참고**  
추가 리소스는 선택 사항이지만 권장됩니다. 애플리케이션에 대한 포괄적인 정보를 제공하면 철저한 테스트 범위를 보장하고, 오탐을 줄이고, 실행 가능한 결과를 얻을 수 있습니다.

### 침투 테스트에 리소스 추가
<a name="_add_resources_to_the_penetration_test"></a>

기존 리소스를 선택하거나 침투 테스트를 안내하는 데 도움이 되는 새 파일을 업로드합니다.

1. **연결된 리소스** 섹션에서 다음을 수행할 수 있습니다.
   + AWS Security Agent에 이미 연결된 리소스(예: GitHub 리포지토리 또는 S3 버킷) 중에서 선택하려면 **사용 가능 중에서 선택을** 선택합니다.
   + **업로드**를 선택하여 로컬 시스템에서 직접 새 파일을 추가합니다.

**작은 정보**  
유용한 리소스에는 API 설명서, 아키텍처 다이어그램, OpenAPI/Swagger 사양, 구성 파일, 인증 흐름도 및 애플리케이션의 구조와 동작을 설명하는 기타 자료가 포함됩니다.

### 사용 가능한 리소스 중에서 선택
<a name="_select_from_available_resources"></a>

AWS Security Agent와 이미 통합된 리소스 중에서 선택합니다.

1. **기존 리소스에서 선택을** 선택합니다.

1. 다음과 같이 연결된 소스에서 사용 가능한 리소스 목록을 찾습니다.
   + GitHub 리포지토리 **탭 아래의 GitHub 리포지토리** 
   + S3 버킷
   + 이전에 업로드한 파일
   + 설명서 리포지토리

1. 침투 테스트에 포함할 리소스를 선택합니다.

1. **침투 테스트에 추가**를 선택하여 선택한 리소스를 연결합니다.

**Example**  
AWS Security Agent가 애플리케이션 컨텍스트를 이해하고 풀 요청을 통해 ready-to-implement할 수 있는 코드 수정을 생성할 수 있도록 관련 GitHub 리포지토리를 선택하고 Pentest에 추가하는 것이 좋습니다(활성화된 경우).

**참고**  
사용 가능한 소스에서 선택한 리소스는 원래 위치와 동기화된 상태로 유지됩니다. GitHub 리포지토리 또는 S3 파일을 업데이트하는 경우 침투 테스트는 업데이트된 버전을 사용합니다.

**참고**  
pentest와 연결된 프라이빗 VPC와 GitHub 리포지토리가 구성된 경우 GitHub 리소스를 가져오기 위해 프라이빗 VPC를 통해 GitHub에 액세스할 수 있는지 확인합니다. 대부분의 경우 [VPC NAT 게이트웨이](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)를 통한 아웃바운드 트래픽이 기본적으로 허용되는지 확인하거나 GitHub IPs([GitHub Meta API 엔드포인트](https://api.github.com/meta) 참조).

### 새 리소스 업로드
<a name="_upload_new_resources"></a>

로컬 시스템에서 직접 파일을 업로드하거나 AWS Security Agent에 일반 텍스트 콘텐츠를 제공합니다.

1. **업로드**를 선택합니다.

1. 다음 입력 방법 중 하나를 선택합니다.
   +  **로컬 파일 업로드** - 로컬 시스템에서 파일을 하나 이상 선택합니다.
   +  **일반 텍스트 붙여넣기** - 텍스트 콘텐츠를 입력 필드에 직접 입력하거나 붙여넣습니다. **업로드**를 선택합니다.

1. 그런 다음 **추가**를 선택하여 업로드를 완료합니다.

1. 업로드된 리소스는 **연결된 리소스** 테이블에 나타납니다.

**작은 정보**  
별도의 파일을 생성하지 않고 API 엔드포인트 목록, URL 패턴, 테스트 지침 또는 기타 텍스트 기반 정보를 빠르게 제공하려는 경우 일반 텍스트 옵션을 사용합니다.

**중요**  
업로드된 파일 및 붙여넣은 콘텐츠에 프로덕션 자격 증명, 프라이빗 키 또는 개인 식별 정보(PII)와 같은 민감한 정보가 포함되어 있지 않은지 확인합니다. 삭제된 버전의 구성 파일 및 설명서를 사용합니다.

### 기존 리소스 연결
<a name="_connect_existing_resources"></a>

기존 리소스는 이전에 AWS Security Agent에 업로드한 리소스, S3 버킷 및 통합 GitHub 리포지토리에서 가져올 수 있습니다. **기존 리소스에서 선택을** 선택하여 선택합니다.

### 연결된 리소스 관리
<a name="_manage_connected_resources"></a>

침투 테스트에 연결된 리소스를 검토, 구성 및 제거합니다.

**연결된 리소스** 테이블에는 침투 테스트에 포함된 모든 리소스가 다음 정보와 함께 표시됩니다.
+  **이름** - 파일 이름 또는 리소스 식별자
+  **유형** - 리소스 범주(업로드된 파일, S3 리소스, GitHub 리포지토리 등)

리소스를 관리하려면:

1. 확인란을 사용하여 리소스를 하나 이상 선택합니다.

1. **침투 테스트에서 제거**를 선택하여 선택한 리소스를 분리합니다.

**참고**  
열 헤더를 클릭하여 이름 또는 유형별로 테이블을 정렬할 수 있습니다. 이렇게 하면 여러 파일로 작업할 때 리소스를 구성하는 데 도움이 됩니다.

## 침투 테스트 생성
<a name="_create_the_penetration_test"></a>

침투 테스트 구성을 완료하고 시작합니다.

모든 설정을 구성한 후 침투 테스트를 생성할 준비가 되었습니다.

1. 모든 구성 섹션을 검토하여 정확성을 확인합니다.

1. 다음 옵션 중 하나를 선택하세요.
   + 즉시 실행하지 않고 구성을 저장하려면 **침투 생성을** 선택합니다.
   + **생성 및 실행**을 선택하여 구성을 저장하고 즉시 침투 테스트를 시작합니다.
   + 침투 테스트 구성을 취소하려면 **취소**를 선택합니다.

**중요**  
침투 테스트를 실행하기 전에 다음을 확인합니다.  
모든 대상 도메인이 올바르게 확인되고 액세스할 수 있음
IAM 역할에 적절한 권한이 있음
Out-of-scope 경로가 제대로 구성되어 테스트 중단 작업을 방지합니다.
모든 대상 도메인에서 보안 테스트를 수행할 수 있는 권한이 있음

**참고**  
침투 테스트가 시작된 후 **침투 테스트 실행** 섹션에서 진행 상황을 모니터링할 수 있습니다. 테스트를 완료하는 데 몇 시간이 걸릴 수 있습니다. 대부분의는 애플리케이션의 범위와 복잡성에 따라 16시간 이내에 완료됩니다.