mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-24 13:01:56 +00:00
feat(MQ): add new service MQ (#5419)
This commit is contained in:
committed by
GitHub
parent
c90cb3712b
commit
c0ac4c7c30
@@ -0,0 +1,4 @@
|
||||
from prowler.providers.aws.services.mq.mq_service import MQ
|
||||
from prowler.providers.common.provider import Provider
|
||||
|
||||
mq_client = MQ(Provider.get_global_provider())
|
||||
@@ -0,0 +1,41 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.lib.scan_filters.scan_filters import is_resource_filtered
|
||||
from prowler.providers.aws.lib.service.service import AWSService
|
||||
|
||||
|
||||
class MQ(AWSService):
|
||||
def __init__(self, provider):
|
||||
# Call AWSService's __init__
|
||||
super().__init__("mq", provider)
|
||||
self.brokers = {}
|
||||
self.__threading_call__(self._list_brokers)
|
||||
|
||||
def _list_brokers(self, regional_client):
|
||||
logger.info("MQ - Listing brokers...")
|
||||
try:
|
||||
for broker in regional_client.list_brokers()["BrokerSummaries"]:
|
||||
if not self.audit_resources or (
|
||||
is_resource_filtered(broker["BrokerArn"], self.audit_resources)
|
||||
):
|
||||
broker_arn = broker["BrokerArn"]
|
||||
self.brokers[broker_arn] = Broker(
|
||||
arn=broker_arn,
|
||||
name=broker["BrokerName"],
|
||||
id=broker["BrokerId"],
|
||||
region=regional_client.region,
|
||||
)
|
||||
except Exception as error:
|
||||
logger.error(
|
||||
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
||||
)
|
||||
|
||||
|
||||
class Broker(BaseModel):
|
||||
"""Broker model for MQ"""
|
||||
|
||||
arn: str
|
||||
name: str
|
||||
id: str
|
||||
region: str
|
||||
@@ -0,0 +1,66 @@
|
||||
from boto3 import client
|
||||
from moto import mock_aws
|
||||
|
||||
from prowler.providers.aws.services.mq.mq_service import MQ
|
||||
from tests.providers.aws.utils import AWS_REGION_EU_WEST_1, set_mocked_aws_provider
|
||||
|
||||
|
||||
class Test_MQ_Service:
|
||||
# Test MQ Service
|
||||
@mock_aws
|
||||
def test_service(self):
|
||||
# MQ client for this test class
|
||||
aws_provider = set_mocked_aws_provider([AWS_REGION_EU_WEST_1])
|
||||
mq = MQ(aws_provider)
|
||||
assert mq.service == "mq"
|
||||
|
||||
# Test MQ Client
|
||||
@mock_aws
|
||||
def test_client(self):
|
||||
# MQ client for this test class
|
||||
aws_provider = set_mocked_aws_provider([AWS_REGION_EU_WEST_1])
|
||||
mq = MQ(aws_provider)
|
||||
for regional_client in mq.regional_clients.values():
|
||||
assert regional_client.__class__.__name__ == "MQ"
|
||||
|
||||
# Test MQ Session
|
||||
@mock_aws
|
||||
def test__get_session__(self):
|
||||
# MQ client for this test class
|
||||
aws_provider = set_mocked_aws_provider([AWS_REGION_EU_WEST_1])
|
||||
mq = MQ(aws_provider)
|
||||
assert mq.session.__class__.__name__ == "Session"
|
||||
|
||||
# Test MQ List Brokers
|
||||
@mock_aws
|
||||
def test_list_brokers(self):
|
||||
# Generate MQ client
|
||||
mq_client = client("mq", region_name=AWS_REGION_EU_WEST_1)
|
||||
broker = mq_client.create_broker(
|
||||
AutoMinorVersionUpgrade=True,
|
||||
BrokerName="my-broker",
|
||||
DeploymentMode="SINGLE_INSTANCE",
|
||||
EngineType="ActiveMQ",
|
||||
EngineVersion="5.15.0",
|
||||
HostInstanceType="mq.t2.micro",
|
||||
PubliclyAccessible=True,
|
||||
Users=[
|
||||
{
|
||||
"ConsoleAccess": False,
|
||||
"Groups": [],
|
||||
"Password": "password",
|
||||
"Username": "user",
|
||||
}
|
||||
],
|
||||
)
|
||||
broker_arn = broker["BrokerArn"]
|
||||
|
||||
# MQ Client for this test class
|
||||
aws_provider = set_mocked_aws_provider([AWS_REGION_EU_WEST_1])
|
||||
mq = MQ(aws_provider)
|
||||
|
||||
assert len(mq.brokers) == 1
|
||||
assert mq.brokers[broker_arn].arn == broker_arn
|
||||
assert mq.brokers[broker_arn].name == "my-broker"
|
||||
assert mq.brokers[broker_arn].region == AWS_REGION_EU_WEST_1
|
||||
assert mq.brokers[broker_arn].id == broker["BrokerId"]
|
||||
Reference in New Issue
Block a user