К основному содержанию
скилл CX Codex

dd-audit-key-compromise — скилл для Claude Code

Разбирает, что делал подозрительный API-ключ Datadog: когда, откуда, какие эндпоинты и что удалили. Пригодится, когда ключ мог утечь.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add datadog-labs/agent-skills --skill dd-audit-key-compromise -a claude-code
npx skills add datadog-labs/agent-skills --skill key-compromise -a claude-code
Открыть на GitHub

Что делает dd-audit-key-compromise

Скилл восстанавливает картину по Audit Trail: строит хронологию событий ключа, группирует запросы по странам, ASN и IP, показывает, какие эндпоинты вызывали и какими методами. Отдельным шагом ищет удаления — мониторы, дашборды, пайплайны логов. Ещё один запрос отвечает, когда ключ создали и кто это сделал.

Внутри пять шагов с командами pup audit-logs search и разбором JSON через jq, плюс таблица признаков аномалий: страна вне обычной географии, ASN облачного или VPN-провайдера, всплеск активности за короткое окно, работа вне рабочих часов, одновременные запросы с разных IP. На выходе — готовый формат отчёта с периодами, топом эндпоинтов и списком удалённых ресурсов.

Перед запуском нужна авторизация: pup auth login по OAuth2 либо DD_API_KEY и DD_APP_KEY со scope audit_logs_read. Ещё нужен именно ID ключа, а не его значение — взять его можно в Organization Settings > API Keys. Отзыв ключа через pup api-keys delete KEY_ID требует scope manage_api_keys, так что без него придётся отзывать вручную в UI.

Какие задачи решает

  • понять, что успел сделать утёкший ключ Datadog
  • найти IP и страны, откуда шли запросы
  • проверить, не удалили ли мониторы и дашборды
  • выяснить, кто и когда создал подозрительный ключ
  • собрать отчёт по инциденту для разбора

Примеры запросов агенту

  • Разбери, что делал ключ Datadog с ID abc123 за последние 90 дней
  • Построй хронологию запросов этого ключа и покажи, откуда они шли
  • Проверь, были ли удаления ресурсов по этому ключу, и предложи шаги

Как установить dd-audit-key-compromise

1Через Skills CLI (Vercel)

npx skills add datadog-labs/agent-skills --skill dd-audit-key-compromise -a claude-code
npx skills add datadog-labs/agent-skills --skill key-compromise -a claude-code

2Вручную: положить файлы

~/.claude/skills/key-compromise/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/key-compromise/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dd-audit-key-compromise

Как установить dd-audit-key-compromise в Claude Code?

Выполните npx skills add datadog-labs/agent-skills --skill dd-audit-key-compromise -a claude-code. Скилл появится в ~/.claude/skills/key-compromise/SKILL.md.

Что делает dd-audit-key-compromise?

Собирает из Audit Trail хронологию действий ключа Datadog, разбивку по гео и IP, список вызванных эндпоинтов и удаления ресурсов, затем предлагает шаги по устранению.

Что нужно, чтобы скилл заработал?

Авторизация pup auth login или пара DD_API_KEY и DD_APP_KEY со scope audit_logs_read. Ещё понадобится ID подозрительного ключа из Organization Settings > API Keys.

Исходный текст

SKILL.md · MIT
---
name: dd-audit-key-compromise
description: Investigate a potentially compromised Datadog API key — timeline of actions, geo/IP breakdown, endpoints called, anomaly flags, and remediation steps.
metadata:
  version: "0.1.0"
  author: datadog-labs
  repository: https://github.com/datadog-labs/agent-skills
  tags: datadog,audit,security,api-key,compromise,dd-audit
  alwaysApply: "false"
---

# Audit Trail: API Key Compromise Investigation

Reconstruct what a Datadog API key did, where requests originated, and which resources were affected.

## Prerequisites

```bash
pup auth login   # OAuth2 (recommended)
# or set DD_API_KEY + DD_APP_KEY with audit_logs_read scope
```

You need the **key ID** of the suspect key (not the key value). Find it in Datadog UI under Organization Settings > API Keys, or from context showing `@metadata.api_key.id`.

## Investigation Workflow

### Step 1 — Establish timeline

```bash
pup audit-logs search --query "@metadata.api_key.id:KEY_ID" --from 90d --limit 200 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      action: .attributes.attributes.action,
      event: .attributes.attributes.evt.name,
      resource_type: .attributes.attributes.asset.type,
      resource_id: .attributes.attributes.asset.id,
      endpoint: .attributes.attributes.http.url_details.path,
      method: .attributes.attributes.http.method,
      ip: .attributes.attributes.network.client.ip,
      city: .attributes.attributes.network.client.geoip.city.name,
      country: .attributes.attributes.network.client.geoip.country.name,
      asn: .attributes.attributes.network.client.geoip.as.name
    }]'
```

### Step 2 — Geo/IP breakdown

```bash
pup audit-logs search --query "@metadata.api_key.id:KEY_ID" --from 90d --limit 500 -o json \
  | jq '[.data[] | {
      country: .attributes.attributes.network.client.geoip.country.name,
      asn: .attributes.attributes.network.client.geoip.as.name,
      ip: .attributes.attributes.network.client.ip
    }]
    | group_by(.country)
    | map({
        country: .[0].country,
        count: length,
        asns: [.[].asn] | unique,
        ips: [.[].ip] | unique
      })
    | sort_by(-.count)'
```

### Step 3 — Endpoint breakdown

```bash
pup audit-logs search --query "@metadata.api_key.id:KEY_ID" --from 90d --limit 500 -o json \
  | jq '[.data[] | {
      method: .attributes.attributes.http.method,
      path: .attributes.attributes.http.url_details.path
    }]
    | group_by(.path)
    | map({path: .[0].path, methods: [.[].method] | unique, count: length})
    | sort_by(-.count)'
```

### Step 4 — Destructive action check

```bash
pup audit-logs search --query "@metadata.api_key.id:KEY_ID @action:deleted" --from 90d -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      resource_type: .attributes.attributes.asset.type,
      resource_id: .attributes.attributes.asset.id,
      ip: .attributes.attributes.network.client.ip,
      country: .attributes.attributes.network.client.geoip.country.name
    }]'
```

### Step 5 — When was the key created and by whom?

```bash
pup audit-logs search --query "@asset.type:api_key @asset.id:KEY_ID @action:created" --from 90d -o json \
  | jq '[.data[] | {
      created_at: .attributes.timestamp,
      created_by: .attributes.attributes.usr.email,
      creator_ip: .attributes.attributes.network.client.ip,
      creator_country: .attributes.attributes.network.client.geoip.country.name
    }]'
```

## Anomaly Flags

| Signal | Why it matters |
|--------|----------------|
| Country not in org's normal baseline | Possible exfiltration from unexpected region |
| ASN is a cloud/VPN provider (AWS, Cloudflare, NordVPN, etc.) | Proxied traffic; obscured origin |
| DELETE actions on monitors, dashboards, or log pipelines | Potential sabotage |
| Burst of activity in short window | Automated scraping or bulk exfiltration |
| Activity outside business hours | Off-hours access |
| Key used from multiple IPs simultaneously | Key shared or stolen |

## Investigation Output Format

```
Key ID: <key_id>
Created: <timestamp> by <user_email>
Active period: <first_seen> to <last_seen>
Total events: <N>

Origins:
  - <Country> (<ASN>): <N> events — [NORMAL / FLAG: first-time origin]

Endpoints called (top 5):
  - <METHOD> <path>: <N> calls

Destructive actions: <N> deletions — [resource types affected]

Recommended actions:
  1. Revoke the key immediately if not already done
  2. Review affected resources: [list]
  3. Check if any deleted resources need restoration
  4. Audit who else had access to this key
```

## Remediation

Revoke in Datadog UI: Organization Settings > API Keys > Revoke.

Or via API (requires `manage_api_keys` scope):
```bash
pup api-keys delete KEY_ID
```

## References

- [Audit Trail API](https://docs.datadoghq.com/api/latest/audit/)
- [API Keys management](https://docs.datadoghq.com/account_management/api-app-keys/)

© datadog-labs · MIT · datadog-labs/agent-skills

Похожие скиллы

Все скиллы по теме «Безопасность» →
git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. 499 069установок ponytail-review DietrichGebert Скилл проверяет изменения глубже обычного diff: читает связанный код, ищет ошибки, риски, проблемы нагрузки и недостающие тесты. Пригодится для ревью PR и коммитов. CX Codex +1 57 000установок ponytail-audit DietrichGebert Проверяет репозиторий и ранжирует ошибки, риски и лишний код. Подойдёт, если нужен разовый разбор без автоматических правок. CX Codex +1 45 400установок security-audit cloudflare Проверяет кодовую базу на уязвимости и ищет нарушения границ доверия. Пригодится перед релизом или для точечного разбора опасных участков кода. CX Codex +1 54 800установок security-and-hardening addyosmani Помогает проектировать защиту и проверять код на уязвимости при работе с вводом, авторизацией, сессиями и внешними сервисами. Подойдёт перед релизом и при создании функций, которые обрабатывают недоверенные данные. CX Codex +1 70 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора28

agent-observability-session-classify Оценивает удовлетворённость пользователя в трейсах и сессиях Datadog Agent Observability. Возвращает вердикт yes, partial или no с коротким пояснением. CX Codex +1 529установок agent-observability-experiment-analyzer Скилл анализирует результаты одного или двух LLM-экспериментов. Пригодится, чтобы изучить один запуск или сравнить кандидата с базовым экспериментом. CX Codex +1 529установок service-remapping Скилл для работы с правилами переименования сервисов Datadog APM: схлопывает шумные inferred-сущности, чистит автоимена, помогает после переименования сервиса. CX Codex +1 478установок dd-audit-compliance-report Собирает доказательства из Datadog Audit Trail под требования SOC 2 и PCI DSS и выдаёт готовый к проверке отчёт. CX Codex +1 477установок dd-audit-security-investigation Помогает расследовать инциденты безопасности в Datadog Audit Trail через утилиту pup. Находит авторов удалений, изменений прав и подозрительные входы. CX Codex +1 476установок dd-audit-cost-spike-investigation Скилл связывает скачок потребления в Datadog с изменениями конфигурации из Audit Trail и показывает, кто и что поменял перед всплеском. CX Codex +1 473установок upgrade-browser-sdk-v7 Ведёт проект с Datadog Browser SDK с версии 6 на 7: находит устаревшие опции, меняет CDN-ссылки и API. Пригодится, когда после обновления сыпятся ошибки конфигурации. CX Codex +1 459установок k9-ownership-byod-setup Собирает CSV-таблицу предпочтений владения ресурсами для Datadog и подсказывает, как её загрузить. Нужен, когда Ownership Agent ошибается с владельцами. CX Codex +1 454установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой