

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS セキュリティエージェントの IAM ロールを作成する
<a name="create-iam-role"></a>

AWS セキュリティエージェントは、次の 3 つの方法で IAM ロールを使用します。

1.  **アプリケーションロール:** AWS セキュリティエージェントアプリケーションを作成するときに使用されます。IAM アイデンティティセンターと管理者アクセスリンクのユースケースでは、このロールを引き受けて、AWS セキュリティエージェント API とやり取りするアクセス許可を WebApp ユーザーに付与します。 APIs

1.  **ペネトレーションテストサービスロール:** 使用可能なロールのリストとしてエージェントスペースを作成するときに指定します。後で、WebApp ユーザーは侵入テストを作成するときにこれらのロールのいずれかを選択します。AWS セキュリティエージェントサービスは、テスト中に AWS リソースにアクセスするためにこのロールを引き受けます。

1.  **アクターロール:** ターゲットウェブアプリケーション (AWS API Gateway APIs など) へのリクエストを認証および認可するために使用されます。これらのロールは、エージェントスペースの作成時に提供されます。AWS セキュリティエージェントエージェントは、ターゲットアプリケーションを操作するアクターロールを引き受けます。

## アプリケーションロール
<a name="_application_role"></a>

アプリケーションロールは、サービスで AWS セキュリティエージェントアプリケーションを作成するときに使用されます。IAM アイデンティティセンターと管理者アクセスリンクの認証シナリオの場合、AWS セキュリティエージェントサービスは、このロールを引き受けて、AWS セキュリティエージェント API を操作するために必要なアクセス許可を WebApp ユーザーに付与します。 APIs

### 必要な許可
<a name="_required_permissions"></a>

このロールには、次のアクセス許可が必要です。
+ AWS Security Agent API オペレーションを呼び出す
+ アプリケーション設定データの読み取りと書き込み
+ ユーザーセッション情報にアクセスする
+ WebApp ユーザーの認証トークンを管理する

### 信頼ポリシー
<a name="_trust_policy"></a>

信頼ポリシーでは、AWS セキュリティエージェントサービスがこのロールを引き受けることを許可する必要があります。

```
{
  "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 セキュリティエージェントサービスは、AWS リソースにアクセスしてテストするためにこのロールを引き受けます。

### 必要な許可
<a name="_required_permissions_2"></a>

このロールには、ペネトレーションテスト中に AWS リソースにアクセスして分析するためのアクセス許可が必要です。
+ VPC 設定とネットワークトポロジの読み取りと説明
+ EC2 インスタンス、セキュリティグループ、ネットワーク ACLs
+ IAM ポリシーとリソースのアクセス許可を分析する
+ CloudWatch ログとメトリクスの読み取り
+ セキュリティテストに関連する AWS サービス設定にアクセスする

### 信頼ポリシー
<a name="_trust_policy_2"></a>

信頼ポリシーは、AWS セキュリティエージェントサービスが侵入テストオペレーションのためにこのロールを引き受けることを許可する必要があります。

```
{
  "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 セキュリティエージェントは、ターゲットアプリケーションエンドポイント (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 セキュリティエージェントサービスがこのロールを引き受けることを許可する必要があります。

```
{
  "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"
    }
  ]
}
```

**重要**  
ターゲットアプリケーションの認証および認可要件に一致するようにアクターロールのアクセス許可を設定します。ロールには、セキュリティエージェントが侵入テスト中にシミュレートするユーザーまたはサービスと同じレベルのアクセス権限が必要です。