

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

# サンドボックスのセットアップ
<a name="configuring-integrations-and-knowledge-sandbox"></a>

サンドボックスは、調査中にコードを記述して実行できる安全で隔離された Linux 環境を AWS DevOps エージェントに提供するプレビュー機能です。一部の問題は、推論だけで解決するよりも、コードで解決する方が速く、信頼性が高くなります。サンドボックスを使用すると、エージェントは推論を計算で補完します。例えば、大規模なログファイルの分析、一連のメトリクスにわたる統計の計算、調査中の複数のソースからのデータの解析と相関付けなどを行います。

各サンドボックスはエフェメラルで 1 つの調査にスコープされているため、エージェントが実行するコードは他のリソースから分離されたままになります。環境のアウトバウンドネットワークアクセスとプリインストールされているパッケージを制御します。デフォルトでは、サンドボックスはアウトバウンドネットワークアクセスを制限します。ネットワーク許可リストにエントリを追加するまで、 AWS サービスエンドポイントにのみ到達できます。

**注記**  
** サンドボックスはプレビュー版で利用可能で、変更される可能性があります。

プレビュー中、サンドボックスは次の AWS リージョンでのみ使用できます。
+ 米国東部 (バージニア北部) `us-east-1`
+ 米国西部 (オレゴン) `us-west-2`
+ アジアパシフィック (東京) `ap-northeast-1`
+ 欧州 (アイルランド) `eu-west-1`

詳細については、「[リージョンごとの機能の可用性](about-aws-devops-agent-supported-regions.md)」を参照してください。

## サンドボックスの仕組み
<a name="how-sandbox-works"></a>

サンドボックスがエージェントスペース用に設定されている場合、 AWS DevOps Agent は調査中に新しい Linux 環境を自動的にプロビジョニングします。この環境では、エージェントはシェルコマンドを実行してファイルを読み書きし、結果を分析に読み返すことができます。環境はその調査期間中のみ存続し、2 つの調査で共有されることはありません。

環境には、エージェントスペースに接続されている AWS アカウントの事前設定された AWS プロファイルが付属しています。エージェントは、これらのプロファイルを使用して、エージェントが既に持っているのと同じアクセス許可の範囲内で、それらのアカウントに対して AWS CLI および boto3 (AWS SDK for Python) 呼び出しを行うことができます。これにより、エージェントは調査中に AWS リソースをクエリし、プログラムでコードと関連付けることができます。

エージェントは、コマンドラインツールまたは Python および Node.js ライブラリを使用して、サンドボックスからネットワークポリシーで許可されている任意のホストとパスに HTTP リクエストを行うこともできます。

環境が実行できる操作は、次の 2 つの設定によって制御されます。
+ **ネットワークポリシー** – 環境が到達する可能性のあるホスト、HTTP メソッド、パスの明示的な許可リスト。空の許可リストは、 AWS サービスエンドポイントを除くすべてのアウトバウンドリクエストを拒否します。
+ **パッケージ** – 環境にプリインストールされている `pip`および `npm`パッケージ。エージェントのコードは、実行時に取得せずにインポートできます。

**注記**  
** プレビュー中、エージェントは調査中にのみサンドボックスを使用します。チャット、カスタムエージェント、その他の DevOps エージェント機能のサポートが間もなく開始されます。

### サンドボックスのスキル
<a name="skills-in-the-sandbox"></a>

サンドボックスを有効にすると、エージェントは仮想ファイルシステムからではなく[DevOps エージェントスキル](about-aws-devops-agent-devops-agent-skills.md)サンドボックスのファイルシステムから を読み取ります。これにより、エージェントがスキルを操作する方法が 2 つの方法で変わります。
+ **コマンドラインツールでの検索と読み取り** – エージェントは、標準のコマンドラインツールを使用して、仮想ファイルシステムを介してロードするのではなく、スキルを検索してファイルを読み取ることができます。これにより、タスクに適したスキルを見つけて適用できます。
+ **バンドルされたコードの実行** – エージェントは、スキルにバンドルされたコードを実行して適応させることができます。サンドボックスを使用しない場合、スキルには Markdown の手順、リファレンス、データファイルなどの実行不可能なファイルのみを含めることができます。サンドボックスを使用すると、スキルには、エージェントが環境で実行できる実行可能コードを含めることができます。

## [開始する前に]
<a name="before-you-begin"></a>

サンドボックスはデフォルトでは設定されていないため、オプトインするまでエージェントはコードを実行できません。次の図は、設定する前に**サンドボックス**セクションを示しています。

![空の pip パッケージ、npm パッケージ、および Allowlist エントリフィールドを含む「Sandbox が設定されていません」を示すサンドボックスセクション。](http://docs.aws.amazon.com/ja_jp/devopsagent/latest/userguide/images/221a777b9eda.png)


サンドボックスを設定する前に、以下を確認してください。
+ エージェントのコードがある場合は、ホスト、HTTP メソッド、およびパスに到達する必要があります。許可リストエントリを追加するまで、サンドボックスは AWS サービスエンドポイントにのみ到達できます。
+ 環境にプリインストールする `pip`および `npm`パッケージ。

## エージェントスペースのサンドボックスを設定する
<a name="configure-sandbox-for-an-agent-space"></a>

1.  AWS マネジメントコンソールにサインインし、 AWS DevOps エージェントコンソールを開きます。

1. エージェントスペースを選択し、**機能**タブを選択します。

1. **サンドボックス**セクションで、**設定** を選択します。

1. 以下のセクションで説明するように、ネットワークポリシーとプリインストールされたパッケージを設定します。

1. 設定を保存します。

サンドボックスを設定すると、**サンドボックス**セクションに、プリインストールされている`pip`パッケージと`npm`パッケージ、および許可リストエントリの数が表示されます。後で設定を削除するには、[「サンドボックスの削除](#remove-sandbox)」を参照してください。

### ネットワークポリシーを設定する
<a name="configure-the-networking-policy"></a>

サンドボックスは、アウトバウンドリクエストを明示的な許可リストに制限します。空の許可リストは、 AWS サービスエンドポイントを除くすべてのアウトバウンドリクエストを拒否します。環境が他のホストに到達できるようにするには、そのホストの許可リストエントリを追加します。

**エントリの追加**を選択し、許可リストエントリに以下を設定します。
+ **ホストパターン** – エントリが適用されるホスト。部分的なラベルマッチングはサポートされていません。次のいずれかの形式を使用します。
  + `**` – すべてのホスト。
  + `*.example.com` – 1 つのサブドメインレベル。
  + `**.example.com` – サブドメインの深さ。
  + `example.com` – 正確なホスト。
+ **HTTP メソッド** – このホストで許可される HTTP メソッド。`OPTIONS`ドロップダウンリストから、 `GET`や などの 1 つ以上のメソッドを選択します。
+ **パスパターン** – このホストで許可されるパス。**パスの追加**を選択して、1 つ以上のパターンを追加します。
  + `*` は、 などの 1 つのセグメントに一致します`/repos/*/pulls`。
  + などの部分一致は許可されます`/users/aws-*/`。
  + `/**` はすべてのサブパスを許可します。
  + クエリパラメータは無視されます。

次の図は、完了した許可リストエントリを示しています。

![ホストパターン *.github.com、GET および OPTIONS メソッド、パスパターン /** の許可リストエントリ。](http://docs.aws.amazon.com/ja_jp/devopsagent/latest/userguide/images/02356ee2008f.png)


エージェントのコードが到達する必要がある追加のホストごとに**エントリを追加**を選択します。エントリを削除するには、**削除**を選択します。

### プリインストールされたパッケージを設定する
<a name="configure-pre-installed-packages"></a>

**パッケージ**セクションで、サンドボックス環境にプレインストールする パッケージ`pip`と `npm`パッケージを指定します。その後、エージェントのコードはこれらのパッケージを直接インポートでき、環境はパッケージレジストリへのアウトバウンドアクセスを必要としません。次の図は、サンプル**パッケージ**が設定されたパッケージセクションを示しています。

![pip パッケージリクエスト、pandas、npm パッケージアキシオスを含むパッケージセクション。それぞれに Remove ボタンがあります。](http://docs.aws.amazon.com/ja_jp/devopsagent/latest/userguide/images/8035f788fb71.png)

+ **pip packages** – **パッケージを追加**を選択し、プリインストールする Python パッケージごとに `pandas``requests`や などのパッケージ名を入力します。
+ **npm パッケージ** – **パッケージを追加**を選択し、プリインストールする各 Node.js パッケージに `axios`などのパッケージ名を入力します。

パッケージを削除するには、パッケージの横にある**削除**を選択します。

## サンドボックスの削除
<a name="remove-sandbox"></a>

オプトアウトするには、サンドボックス設定を削除します。エージェントスペースを選択し、**機能**タブに移動し、**サンドボックス**セクションで**削除**を選択します。設定を削除すると、エージェントは新しい調査のためにサンドボックス環境をプロビジョニングしなくなります。

## サンドボックス設定の制限
<a name="sandbox-configuration-limits"></a>

プレビュー中の各サンドボックス設定には、次の制限が適用されます。


| 制限 | 値 | 
| --- | --- | 
| pip パッケージ | 50 | 
| npm パッケージ | 50 | 
| ネットワーク許可リストエントリ | 100 | 
| 許可リストエントリあたりのパスパターン | 50 | 
| 許可リストエントリあたりの HTTP メソッド | 少なくとも 1 | 

## セキュリティに関する考慮事項
<a name="security-considerations"></a>

AWS DevOps エージェントは、各調査を独自のサンドボックス環境で分離するため、ある調査のコードとデータが別の調査と共有されることはありません。 AWS DevOps エージェントは、サンドボックスから出るすべてのトラフィックを検査およびフィルタリングして、安全で許可されたリクエストのみが送信先に到達するようにします。 AWS サービスエンドポイントとネットワーク許可リストに一致するホストへのリクエストを許可し、他のすべてのリクエストを拒否します。

エージェントはサンドボックスでコードを生成して実行します。設定するときは、次の点に注意してください。
+ **許可リストは最小限に抑えてください。**空の許可リストでは、サンドボックスは AWS サービスエンドポイントのみに到達します。許可リストエントリは、エージェントが必要とする特定のホスト、メソッド、パスに対してのみ追加します。
+ **許可リストエントリの範囲を絞り込みます。**`**` や などの広範なワイルドカードではなく、正確なホストパターンと特定のパスパターンを使用し`/**`、必要な HTTP メソッドのみを付与します。
+ **レジストリの許可リストの代わりにパッケージをプリインストールします。**エージェントが必要とするパッケージをプリインストールする場合、実行時にパッケージレジストリへのアウトバウンドアクセスを許可しないようにします。

 AWS DevOps エージェントセキュリティモデルの詳細については、「」を参照してください[AWS DevOps エージェントセキュリティ](aws-devops-agent-security.md)。