Ansichten:

Amazon EKS-Audit-Logs sind über CloudWatch Logs verfügbar. Verwenden Sie das k8saudit-eks Falco-Plugin.

Vorbereitungen

  • Falco mit den Plugins k8saudit-eks und json gebaut.
  • EKS-Cluster mit aktiviertem Steuerungsebenen-Logging.

Prozedur

  1. Aktivieren Sie die Protokollierung der Steuerungsebene in der AWS Console.
    1. Navigieren Sie zu Ihrem EKS-Cluster.
    2. Navigieren Sie zu ObservabilityControl plane logging.
    3. Aktivieren Sie die Protokollierung von Audit.
  2. Konfigurieren Sie IAM-Berechtigungen in der AWS Console.
    1. Navigieren Sie zu ComputeNode groups und klicken Sie auf den Knotengruppennamen.
    2. Klicken Sie auf Node IAM role ARN, um IAM zu öffnen.
    3. Die folgende Inline-Richtlinie hinzufügen:
    {
      "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:*"
          ]
        }
      ]
    }
    Ersetzen Sie ${region}, ${account-id} und ${cluster-name} durch Ihre Werte.
  3. Aktualisieren Sie die overrides.yaml, um die Erfassung von Audit-Logs zu aktivieren.
    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}"
Fehlerbehebung: NoCredentialProviders-Fehler
Wenn Sie Error: NoCredentialProviders: no valid providers in chain sehen:
Ursache: Der Container kann aufgrund eines Hop-Limits nicht auf IMDS zugreifen.
Lösung:
# 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>