クラウドワークロードセキュリティのセットアップ

概要

Datadog Agent がクラウドワークロードセキュリティに使用するモニタリングには、4 つのタイプがあります。

  1. プロセス実行監視により、ホストやコンテナ上の悪意のあるアクティビティのプロセス実行をリアルタイムで監視します。
  2. ファイル整合性監視により、ホストやコンテナ上の主要なファイルやディレクトリの変更をリアルタイムに監視します。
  3. DNS アクティビティ監視により、ホストやコンテナ上の悪意あるアクティビティをネットワークトラフィックでリアルタイムに監視します。
  4. カーネルアクティビティ監視により、プロセスのハイジャックやコンテナのブレイクアウトなど、カーネル層への攻撃をリアルタイムに監視します。

要件

  • Datadog Agent >= 7.27.0
  • データ収集は eBPF を使用して行われるため、Datadog は最低限、基底の Linux カーネルバージョン 4.15.0 以降または eBPF 機能のバックポートを備えたプラットフォームを必要とします。CWS は以下の Linux ディストリビューションをサポートしています。
    • Ubuntu 18.04+
    • Debian 10+
    • Amazon Linux 2
    • Fedora 26 以上
    • SUSE 15 以降
    • CentOS/RHEL 7.6 以降
    • カスタムカーネルビルドはサポートされていません。
  • Cilium や Calico などのカスタム Kubernetes ネットワークプラグインとの互換性については、トラブルシューティングページをご参照ください。

APM に Datadog Agent を構成する

  1. まだインストールしていない場合は、Datadog Agent (バージョン 7.27+) をインストールします。

  2. values.yaml ファイルの datadog セクションに以下を追加します。

    # values.yaml file
    datadog:
    
    # Add this to enable Cloud Workload Security
      securityAgent:
        runtime:
          enabled: true
    
    # Add this to enable the collection of CWS network events, only for Datadog Agent version 7.36
          network:
            enabled: true
    
  3. Agent を再起動します。

  4. Cloud SIEM がチェックされている場合、オプションとなります こちらの手順に従って、Kubernetes の監査ログを収集します。

Docker 環境でランタイムセキュリティ Agent と system-probe を起動するには、次のコマンドを使用します。

docker-runtime-security.sh

docker run -d --name dd-agent \
  --cgroupns host \
  --pid host \
  --security-opt apparmor:unconfined \
  --cap-add SYS_ADMIN \
  --cap-add SYS_RESOURCE \
  --cap-add SYS_PTRACE \
  --cap-add NET_ADMIN \
  --cap-add NET_BROADCAST \
  --cap-add NET_RAW \
  --cap-add IPC_LOCK \
  --cap-add CHOWN \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -v /etc/passwd:/etc/passwd:ro \
  -v /etc/group:/etc/group:ro \
  -v /:/host/root:ro \
  -v /sys/kernel/debug:/sys/kernel/debug \
  -v /etc/os-release:/etc/os-release \
  -e DD_RUNTIME_SECURITY_CONFIG_ENABLED=true \
  -e DD_RUNTIME_SECURITY_CONFIG_NETWORK_ENABLED=true \ # CWS ネットワークイベントの収集を可能にするため
  -e HOST_ROOT=/host/root \
  -e DD_API_KEY=<API KEY> \
  gcr.io/datadoghq/agent:7

パッケージベースのデプロイメントでは、Datadog パッケージをデプロイする必要があります。dkpg -i datadog-agent_7....deb を実行します。

デフォルトでは、ランタイムセキュリティは無効になっています。有効にするには、security-agent.yamlsystem-probe.yaml ファイルの両方を適合させる必要があります。これらの構成を有効にするには、以下のコマンドを実行します。

debian-runtime-security.sh

echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/security-agent.yaml
echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/system-probe.yaml

systemctl restart datadog-agent

Datadog Agent バージョン 7.36 のみ、CWS ネットワークイベントの収集を有効にするには

echo "runtime_security_config.network.enabled: true" >> /etc/datadog-agent/system-probe.yaml

変更を適用したら、セキュリティ Agent と system-probe の両方を再起動します。

パッケージベースのデプロイメントでは、Datadog パッケージをデプロイする必要があります。yum/dnf install datadog-agent_7....rpm を実行します。

デフォルトでは、ランタイムセキュリティは無効になっています。有効にするには、security-agent.yamlsystem-probe.yaml ファイルの両方を適合させる必要があります。これらの構成を有効にするには、以下のコマンドを実行します。

fedora-centos-runtime-security.sh

echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/security-agent.yaml
echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/system-probe.yaml
systemctl restart datadog-agent

Datadog Agent バージョン 7.36 のみ、CWS ネットワークイベントの収集を有効にするには

echo "runtime_security_config.network.enabled: true" >> /etc/datadog-agent/system-probe.yaml

パッケージベースのデプロイでは、Datadog パッケージをデプロイする必要があります。パッケージマネージャーでパッケージをインストールします。

デフォルトでは、ランタイムセキュリティは無効になっています。有効にするには、security-agent.yamlsystem-probe.yaml ファイルの両方を適合させる必要があります。これらの構成を有効にするには、以下のコマンドを実行します。

host-runtime-security.sh

echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/security-agent.yaml
echo "runtime_security_config.enabled: true" >> /etc/datadog-agent/system-probe.yaml
systemctl restart datadog-agent

Datadog Agent バージョン 7.36 のみ、CWS ネットワークイベントの収集を有効にするには

echo "runtime_security_config.network.enabled: true" >> /etc/datadog-agent/system-probe.yaml

複数の Docker コンテナを持つ Amazon Elastic Beanstalk 環境で、Runtime Security Agent と system-probe を起動するには、次のデプロイを使用します。

{
    "AWSEBDockerrunVersion": 2,
    "volumes": [
        {
            "name": "docker_sock",
            "host": {
                "sourcePath": "/var/run/docker.sock"
            }
        },
        {
            "name": "proc",
            "host": {
                "sourcePath": "/proc/"
            }
        },
        {
            "name": "cgroup",
            "host": {
                "sourcePath": "/cgroup/"
            }
        },
        {
            "name": "debug",
            "host": {
                "sourcePath": "/sys/kernel/debug"
            }
        },
        {
           "name": "os_release",
           "host": {
                "sourcePath": "/etc/os-release"
        }
        },
        {
           "name": "etc_passwd",
           "host": {
             "sourcePath": "/etc/passwd"
           }
        },
        {
           "name": "etc_group",
           "host": {
             "sourcePath": "/etc/group"
           }
        }
    ],
    "containerDefinitions": [
        {
            "image": "gcr.io/datadoghq/agent:7",
            "environment": [
                {
                    "name": "DD_API_KEY",
                    "value": "<YOUR_DD_API_KEY>"
                },
                {
                    "name": "DD_SITE",
                    "value": "<YOUR_DD_SITE>"
                },
                {
                    "name": "DD_TAGS",
                    "value": "<SIMPLE_TAG>, <KEY:VALUE_TAG>"
                },
                {
                   "name": "DD_RUNTIME_SECURITY_CONFIG_ENABLED",
                   "value": "true"
                }
            ],
            "memory": 256,
            "dockerSecurityOptions": ["apparmor:unconfined"],
            "linuxParameters": {
             "capabilities": {
               "add": [
                 "SYS_ADMIN",
                 "SYS_RESOURCE",
                 "SYS_PTRACE",
                 "NET_ADMIN",
                 "NET_BROADCAST",
                 "NET_RAW",
                 "IPC_LOCK",
                 "CHOWN"
               ]
              }
            },
            "mountPoints": [
                {
                    "sourceVolume": "docker_sock",
                    "containerPath": "/var/run/docker.sock",
                    "readOnly": false
                },
                {
                    "sourceVolume": "proc",
                    "containerPath": "/host/proc",
                    "readOnly": true
                },
                {
                    "sourceVolume": "cgroup",
                    "containerPath": "/host/sys/fs/cgroup",
                    "readOnly": true
                },
                {
                    "containerPath": "/sys/kernel/debug",
                    "sourceVolume": "debug"
                },
                {
                    "sourceVolume": "os_release",
                    "containerPath": "/host/etc/os-release",
                    "readOnly": false
                },
                {
                    "sourceVolume": "etc_passwd",
                    "containerPath": "/etc/passwd",
                    "readOnly": false
                },
                {
                    "sourceVolume": "etc_group",
                    "containerPath": "/etc/group",
                    "readOnly": false
                }
            ]
        }
    ]
}

その他の参考資料