

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 AWS 安全代理程式建立 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.  **演員角色：**用來驗證和授權對目標 Web 應用程式的請求 （例如 AWS API Gateway APIs)。這些角色會在客服人員空間建立期間提供。AWS Security Agent 代理程式會擔任演員角色來與您的目標應用程式互動。

## 應用程式角色
<a name="_application_role"></a>

在 服務中建立 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>

執行者角色用於驗證和授權滲透測試期間對目標 Web 應用程式的請求。這些角色會在代理程式空間建立期間提供，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 在滲透測試期間模擬的使用者或服務相同的存取層級。