Falco выводит метаданные экземпляра aws
Я запускаю falco и falcosidekick с docker compose, без k8s.
Мне нужно получить метаданные экземпляра aws для вывода правил falco. Я нашел класс поля jevt, но обнаружил ошибку при запуске контейнера Falco
Invalid output format 'command=%jevt.value[/awsRegion': 'invalid formatting token jevt.value[/awsRegion']
Вот мои правила:
- rule: Terminal shell in container
desc: A shell was used as the entrypoint/exec point into a container with an attached terminal.
condition: >
spawned_process and container
and shell_procs and proc.tty != 0
and container_entrypoint
and not user_expected_terminal_shell_in_container_conditions
output: >
command=%jevt.value["/awsRegion"]
priority: NOTICE
tags: [ container, shell, mitre_execution ]
Как я могу сделать? Спасибо
2 ответа
несколько вещей, которые нужно знать:
- синтаксис для
jevt.value
являетсяjevt.value[/awsRegion]
(без кавычек) - эти поля предназначены для событий в формате json, они работают для журналов аудита kubernetes, но в вашем случае, когда правило основано на системных вызовах
- falco также не будет запрашивать метаданные aws, у вас не будет этой информации в вашем выводе, как это
С уважением,
Falco не запрашивает метаданные AWS, поэтому я получил метаданные с помощью описания экземпляров aws cli и передал метаданные в контейнер falcosidekick.
#loading EC2 metadata
INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
INSTANCE_IP=$(aws ec2 describe-instances --instance-id "$INSTANCE_ID" --region eu-west-1 --query 'Reservations[*].Instances[*].{InstanceIp:PublicIpAddress}' --output text)
CLUSTER_NAME=$(aws ec2 describe-instances --instance-id "$INSTANCE_ID" --region eu-west-1 --query 'Reservations[*].Instances[*].{ClusterName:Tags[?Key==`Name`]|[0].Value}' --output text)
docker run -d -p 2801:2801 -d \
-e CUSTOMFIELDS=INSTANCE_ID:"$INSTANCE_ID",INSTANCE_IP:"$INSTANCE_IP",CLUSTER_NAME:"$CLUSTER_NAME" \
--name falcosidekick \
falcosecurity/falcosidekick