檢視次數:

Amazon EKS 審計日誌可透過 CloudWatch Logs 獲得。使用 k8saudit-eks Falco 插件。

開始之前

  • Falco 使用 k8saudit-eksjson 插件構建。
  • EKS 叢集已啟動控制平面日誌記錄。

步驟

  1. 在 AWS Console 中啟用控制平面日誌記錄。
    1. 導航至您的 EKS 叢集。
    2. 移至「Observability」「Control plane logging」
    3. 啟用「Audit」日誌記錄。
  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>