

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

# AWS Security Agent에 대한 IAM 역할 생성
<a name="create-iam-role"></a>

AWS Security Agent는 다음 세 가지 방법으로 IAM 역할을 사용합니다.

1.  **애플리케이션 역할:** AWS Security Agent 애플리케이션을 생성할 때 사용됩니다. IAM Identity Center 및 관리자 액세스 링크 사용 사례의 경우 서비스는이 역할을 수임하여 WebApp 사용자에게 AWS Security Agent APIs와 상호 작용할 수 있는 권한을 부여합니다.

1.  **침투 테스트 서비스 역할:** 에이전트 공간을 생성할 때 사용 가능한 역할 목록으로 지정됩니다. 나중에 WebApp 사용자는 침투 테스트를 생성할 때 이러한 역할 중 하나를 선택합니다. AWS Security Agent 서비스는이 역할을 수임하여 테스트 중에 AWS 리소스에 액세스합니다.

1.  **액터 역할:** 대상 웹 애플리케이션(예: AWS API Gateway APIs)에 대한 요청을 인증하고 권한을 부여하는 데 사용됩니다. 이러한 역할은 에이전트 공간 생성 중에 제공됩니다. AWS Security Agent 에이전트는 대상 애플리케이션과 상호 작용하기 위해 액터 역할을 수임합니다.

## 애플리케이션 역할
<a name="_application_role"></a>

Application Role은 서비스에서 AWS Security Agent 애플리케이션을 생성할 때 사용됩니다. IAM Identity Center 및 관리자 액세스 링크 인증 시나리오의 경우 AWS Security Agent 서비스는이 역할을 수임하여 WebApp 사용자에게 AWS Security Agent APIs와 상호 작용하는 데 필요한 권한을 부여합니다.

### 필수 권한
<a name="_required_permissions"></a>

이 역할에는 다음과 같은 권한이 필요합니다.
+ AWS Security Agent API 작업 호출
+ 애플리케이션 구성 데이터 읽기 및 쓰기
+ 사용자 세션 정보 액세스
+ WebApp 사용자의 인증 토큰 관리

### 신뢰 정책
<a name="_trust_policy"></a>

신뢰 정책은 AWS Security Agent 서비스가이 역할을 수임하도록 허용해야 합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "securityagent.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

### 권한 정책
<a name="_permissions_policy"></a>

역할에는 다음에 대한 권한이 포함되어야 합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "securityagent:GetApplication",
        "securityagent:UpdateApplication",
        "securityagent:ListAgentInstances",
        "securityagent:CreatePentestSession"
      ],
      "Resource": "arn:aws:securityagent:*:*:application/*"
    }
  ]
}
```

**참고**  
특정 애플리케이션 요구 사항과 최소 권한 원칙에 따라 권한을 사용자 지정합니다.

## 침투 테스트 서비스 역할
<a name="_penetration_test_service_role"></a>

침투 테스트 서비스 역할은 에이전트 공간을 사용 가능한 역할 목록으로 생성할 때 지정됩니다. WebApp 사용자는 침투 테스트를 생성할 때 이러한 역할 중 하나를 선택합니다. 그런 다음 AWS Security Agent 서비스는이 역할을 수임하여 AWS 리소스에 액세스하고 테스트합니다.

### 필수 권한
<a name="_required_permissions_2"></a>

이 역할에는 침투 테스트 중에 AWS 리소스에 액세스하고 분석할 수 있는 권한이 필요합니다.
+ VPC 구성 및 네트워크 토폴로지 읽기 및 설명
+ EC2 인스턴스, 보안 그룹 및 네트워크 ACLs 검사
+ IAM 정책 및 리소스 권한 분석
+ CloudWatch 로그 및 지표 읽기
+ 보안 테스트와 관련된 AWS 서비스 구성에 액세스

### 신뢰 정책
<a name="_trust_policy_2"></a>

신뢰 정책은 AWS Security Agent 서비스가 침투 테스트 작업을 위해이 역할을 수임하도록 허용해야 합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "securityagent.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "your-external-id"
        }
      }
    }
  ]
}
```

**참고**  
교차 계정 또는 서비스 액세스를 허용할 때 추가 보안을 위해 외부 ID를 사용합니다.

### 권한 정책
<a name="_permissions_policy_2"></a>

역할에는 AWS 리소스에 대한 읽기 전용 액세스가 포함되어야 합니다. 다음 관리형 정책을 사용하는 것이 좋습니다.
+  `SecurityAudit` - 보안 감사를 위한 AWS 관리형 정책
+  `ViewOnlyAccess` - 대부분의 AWS 서비스에 대한 읽기 전용 액세스

또는 특정 권한이 있는 사용자 지정 정책을 생성합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "vpc:Describe*",
        "iam:Get*",
        "iam:List*",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "cloudwatch:Describe*",
        "cloudwatch:Get*",
        "cloudwatch:List*",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": "*"
    }
  ]
}
```

**중요**  
침투 테스트 범위에 필요한 최소 권한만 부여합니다. 보안 테스트에 포함할 AWS 서비스에 따라 권한을 검토하고 조정합니다.

## 액터 역할
<a name="_actor_role"></a>

액터 역할은 침투 테스트 중에 대상 웹 애플리케이션에 대한 요청을 인증하고 승인하는 데 사용됩니다. 이러한 역할은 에이전트 공간 생성 중에 제공되며 AWS Security Agent 에이전트는 이러한 역할이 대상 애플리케이션 엔드포인트(예: AWS API Gateway APIs, Lambda 함수 URLs 또는 기타 AWS 호스팅 애플리케이션)와 상호 작용한다고 가정합니다.

### 필수 권한
<a name="_required_permissions_3"></a>

이 역할에는 다음과 같은 권한이 필요합니다.
+ API Gateway 엔드포인트 호출
+ Lambda 함수 실행
+ 애플리케이션별 AWS 리소스에 액세스
+ 대상 애플리케이션의 인증 메커니즘으로 인증
+ 애플리케이션 엔드포인트에 대해 HTTP 작업 수행

### 신뢰 정책
<a name="_trust_policy_3"></a>

신뢰 정책은 AWS Security Agent 에이전트 서비스가이 역할을 수임하도록 허용해야 합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "securityagent.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "your-external-id"
        }
      }
    }
  ]
}
```

### 권한 정책
<a name="_permissions_policy_3"></a>

권한은 대상 애플리케이션 아키텍처에 따라 다릅니다. 다음은 일반적인 시나리오의 예입니다.

#### API Gateway 애플리케이션의 경우
<a name="_for_api_gateway_applications"></a>

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": "arn:aws:execute-api:us-east-1:*:your-api-id/*"
    }
  ]
}
```

#### Lambda 함수 URLs 경우
<a name="_for_lambda_function_urls"></a>

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:InvokeFunctionUrl",
        "lambda:InvokeFunction"
      ],
      "Resource": "arn:aws:lambda:us-east-1:*:function:your-function-name"
    }
  ]
}
```

#### Cognito 인증을 사용하는 Application Load Balancer의 경우
<a name="_for_application_load_balancer_with_cognito_authentication"></a>

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cognito-idp:InitiateAuth",
        "cognito-idp:RespondToAuthChallenge"
      ],
      "Resource": "arn:aws:cognito-idp:us-east-1:*:userpool/your-user-pool-id"
    }
  ]
}
```

**중요**  
대상 애플리케이션의 인증 및 권한 부여 요구 사항에 맞게 액터 역할 권한을 구성합니다. 역할은 Security Agent가 침투 테스트 중에 시뮬레이션할 사용자 또는 서비스와 동일한 수준의 액세스 권한을 가져야 합니다.