prowler-provider
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWhen 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
在以下场景使用本技能:
- 向Prowler添加新的云提供商
- 向现有提供商添加新服务
- 理解提供商架构模式
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每个提供商必须遵循以下结构:
prowler/providers/{provider}/
├── __init__.py
├── {provider}_provider.py # 主提供商类
├── models.py # 提供商专属模型
├── config.py # 提供商配置
├── exceptions/ # 提供商专属异常
├── lib/
│ ├── service/ # 基础服务类
│ ├── arguments/ # CLI参数解析器
│ └── mutelist/ # 豁免列表功能
└── services/
└── {service}/
├── {service}_service.py # 资源获取器
├── {service}_client.py # Python单例实例
└── {check_name}/ # 独立检查项
├── {check_name}.py
└── {check_name}.metadata.jsonProvider Class Template
提供商类模板
python
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
passpython
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
passService Class Template
服务类模板
python
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}")python
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
服务客户端模板
python
from prowler.providers.{provider}.services.{service}.{service}_service import {Service}
{service}_client = {Service}python
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
- Cloudflare
- MongoDB Atlas
- NHN (NHN Cloud)
- LLM (Language Model providers)
- IaC (Infrastructure as Code)
当前支持的提供商:
- AWS (Amazon Web Services)
- Azure (Microsoft Azure)
- GCP (Google Cloud Platform)
- Kubernetes
- GitHub
- M365 (Microsoft 365)
- OracleCloud (Oracle Cloud Infrastructure)
- AlibabaCloud
- Cloudflare
- MongoDB Atlas
- NHN (NHN Cloud)
- LLM (语言模型提供商)
- IaC (基础设施即代码)
Commands
命令
bash
undefinedbash
undefinedRun provider
运行提供商
poetry run python prowler-cli.py {provider}
poetry run python prowler-cli.py {provider}
List services for provider
列出提供商的服务
poetry run python prowler-cli.py {provider} --list-services
poetry run python prowler-cli.py {provider} --list-services
List checks for provider
列出提供商的检查项
poetry run python prowler-cli.py {provider} --list-checks
poetry run python prowler-cli.py {provider} --list-checks
Run specific service
运行特定服务
poetry run python prowler-cli.py {provider} --services {service}
poetry run python prowler-cli.py {provider} --services {service}
Debug mode
调试模式
poetry run python prowler-cli.py {provider} --log-level DEBUG
undefinedpoetry run python prowler-cli.py {provider} --log-level DEBUG
undefinedResources
资源
- Templates: See assets/ for Provider, Service, and Client singleton templates
- Documentation: See references/provider-docs.md for official Prowler Developer Guide links
- 模板:查看assets/获取提供商、服务和客户端单例模板
- 文档:查看references/provider-docs.md获取官方Prowler开发者指南链接