feat(firewall): add scoped log administration reads
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -488,6 +488,52 @@ class FirewallStoreTest extends TestCase
|
||||
self::assertSame('tenant-disabled', $disabled['items'][0]->getReason());
|
||||
}
|
||||
|
||||
#[TestDox('Administrative log queries enforce tenant scope and supported filters')]
|
||||
public function testAdministrativeLogQuery(): void
|
||||
{
|
||||
$matching = (new FirewallLogObject())
|
||||
->setTenantId('tenant-a')
|
||||
->setIpAddress('203.0.113.10')
|
||||
->setEventType(FirewallLogObject::EVENT_RULE_MATCH)
|
||||
->setResult(FirewallLogObject::RESULT_BLOCKED)
|
||||
->setRuleId('rule-123')
|
||||
->setRuleScope(FirewallRuleObject::SCOPE_TENANT)
|
||||
->setTimestamp(new \DateTimeImmutable('-1 hour'));
|
||||
$otherTenant = (new FirewallLogObject())
|
||||
->setTenantId('tenant-b')
|
||||
->setIpAddress('203.0.113.10')
|
||||
->setEventType(FirewallLogObject::EVENT_RULE_MATCH)
|
||||
->setResult(FirewallLogObject::RESULT_BLOCKED)
|
||||
->setRuleId('rule-123')
|
||||
->setRuleScope(FirewallRuleObject::SCOPE_TENANT)
|
||||
->setTimestamp(new \DateTimeImmutable('-1 hour'));
|
||||
$tooOld = (new FirewallLogObject())
|
||||
->setTenantId('tenant-a')
|
||||
->setEventType(FirewallLogObject::EVENT_RULE_MATCH)
|
||||
->setResult(FirewallLogObject::RESULT_BLOCKED)
|
||||
->setRuleId('rule-123')
|
||||
->setTimestamp(new \DateTimeImmutable('-3 days'));
|
||||
foreach ([$matching, $otherTenant, $tooOld] as $log) {
|
||||
$this->store->createLog($log);
|
||||
}
|
||||
|
||||
$tenant = $this->store->queryTenantLogs('tenant-a', [
|
||||
'ipAddress' => '203.0.113.10',
|
||||
'eventType' => FirewallLogObject::EVENT_RULE_MATCH,
|
||||
'result' => FirewallLogObject::RESULT_BLOCKED,
|
||||
'ruleId' => 'rule-123',
|
||||
'ruleScope' => FirewallRuleObject::SCOPE_TENANT,
|
||||
'from' => new \DateTimeImmutable('-1 day'),
|
||||
'to' => new \DateTimeImmutable(),
|
||||
], 50, 0);
|
||||
$system = $this->store->querySystemLogs(null, [], 2, 0);
|
||||
|
||||
self::assertSame(1, $tenant['total']);
|
||||
self::assertSame('tenant-a', $tenant['items'][0]->getTenantId());
|
||||
self::assertSame(3, $system['total']);
|
||||
self::assertCount(2, $system['items']);
|
||||
}
|
||||
|
||||
private function rule(
|
||||
string $reason,
|
||||
string $scope,
|
||||
|
||||
Reference in New Issue
Block a user