ブログ

[更新] AWS Fargate サーバーレスエージェント

[更新] AWS Fargate サーバーレスエージェント

本文の内容は、docs.sysdig.com上のAWS Fargate Serverless Agentsを元に日本語に翻訳・再構成した内容となっております。(2021年5月10日現在)

サーバーレス・エージェント

概要

サーバーレスの環境やクラウドプラットフォームの進化に伴い、利便性と抽象度が同時に向上し、新しいエージェントモデルが求められています。

例えば、AmazonのECSやEKSでは、ユーザーは基盤となる仮想ホストマシンの管理を引き続き担当しています。しかし、Fargateのような環境では、ホストはクラウド事業者によって暗黙のうちに割り当てられており、ユーザーは、基盤となるコンピュートインフラの割り当てや設定、知識を持たずに、単にコンテナを実行するだけです。

この「サービスとしてのコンテナ」モデルは便利ですが、多くのユーザーがコンテナを放置し、コンテナ内のセキュリティイベントを監視しないため、シークレットの流出、ビジネスデータの漏洩、パフォーマンスへの影響、AWS/クラウドプロバイダーのコスト増などのリスクが発生します。また、ホストにアクセスできない環境では、標準的なエージェントをインストールすることができません。

このような理由から、Sysdigは、このようなコンテナベースのクラウド環境に導入可能な「サーバーレスエージェント」を新たに開発しました。

AWS Fargate ECS サーバーレスエージェント

アーキテクチャー

Sysdigのサーバーレスエージェントは、Falcoによるポリシーエンフォースメントでランタイム検知を行います。現時点では、サーバーレスエージェントはECS上のAWS Fargateで利用可能です。このエージェントは、オーケストレーター・エージェントと(複数の可能性のある)ワークロード・エージェントで構成されます。

  • Sysdig サーバーレス・オーケストレーター・エージェントは、各ECSクラスターにインストールされた収集ポイントで、サーバーレス・ワークロード・エージェントからデータを収集し、Sysdigのバックエンドに転送します。また、FalcoのランタイムポリシーとルールをSysdigのバックエンドからワークロードエージェントに同期させます。
  • Sysdig サーバーレスワークロードエージェントは各タスクにインストールされ、オーケストレーターエージェントと通信するためにネットワークアクセスが必要です。

serverless_arch_2.png

インストール: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のバックエンドと通信するためにインターネットに到達する必要があります。)
  • NATゲートウェイ、またはAWS Internet Gatewayを使用する場合は、オーケストレーターエージェントをインストールした後、orchestrator.yaml のAssignPublicIp.ENABLEDという行のコメントを解除する必要があります。


Sysdig側:

オーケストレーター・エージェントのインストール

  1. CloudFormationテンプレートのソースとして使用するSysdig Orchestrator Agent yamlを入手します。
  2. CloudFormationを使用して、目的のVPCごとにオーケストレーター・エージェントをデプロイします。

以下の手順は、Sysdig関連の重要なパートの概要です。

  1. AWS コンソールにログインします。「CloudFormation」と「Create Stack with new resources」を選択し、Template sourceに「orchestrator-agent.yaml」を指定する。
  2. スタックの詳細を指定して、サービスが稼働しているのと同じVPCにオーケストレーターエージェントをデプロイします。

CloudFormation_Stack.png

Stack name:self-defined

Sysdigの設定

  • Sysdig Access Key:Sysdigプラットフォームのagent key を使用します。
  • 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」の値に注意してください。
SA_outputs1.jpg

備考:
NATゲートウェイではなくAWS Internet Gatewayを使用する場合は、orchestrator.yaml のAssignPublicIp.ENABLEDという行のコメントを外してください。


ワークロードエージェントのインストール

自動化プロセス

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

アップグレード:Fargate ECS用

備考
サーバーレスエージェントをアップグレードするには、両方のコンポーネントの2つ目のバージョンをインストールしてから、実行中のタスクをすべて終了し、新しいバージョンで再起動します。その後、古いCloudFormationとKiltの残留物を削除してクリーンアップします。

  1. CloudFormation Templateのソースとして使用するSysdig Orchestrator Agentのyaml を入手します。

    現時点では、yamlのメタデータにはエージェントのバージョンが明記されていませんが、このリンクから常に最新のファイルをダウンロードします。
  2. Orchestrator Agentをインストールするための手順を実行します。

    なお、ステップ2.4では、OrchestratorHostとOrchestratorPortの値が一意になるようにします。
  3. ワークロードエージェントのインストールの手順を実行します。

    ステップ4で、マクロに一意の名前を割り当てます(Transform: MyV2SysdigMacro)。これで、サーバーレス・エージェント・コンポーネントの2つのバージョンが揃いました。以前のバージョンから切り替える準備ができたら、次のステップに進んでください。
  4. すべての実行中のタスクを停止し、CloudFormataionを使用して以前のスタックを削除します。更新されたCFTで新しいスタックを再配置します。(Transform: MyV2SysdigMacro)
  5. マクロのクリーンアップ:インストーラーを使って、以前のkiltマクロを削除します。
./installer-linux-amd64 cfn-macro delete MySysdigMacro

関連コンテンツ

最近の投稿

カテゴリー

アーカイブ

ご質問・お問い合わせはこちら

top