金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

prowler-provider

prowler-provider 是面向开发运维的 Agent Skill,来自 prowler-cloud/prowler。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Creates new Prowler cloud providers or adds services to existing providers. Trigger: When extending Prowler SDK provider architecture (adding a new provider or a new service to an existing provider).

SKILL.md

下载 MD ↓
nameprowler-provider
descriptionCreates new Prowler cloud providers or adds services to existing providers. Trigger: When extending Prowler SDK provider architecture (adding a new provider or a new service to an existing provider).
licenseApache-2.0
metadata{"author": "prowler-cloud", "version": "1.0", "scope": ["root", "sdk"], "auto_invoke": ["Adding new providers", "Adding services to existing providers"]}
allowed-toolsRead, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task

When to Use

Use this skill when: - Adding a new cloud provider to Prowler - Adding a new service to an existing provider - Understanding the provider architecture pattern

Provider Architecture Pattern

Every provider MUST follow this structure:

prowler/providers/{provider}/
├── __init__.py
├── {provider}_provider.py      # Main provider class
├── models.py                   # Provider-specific models
├── config.py                   # Provider configuration
├── exceptions/                 # Provider-specific exceptions
├── lib/
│   ├── service/               # Base service class
│   ├── arguments/             # CLI arguments parser
│   └── mutelist/              # Mutelist functionality
└── services/
    └── {service}/
        ├── {service}_service.py   # Resource fetcher
        ├── {service}_client.py    # Python singleton instance
        └── {check_name}/          # Individual checks
            ├── {check_name}.py
            └── {check_name}.metadata.json

Provider Class Template

from prowler.providers.common.provider import Provider

class {Provider}Provider(Provider):
    """Provider class for {Provider} cloud platform."""

    def __init__(self, arguments):
        super().__init__(arguments)
        self.session = self._setup_session(arguments)
        self.regions = self._get_regions()

    def _setup_session(self, arguments):
        """Provider-specific authentication."""
        # Implement credential handling
        pass

    def _get_regions(self):
        """Get available regions for provider."""
        # Return list of regions
        pass

Service Class Template

from prowler.providers.{provider}.lib.service.service import {Provider}Service

class {Service}({Provider}Service):
    """Service class for {service} resources."""

    def __init__(self, provider):
        super().__init__(provider)
        self.{resources} = []
        self._fetch_{resources}()

    def _fetch_{resources}(self):
        """Fetch {resource} data from API."""
        try:
            response = self.client.list_{resources}()
            for item in response:
                self.{resources}.append(
                    {Resource}(
                        id=item["id"],
                        name=item["name"],
                        region=item.get("region"),
                    )
                )
        except Exception as e:
            logger.error(f"Error fetching {resources}: {e}")

Service Client Template

from prowler.providers.{provider}.services.{service}.{service}_service import {Service}

{service}_client = {Service}

Supported Providers

Current providers: - AWS (Amazon Web Services) - Azure (Microsoft Azure) - GCP (Google Cloud Platform) - Kubernetes - GitHub - M365 (Microsoft 365) - OracleCloud (Oracle Cloud Infrastructure) - AlibabaCloud - MongoDB Atlas - NHN (NHN Cloud) - LLM (Language Model providers) - IaC (Infrastructure as Code)

Commands

# Run provider
poetry run python prowler-cli.py {provider}

# List services for provider
poetry run python prowler-cli.py {provider} --list-services

# List checks for provider
poetry run python prowler-cli.py {provider} --list-checks

# Run specific service
poetry run python prowler-cli.py {provider} --services {service}

# Debug mode
poetry run python prowler-cli.py {provider} --log-level DEBUG

Resources

来源:prowler-cloud/prowler · Apache-2.0 许可 · 许可原文 · MD 为来源页保存的历史版本