本文の内容は、docs.sysdig.com上のAWS Fargate Serverless Agentsを元に日本語に翻訳・再構成した内容となっております。
サーバーレス・エージェント
概要
サーバーレスの環境やクラウドプラットフォームの進化に伴い、利便性と抽象度が同時に向上し、新しいエージェントモデルが求められています。
例えば、AmazonのECSやEKSでは、ユーザーは基盤となる仮想ホストマシンの管理を引き続き担当しています。しかし、Fargateのような環境では、ホストはクラウド事業者によって暗黙のうちに割り当てられており、ユーザーは、基盤となるコンピュートインフラの割り当てや設定、知識を持たずに、単にコンテナを実行するだけです。
この「サービスとしてのコンテナ」モデルは便利ですが、多くのユーザーがコンテナを放置し、コンテナ内のセキュリティイベントを監視しないため、シークレットの流出、ビジネスデータの漏洩、パフォーマンスへの影響、AWS/クラウドプロバイダーのコスト増などのリスクが発生します。また、ホストにアクセスできない環境では、標準的なエージェントをインストールすることができません。
このような理由から、Sysdigは、このようなコンテナベースのクラウド環境に導入可能な「サーバーレスエージェント」を新たに開発しました。
AWS Fargate サーバーレスエージェント
アーキテクチャー
Sysdigのサーバーレスエージェントは、Falcoによるポリシーエンフォースメントでランタイム検知を行います。現時点では、サーバーレスエージェントはECS上のAWS Fargateで利用可能です。このエージェントは、オーケストレーター・エージェントと(複数の可能性のある)ワークロード・エージェントで構成されます。
- Sysdig サーバーレス・オーケストレーター・エージェントは、各ECSクラスターにインストールされた収集ポイントで、サーバーレス・ワークロード・エージェントからデータを収集し、Sysdigのバックエンドに転送します。また、FalcoのランタイムポリシーとルールをSysdigのバックエンドからワークロードエージェントに同期させます。
- Sysdig サーバーレスワークロードエージェントは各タスクにインストールされ、オーケストレーターエージェントと通信するためにネットワークアクセスが必要です。

インストール:Fargate ECS
Fargate ECSの場合、サーバーレスエージェントの2つのコンポーネントは別々にインストールされます。
- オーケストレーターエージェントについては、SysdigがCloudFormation Templateとして使用するyamlを提供しており、これをAWSコンソールからデプロイすることができます。組織がセキュリティを確保したい環境のVPCごとに、オーケストレーターのデプロイが1つ必要です。
- ワークロードエージェントについては、Fargateのタスク定義ごとに1つのワークロードエージェントが必要です。(10個のサービスと10個のタスク定義がある場合、それぞれにインスツルメンテーションが必要です)。
ここでは、サービスが既存のCFT(CloudFormation Templates)を使用しており、CFT内のすべてのタスク定義を計測する自動プロセスを使用してワークロードエージェントをインストールすることを想定しています。
前提条件
AWS側:
- AWS CLIが設定されており、S3バケットを作成・使用する権限があること
- repoへのイメージのアップロード、CFTのデプロイ、Fargate用のタスク定義の作成のパーミッション
- Sysdigのサーバーレス・エージェントでインストルメントしたいFargateのタスク
- インターネットに接続可能な2つのサブネット。(Fargate上のサービスはオーケストレーター・エージェントに到達する必要があり、オーケストレーター・エージェントはSysdigのバックエンドと通信するためにインターネットに到達する必要があります。)
Sysdig側:
オーケストレーター・エージェントのインストール
- CloudFormationテンプレートのソースとして使用するSysdig Orchestrator Agent yamlを入手します。
- CloudFormationを使用して、目的のVPCごとにオーケストレーター・エージェントをデプロイします。
以下の手順は、Sysdig関連の重要なパートの概要です。
- AWS コンソールにログインします。「CloudFormation」と「Create Stack with new resources」を選択し、Template sourceに「orchestrator-agent.yaml」を指定する。
- スタックの詳細を指定して、サービスが稼働しているのと同じVPCにオーケストレーターエージェントをデプロイします。

Stack name:self-defined
Sysdigの設定
- Sysdig Access Key:Sysdigプラットフォームのエージェント・キーを使用します。
- Sysdig Collector Host: collector.sysdigcloud.com (デフォルト); Sysdig SaaSでは地域に依存します。Sysdig on-premではカスタムです。
- Sysdig Collector Port: 6443 (デフォルト)、オンプレミスの場合はカスタムでも可。
ネットワーク設定
- VPC Id VPCを選択します。
- Subnet A & B: 選択したVPCに応じて、ドロップダウンメニューから選択します。
高度な設定
- Sysdig Agent Tags: タグのコンマ区切りリストを入力してください (例: role:webserver,location:europe)注意: タグは、AWS、Dockerなどのインフラストラクチャーのメタデータからも自動的に作成されます。
- Sysdig Orchestrator Agentのイメージ:
- quay-io/orchestrator-agent:latest (デフォルト)
- Collector SSL Certificateのチェック:デフォルト:true。Falseは、コレクターから受け取ったSSL証明書の検証が行われないことを意味し、開発目的でのみ使用されます。
「Next」をクリックしてスタックの作成を完了し、デプロイメントが完了するのを待ちます(通常は10分以内です)。
「Output」では、「OrchestratorHost」と「OrchestratorPort」の値に注意してください。

ワークロードエージェントのインストール
自動化プロセス
- 前提条件:適切なVPCにオーケストレータエージェントをデプロイし、オーケストレータのホストとポートの情報を手元に用意します。
- お使いのOSに適したインストーラーをダウンロードします。
- これらは、Fargateコンテナに注入するためのオープンソースのライブラリメカニズムであるKiltを設定します。
- インストーラーを使用して、サーバーレスワーカーエージェントのマクロを作成します。このマクロがタグ付けされたサービスには、サーバーレスワーカーエージェントが追加され、Fargateのデータが収集されます。
- AWS CLIにログインします。
- インストルメンテーションを適用するCFNマクロを作成します。前のタスクのアウトプットが必要になります。例を挙げます。
- 作成したマクロを、自分のサービスに使用するCFTにルートで追加します。
- Use: Transform: MySysdigMacro.
- そのテンプレートの新しいデプロイメントはすべてインストルメント化されます。
- 完了!
- インスツルメンテーションが完了すると、FargateのイベントがSysdig Secure Eventsのフィードに表示されるようになります。
Sysdigに関するお問い合わせはこちらから