Cloudlist — это инструмент, разработанный командой ProjectDiscovery для автоматического сбора и управления облачными активами, — это позволяет централизованно отслеживать и контролировать ресурсы, распределенные по различным облачным провайдерам (сервисам), повышая эффективность управления и снижая риски. Он поддерживает работу с различными облачными сервисами и может быть интегрирован с другими инструментами безопасности. В этом руководстве приведу примеры использования Cloudlist, а также расскажу о настройке сервисов.
Еще по теме: Обнаружение утечек данных облака AWS S3
Возможности новой версии Cloudlist
В последней версии Cloudlist v1.0.9:
- Добавлена поддержка AWS Assume Role.
- Добавлены новые сервисы для AWS (CloudFront, ECS, EKS и др.).
- Добавлены новые сервисы для GCP (Bucket, Function, Run).
- Фильтрация активов по названию сервиса.
Cloudlist поддерживает широкий спектр облачных сервисов. Полный список доступен в документации.
Использование Cloudlist
Чтобы начать работу с Cloudlist, можно воспользоваться следующими командами.
Запуск Cloudlist без дополнительных параметров выведет список всех активов, доступных из настроенных в конфигурационном файле провайдеров.
1 |
cloudlist |
Эта команда соберет все активы от сервисов, указанных в конфигурационном файле. Вы также можете фильтровать вывод по конкретным провайдерам и типам активов, используя флаги -provider и -id.
Если нужно получить список активов только от определенных сервисов, вы можете использовать следующий пример:
1 |
cloudlist -provider aws,gcp |
Для проведения оценки безопасности можно запустить Cloudlist в связке с другими инструментами, такими как Nuclei. Пример команды для сканирования активов:
1 |
cloudlist -silent | httpx -silent | nuclei -t cves/ |
Эта команда сначала соберет список активов с помощью Cloudlist, затем передаст их в httpx для проверки доступности, и наконец проведет сканирование уязвимостей с помощью Nuclei.
Конфигурация провайдеров для Cloudlist осуществляется с помощью файла provider-config.yaml, который должен быть расположен по пути
1 |
$HOME/.config/cloudlist/provider-config.yaml |
В этом файле указываются API-ключи и другие необходимые параметры для каждого провайдера. Пример конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- provider: do # имя провайдера id: xxxx # имя для фильтрации (необязательно) digitalocean_token: $DIGITALOCEAN_TOKEN - provider: aws id: staging aws_access_key: $AWS_ACCESS_KEY aws_secret_key: $AWS_SECRET_KEY aws_session_token: $AWS_SESSION_TOKEN - provider: gcp id: logs gcp_service_account_key: '{xxxxxxxxxxxxx}' |
Для каждого провайдера нужно добавить соответствующие секции с учетными данными.
Использование библиотеки Cloudlist
Cloudlist также можно использовать как библиотеку в программах на Go. Пример кода, который выводит активы от сервиса DigitalOcean:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package main import ( "context" "log" "github.com/projectdiscovery/cloudlist/pkg/inventory" "github.com/projectdiscovery/cloudlist/pkg/schema" ) func main() { inventory, err := inventory.New(schema.Options{ schema.OptionBlock{ "provider": "digitalocean", "digitalocean_token": "ec405badb974fd3d891c9223245f9ab5871c127fce9e632c8dc421edd46d7242", }, }) if err != nil { log.Fatalf("%s\n", err) } for _, provider := range inventory.Providers { resources, err := provider.Resources(context.Background()) if err != nil { log.Fatalf("%s\n", err) } for _, resource := range resources.Items { _ = resource // Выполните действия с ресурсом } } } |
Этот пример демонстрирует, как можно использовать Cloudlist для интеграции с другими программами и сервисами.
Cloudlist — это мощный инструмент для управления облачными активами, который поддерживает работу с множеством провайдеров. Благодаря своей гибкости и возможности интеграции с другими инструментами безопасности, Cloudlist позволяет значительно упростить процесс мониторинга и анализа облачных ресурсов.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Проверка безопасности Docker-образов с помощью Trivy
- Проверка безопасности Docker и Kubernetes в облаке Amazon