ビュー:

Amazon EKSのAudit LogsはCloudWatch Logsを通じて利用可能です。k8saudit-eks Falcoプラグインを使用してください。

始める前に

  • Falcoはk8saudit-eksjsonプラグインで構築されています。
  • コントロールプレーンのログ記録が有効になっているEKSクラスター。

手順

  1. AWS Consoleでコントロールプレーンのログを有効にします。
    1. EKSクラスターに移動します。
    2. [Observability][Control plane logging] に移動します。
    3. [監査]ログを有効にする。
  2. AWS ConsoleでIAMの権限を設定します。
    1. [Compute][Node groups]に移動し、ノードグループ名をクリックします。
    2. [Node IAM role ARN] をクリックして IAM を開きます。
    3. 次のインラインポリシーを追加します。
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ReadAccessToCloudWatchLogs",
          "Effect": "Allow",
          "Action": [
            "logs:Describe*",
            "logs:FilterLogEvents",
            "logs:Get*",
            "logs:List*"
          ],
          "Resource": [
            "arn:aws:logs:${region}:${account-id}:log-group:/aws/eks/${cluster-name}/cluster:*"
          ]
        }
      ]
    }
    ${region}${account-id}${cluster-name}をご自身の値に置き換えてください。
  3. overrides.yamlを更新して、監査ログの収集を有効にします。
    visionOne:
        bootstrapToken: ...
        endpoint: ...
        exclusion:
            namespaces: [kube-system]
        ...
    auditLogCollection:
        enabled: true
        provider: eks
        eks:
            region: "${your cluster's region}"
            clusterName: "${your cluster's name in aws console}"
トラブルシューティング: NoCredentialProvidersエラー
Error: NoCredentialProviders: no valid providers in chainが表示された場合:
原因: ホップ制限のため、コンテナがIMDSに到達できません。
解決策:
# Get instance ID
INSTANCE_ID=$(aws ec2 describe-instances --region <region> \
  --filters "Name=private-dns-name,Values=<node-name>" \
  --query "Reservations[0].Instances[0].InstanceId" --output text)

# Increase hop limit
aws ec2 modify-instance-metadata-options --region <region> \
  --instance-id $INSTANCE_ID \
  --http-put-response-hop-limit 2

# Restart pod
kubectl delete pod -n trendmicro-system <pod-name>