From f726d964a8f7b15f249b183e05e04b624867586b Mon Sep 17 00:00:00 2001 From: Hugo Pereira Brito <101209179+HugoPBrito@users.noreply.github.com> Date: Fri, 23 May 2025 12:27:57 +0200 Subject: [PATCH 01/24] fix(m365): remove last encrypted password appearances (#7825) --- api/src/backend/api/specs/v1.yaml | 8 +++---- .../api/v1/serializer_utils/providers.py | 2 +- .../providers/m365/exceptions/exceptions.py | 8 +++---- prowler/providers/m365/m365_provider.py | 14 ++++++------ tests/providers/m365/m365_provider_test.py | 22 ++++++++----------- 5 files changed, 25 insertions(+), 29 deletions(-) diff --git a/api/src/backend/api/specs/v1.yaml b/api/src/backend/api/specs/v1.yaml index e787e7d37c..e368d57757 100644 --- a/api/src/backend/api/specs/v1.yaml +++ b/api/src/backend/api/specs/v1.yaml @@ -9242,7 +9242,7 @@ components: description: User microsoft email address. password: type: string - description: User encrypted password. + description: User password. required: - client_id - client_secret @@ -10487,7 +10487,7 @@ components: description: User microsoft email address. password: type: string - description: User encrypted password. + description: User password. required: - client_id - client_secret @@ -10696,7 +10696,7 @@ components: description: User microsoft email address. password: type: string - description: User encrypted password. + description: User password. required: - client_id - client_secret @@ -10921,7 +10921,7 @@ components: description: User microsoft email address. password: type: string - description: User encrypted password. + description: User password. required: - client_id - client_secret diff --git a/api/src/backend/api/v1/serializer_utils/providers.py b/api/src/backend/api/v1/serializer_utils/providers.py index 759f5bf764..a6ecea67d0 100644 --- a/api/src/backend/api/v1/serializer_utils/providers.py +++ b/api/src/backend/api/v1/serializer_utils/providers.py @@ -121,7 +121,7 @@ from rest_framework_json_api import serializers }, "password": { "type": "string", - "description": "User encrypted password.", + "description": "User password.", }, }, "required": [ diff --git a/prowler/providers/m365/exceptions/exceptions.py b/prowler/providers/m365/exceptions/exceptions.py index 7d599386f9..fe2b8b442c 100644 --- a/prowler/providers/m365/exceptions/exceptions.py +++ b/prowler/providers/m365/exceptions/exceptions.py @@ -106,9 +106,9 @@ class M365BaseException(ProwlerException): "message": "The provided User is not valid.", "remediation": "Check the User and ensure it is a valid user.", }, - (6025, "M365NotValidEncryptedPasswordError"): { - "message": "The provided Encrypted Password is not valid.", - "remediation": "Check the Encrypted Password and ensure it is a valid password.", + (6025, "M365NotValidPasswordError"): { + "message": "The provided Password is not valid.", + "remediation": "Check the Password and ensure it is a valid password.", }, (6026, "M365UserNotBelongingToTenantError"): { "message": "The provided User does not belong to the specified tenant.", @@ -312,7 +312,7 @@ class M365NotValidUserError(M365CredentialsError): ) -class M365NotValidEncryptedPasswordError(M365CredentialsError): +class M365NotValidPasswordError(M365CredentialsError): def __init__(self, file=None, original_exception=None, message=None): super().__init__( 6025, file=file, original_exception=original_exception, message=message diff --git a/prowler/providers/m365/m365_provider.py b/prowler/providers/m365/m365_provider.py index c2a85f5f48..cf647ce978 100644 --- a/prowler/providers/m365/m365_provider.py +++ b/prowler/providers/m365/m365_provider.py @@ -43,7 +43,7 @@ from prowler.providers.m365.exceptions.exceptions import ( M365NotTenantIdButClientIdAndClientSecretError, M365NotValidClientIdError, M365NotValidClientSecretError, - M365NotValidEncryptedPasswordError, + M365NotValidPasswordError, M365NotValidTenantIdError, M365NotValidUserError, M365SetUpRegionConfigError, @@ -296,7 +296,7 @@ class M365Provider(Provider): client_id (str): The M365 Client ID. client_secret (str): The M365 Client Secret. user (str): The M365 User Account. - encrpted_password (str): The M365 Encrypted Password. + password (str): The M365 User Password. Raises: M365BrowserAuthNoTenantIDError: If browser authentication is enabled but the tenant ID is not found. @@ -494,7 +494,7 @@ class M365Provider(Provider): - client_id: The M365 client ID. - client_secret: The M365 client secret - user: The M365 user email - - password: The M365 encrypted password + - password: The M365 user password - provider_id: The M365 provider ID (in this case the Tenant ID). region_config (M365RegionConfig): The region configuration object. @@ -985,7 +985,7 @@ class M365Provider(Provider): client_id (str): The M365 client ID. client_secret (str): The M365 client secret. user (str): The M365 user email. - password (str): The M365 encrypted password. + password (str): The M365 user password. Raises: M365NotValidTenantIdError: If the provided M365 Tenant ID is not valid. @@ -1030,11 +1030,11 @@ class M365Provider(Provider): message="The provided User is not valid.", ) - # Validate the Encrypted Password + # Validate the Password if not password: - raise M365NotValidEncryptedPasswordError( + raise M365NotValidPasswordError( file=os.path.basename(__file__), - message="The provided Encrypted Password is not valid.", + message="The provided Password is not valid.", ) try: diff --git a/tests/providers/m365/m365_provider_test.py b/tests/providers/m365/m365_provider_test.py index 96a293c602..457173dc44 100644 --- a/tests/providers/m365/m365_provider_test.py +++ b/tests/providers/m365/m365_provider_test.py @@ -24,7 +24,7 @@ from prowler.providers.m365.exceptions.exceptions import ( M365NoAuthenticationMethodError, M365NotValidClientIdError, M365NotValidClientSecretError, - M365NotValidEncryptedPasswordError, + M365NotValidPasswordError, M365NotValidTenantIdError, M365NotValidUserError, M365UserNotBelongingToTenantError, @@ -396,14 +396,12 @@ class TestM365Provider: with patch( "prowler.providers.m365.m365_provider.M365Provider.validate_static_credentials" ) as mock_validate_static_credentials: - mock_validate_static_credentials.side_effect = ( - M365NotValidEncryptedPasswordError( - file=os.path.basename(__file__), - message="The provided M365 Encrypted Password is not valid.", - ) + mock_validate_static_credentials.side_effect = M365NotValidPasswordError( + file=os.path.basename(__file__), + message="The provided M365 Password is not valid.", ) - with pytest.raises(M365NotValidEncryptedPasswordError) as exception: + with pytest.raises(M365NotValidPasswordError) as exception: M365Provider.test_connection( tenant_id=str(uuid4()), region="M365Global", @@ -414,10 +412,8 @@ class TestM365Provider: password=None, ) - assert exception.type == M365NotValidEncryptedPasswordError - assert "The provided M365 Encrypted Password is not valid." in str( - exception.value - ) + assert exception.type == M365NotValidPasswordError + assert "The provided M365 Password is not valid." in str(exception.value) def test_test_connection_with_httpresponseerror(self): with patch( @@ -588,7 +584,7 @@ class TestM365Provider: assert "The provided User is not valid." in str(exception.value) def test_validate_static_credentials_missing_password(self): - with pytest.raises(M365NotValidEncryptedPasswordError) as exception: + with pytest.raises(M365NotValidPasswordError) as exception: M365Provider.validate_static_credentials( tenant_id="12345678-1234-5678-1234-567812345678", client_id="12345678-1234-5678-1234-567812345678", @@ -596,7 +592,7 @@ class TestM365Provider: user="test@example.com", password="", ) - assert "The provided Encrypted Password is not valid." in str(exception.value) + assert "The provided Password is not valid." in str(exception.value) def test_validate_arguments_missing_env_credentials(self): with pytest.raises(M365MissingEnvironmentCredentialsError) as exception: From 1b42dda817394546bc7c5c5bb3af958ea983aa30 Mon Sep 17 00:00:00 2001 From: Hugo Pereira Brito <101209179+HugoPBrito@users.noreply.github.com> Date: Fri, 23 May 2025 12:52:17 +0200 Subject: [PATCH 02/24] fix(formSchemas): encrypted password typo (#7828) --- ui/types/formSchemas.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/types/formSchemas.ts b/ui/types/formSchemas.ts index 8fae292824..168e45e261 100644 --- a/ui/types/formSchemas.ts +++ b/ui/types/formSchemas.ts @@ -144,7 +144,7 @@ export const addCredentialsFormSchema = (providerType: string) => user: z.string().nonempty("User is required"), password: z .string() - .nonempty("Encrypted Password is required"), + .nonempty("Password is required"), } : {}), }); From 33031d2c9624775582410865737cba09b34824d7 Mon Sep 17 00:00:00 2001 From: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com> Date: Fri, 23 May 2025 13:42:35 +0200 Subject: [PATCH 03/24] feat: implement provider UID extraction and mapping in scans pages (#7820) Co-authored-by: Pablo Lara --- ui/CHANGELOG.md | 1 + ui/actions/providers/providers.ts | 3 +- ui/app/(prowler)/findings/page.tsx | 51 +++++++++---------- ui/app/(prowler)/manage-groups/page.tsx | 2 +- ui/app/(prowler)/scans/page.tsx | 24 ++++++++- ui/components/filters/data-filters.ts | 25 +++++++-- .../ui/custom/custom-dropdown-filter.tsx | 2 +- .../ui/table/data-table-filter-custom.tsx | 23 +++++++-- ui/lib/provider-helpers.ts | 40 +++++++++++++++ ui/types/filters.ts | 1 + ui/types/providers.ts | 26 +++++++++- 11 files changed, 156 insertions(+), 42 deletions(-) create mode 100644 ui/lib/provider-helpers.ts diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index f56f24cec8..69068a16e2 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to the **Prowler UI** are documented in this file. - New profile page with details about the user and their roles. [(#7780)](https://github.com/prowler-cloud/prowler/pull/7780) - Improved `SnippetChip` component and show resource name in new findings table. [(#7813)](https://github.com/prowler-cloud/prowler/pull/7813) +- Add `Provider UID` filter to scans page. [(#7820)](https://github.com/prowler-cloud/prowler/pull/7820) --- diff --git a/ui/actions/providers/providers.ts b/ui/actions/providers/providers.ts index 66bcf318d7..f4891677ee 100644 --- a/ui/actions/providers/providers.ts +++ b/ui/actions/providers/providers.ts @@ -10,6 +10,7 @@ import { parseStringify, wait, } from "@/lib"; +import { ProvidersApiResponse } from "@/types/providers"; export const getProviders = async ({ page = 1, @@ -17,7 +18,7 @@ export const getProviders = async ({ sort = "", filters = {}, pageSize = 10, -}) => { +}): Promise => { const headers = await getAuthHeaders({ contentType: false }); if (isNaN(Number(page)) || page < 1) redirect("/providers"); diff --git a/ui/app/(prowler)/findings/page.tsx b/ui/app/(prowler)/findings/page.tsx index f1c5fac71f..e37902ac31 100644 --- a/ui/app/(prowler)/findings/page.tsx +++ b/ui/app/(prowler)/findings/page.tsx @@ -23,7 +23,10 @@ import { extractSortAndKey, hasDateOrScanFilter, } from "@/lib"; -import { ProviderAccountProps, ProviderProps } from "@/types"; +import { + createProviderDetailsMapping, + extractProviderUIDs, +} from "@/lib/provider-helpers"; import { FindingProps, ScanProps, SearchParamsProps } from "@/types/components"; export default async function Findings({ @@ -53,29 +56,23 @@ export default async function Findings({ const uniqueResourceTypes = metadataInfoData?.data?.attributes?.resource_types || []; - // Extract provider UIDs - const providerUIDs: string[] = Array.from( - new Set( - providersData?.data - ?.map((provider: ProviderProps) => provider.attributes?.uid) - .filter(Boolean), - ), - ); - - const providerDetails: Array<{ [uid: string]: ProviderAccountProps }> = - providerUIDs.map((uid) => { - const provider = providersData.data.find( - (p: { attributes: { uid: string } }) => p.attributes?.uid === uid, - ); + // Extract provider UIDs and details using helper functions + const providerUIDs = providersData ? extractProviderUIDs(providersData) : []; + const providerDetails = providersData + ? createProviderDetailsMapping(providerUIDs, providersData) + : []; + // Update the Provider UID filter + const updatedFilters = filterFindings.map((filter) => { + if (filter.key === "provider_uid__in") { return { - [uid]: { - provider: provider?.attributes?.provider || "", - uid: uid, - alias: provider?.attributes?.alias ?? null, - }, + ...filter, + values: providerUIDs, + valueLabelMapping: providerDetails, }; - }); + } + return filter; + }); // Extract scan UUIDs with "completed" state and more than one resource const completedScans = scansData?.data @@ -98,32 +95,30 @@ export default async function Findings({ { const matchingProvider = providersList.find( - (p: ProviderProps) => p.id === provider.id, + (p: { id: string; name: string }) => p.id === provider.id, ); return { id: provider.id, diff --git a/ui/app/(prowler)/scans/page.tsx b/ui/app/(prowler)/scans/page.tsx index 0679139770..bcf97dd47a 100644 --- a/ui/app/(prowler)/scans/page.tsx +++ b/ui/app/(prowler)/scans/page.tsx @@ -14,6 +14,10 @@ import { SkeletonTableScans } from "@/components/scans/table"; import { ColumnGetScans } from "@/components/scans/table/scans"; import { ContentLayout } from "@/components/ui"; import { DataTable, DataTableFilterCustom } from "@/components/ui/table"; +import { + createProviderDetailsMapping, + extractProviderUIDs, +} from "@/lib/provider-helpers"; import { ProviderProps, ScanProps, SearchParamsProps } from "@/types"; export default async function Scans({ @@ -61,6 +65,24 @@ export default async function Scans({ scan.attributes.state === "available", ); + // Extract provider UIDs and create provider details mapping for filtering + const providerUIDs = providersData ? extractProviderUIDs(providersData) : []; + const providerDetails = providersData + ? createProviderDetailsMapping(providerUIDs, providersData) + : []; + + // Update the Provider UID filter + const updatedFilters = filterScans.map((filter) => { + if (filter.key === "provider_uid__in") { + return { + ...filter, + values: providerUIDs, + valueLabelMapping: providerDetails, + }; + } + return filter; + }); + return ( <> {thereIsNoProviders && ( @@ -89,7 +111,7 @@ export default async function Scans({
- +
diff --git a/ui/components/filters/data-filters.ts b/ui/components/filters/data-filters.ts index 8d712bfb70..ec964bbc26 100644 --- a/ui/components/filters/data-filters.ts +++ b/ui/components/filters/data-filters.ts @@ -30,6 +30,11 @@ export const filterScans = [ labelCheckboxGroup: "Trigger", values: ["scheduled", "manual"], }, + { + key: "provider_uid__in", + labelCheckboxGroup: "Provider UID", + values: [], + }, // Add more filter categories as needed ]; @@ -38,21 +43,31 @@ export const filterFindings = [ key: "severity__in", labelCheckboxGroup: "Severity", values: ["critical", "high", "medium", "low", "informational"], + index: 1, }, { key: "status__in", labelCheckboxGroup: "Status", values: ["PASS", "FAIL", "MANUAL"], - }, - { - key: "delta__in", - labelCheckboxGroup: "Delta", - values: ["new", "changed"], + index: 2, }, { key: "provider_type__in", labelCheckboxGroup: "Cloud Provider", values: ["aws", "azure", "m365", "gcp", "kubernetes"], + index: 4, + }, + { + key: "provider_uid__in", + labelCheckboxGroup: "Provider UID", + values: [], + index: 8, + }, + { + key: "delta__in", + labelCheckboxGroup: "Delta", + values: ["new", "changed"], + index: 3, }, // Add more filter categories as needed ]; diff --git a/ui/components/ui/custom/custom-dropdown-filter.tsx b/ui/components/ui/custom/custom-dropdown-filter.tsx index ee18bab9bc..5664122e89 100644 --- a/ui/components/ui/custom/custom-dropdown-filter.tsx +++ b/ui/components/ui/custom/custom-dropdown-filter.tsx @@ -213,7 +213,7 @@ export const CustomDropdownFilter: React.FC = ({ {entity ? ( diff --git a/ui/components/ui/table/data-table-filter-custom.tsx b/ui/components/ui/table/data-table-filter-custom.tsx index 655297659c..3a394c30ef 100644 --- a/ui/components/ui/table/data-table-filter-custom.tsx +++ b/ui/components/ui/table/data-table-filter-custom.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState } from "react"; -import { useCallback } from "react"; +import { useCallback, useMemo } from "react"; import { CustomFilterIcon } from "@/components/icons"; import { CustomButton, CustomDropdownFilter } from "@/components/ui/custom"; @@ -20,6 +20,21 @@ export const DataTableFilterCustom = ({ const { updateFilter } = useUrlFilters(); const [showFilters, setShowFilters] = useState(defaultOpen); + // Sort filters by index property, with fallback to original order for filters without index + const sortedFilters = useMemo(() => { + return [...filters].sort((a, b) => { + // If both have index, sort by index + if (a.index !== undefined && b.index !== undefined) { + return a.index - b.index; + } + // If only one has index, prioritize the one with index + if (a.index !== undefined) return -1; + if (b.index !== undefined) return 1; + // If neither has index, maintain original order + return 0; + }); + }, [filters]); + const pushDropdownFilter = useCallback( (key: string, values: string[]) => { updateFilter(key, values.length > 0 ? values : null); @@ -30,7 +45,7 @@ export const DataTableFilterCustom = ({ return (
4 ? "flex-col" : "flex-col md:flex-row" + sortedFilters.length > 4 ? "flex-col" : "flex-col md:flex-row" } gap-4`} >
4 + sortedFilters.length >= 4 ? "grid-cols-1 md:grid-cols-4" : "grid-cols-1 md:grid-cols-3" }`} > - {filters.map((filter) => ( + {sortedFilters.map((filter) => ( { + if (!providersData?.data) return []; + + return Array.from( + new Set( + providersData.data + .map((provider: ProviderProps) => provider.attributes?.uid) + .filter(Boolean), + ), + ); +}; + +export const createProviderDetailsMapping = ( + providerUIDs: string[], + providersData: ProvidersApiResponse, +): Array<{ [uid: string]: ProviderAccountProps }> => { + if (!providersData?.data) return []; + + return providerUIDs.map((uid) => { + const provider = providersData.data.find( + (p: { attributes: { uid: string } }) => p.attributes?.uid === uid, + ); + + return { + [uid]: { + provider: provider?.attributes?.provider || "aws", + uid: uid, + alias: provider?.attributes?.alias ?? null, + }, + }; + }); +}; diff --git a/ui/types/filters.ts b/ui/types/filters.ts index a8fb78dde9..e6f364794e 100644 --- a/ui/types/filters.ts +++ b/ui/types/filters.ts @@ -5,6 +5,7 @@ export interface FilterOption { labelCheckboxGroup: string; values: string[]; valueLabelMapping?: Array<{ [uid: string]: ProviderAccountProps }>; + index?: number; } export interface CustomDropdownFilterProps { diff --git a/ui/types/providers.ts b/ui/types/providers.ts index 6bac15262c..f12fd25944 100644 --- a/ui/types/providers.ts +++ b/ui/types/providers.ts @@ -48,7 +48,7 @@ export interface ProviderProps { export interface ProviderAccountProps { provider: ProviderType; uid: string; - alias: string; + alias: string | null; } export interface ProviderOverviewProps { @@ -71,3 +71,27 @@ export interface ProviderOverviewProps { version: string; }; } + +export interface ProvidersApiResponse { + links: { + first: string; + last: string; + next: string | null; + prev: string | null; + }; + data: ProviderProps[]; + included?: Array<{ + type: string; + id: string; + attributes: any; + relationships?: any; + }>; + meta: { + pagination: { + page: number; + pages: number; + count: number; + }; + version: string; + }; +} From 91545e409ed75d86620b8129138b85ba4ad17a25 Mon Sep 17 00:00:00 2001 From: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com> Date: Fri, 23 May 2025 14:45:28 +0200 Subject: [PATCH 04/24] feat: change tenant name in /profile page (#7829) Co-authored-by: Pablo Lara --- ui/CHANGELOG.md | 1 + ui/actions/users/tenants.ts | 67 +++++++++++++ ui/app/(prowler)/profile/page.tsx | 34 ++++--- .../ui/custom/custom-alert-modal.tsx | 3 +- .../ui/custom/custom-server-input.tsx | 52 ++++++++++ ui/components/ui/custom/index.ts | 1 + ui/components/ui/entities/info-field.tsx | 28 +++++- .../users/forms/edit-tenant-form.tsx | 95 +++++++++++++++++++ ui/components/users/forms/index.ts | 1 + .../users/profile/membership-item.tsx | 84 ++++++++++++---- .../users/profile/memberships-card.tsx | 24 +++-- ui/components/users/profile/role-item.tsx | 2 +- .../users/profile/user-basic-info-card.tsx | 54 +++++------ ui/lib/permissions.ts | 20 ++++ 14 files changed, 397 insertions(+), 69 deletions(-) create mode 100644 ui/components/ui/custom/custom-server-input.tsx create mode 100644 ui/components/users/forms/edit-tenant-form.tsx diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index 69068a16e2..e58655a05f 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to the **Prowler UI** are documented in this file. - New profile page with details about the user and their roles. [(#7780)](https://github.com/prowler-cloud/prowler/pull/7780) - Improved `SnippetChip` component and show resource name in new findings table. [(#7813)](https://github.com/prowler-cloud/prowler/pull/7813) +- Possibility to edit the organization name. [(#7829)](https://github.com/prowler-cloud/prowler/pull/7829) - Add `Provider UID` filter to scans page. [(#7820)](https://github.com/prowler-cloud/prowler/pull/7820) --- diff --git a/ui/actions/users/tenants.ts b/ui/actions/users/tenants.ts index 0901345852..9063fc9e1b 100644 --- a/ui/actions/users/tenants.ts +++ b/ui/actions/users/tenants.ts @@ -1,4 +1,7 @@ +"use server"; + import { revalidatePath } from "next/cache"; +import { z } from "zod"; import { apiBaseUrl, getAuthHeaders, parseStringify } from "@/lib/helper"; @@ -26,3 +29,67 @@ export const getAllTenants = async () => { return undefined; } }; + +const editTenantFormSchema = z + .object({ + tenantId: z.string(), + name: z.string().trim().min(1, { message: "Name is required" }), + currentName: z.string(), + }) + .refine((data) => data.name !== data.currentName, { + message: "Name must be different from the current name", + path: ["name"], + }); + +export async function updateTenantName(prevState: any, formData: FormData) { + const headers = await getAuthHeaders({ contentType: true }); + const formDataObject = Object.fromEntries(formData); + const validatedData = editTenantFormSchema.safeParse(formDataObject); + + if (!validatedData.success) { + const formFieldErrors = validatedData.error.flatten().fieldErrors; + + return { + errors: { + name: formFieldErrors?.name?.[0], + }, + }; + } + + const { tenantId, name } = validatedData.data; + + const payload = { + data: { + type: "tenants", + id: tenantId, + attributes: { + name: name.trim(), + }, + }, + }; + + try { + const url = new URL(`${apiBaseUrl}/tenants/${tenantId}`); + const response = await fetch(url.toString(), { + method: "PATCH", + headers, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error(`Failed to update tenant name: ${response.statusText}`); + } + + await response.json(); + revalidatePath("/profile"); + return { success: "Tenant name updated successfully!" }; + } catch (error) { + // eslint-disable-next-line no-console + console.error("Error updating tenant name:", error); + return { + errors: { + general: "Error updating tenant name. Please try again.", + }, + }; + } +} diff --git a/ui/app/(prowler)/profile/page.tsx b/ui/app/(prowler)/profile/page.tsx index b78d9e8439..29d8a01e45 100644 --- a/ui/app/(prowler)/profile/page.tsx +++ b/ui/app/(prowler)/profile/page.tsx @@ -8,16 +8,15 @@ import { UserBasicInfoCard } from "@/components/users/profile"; import { MembershipsCard } from "@/components/users/profile/memberships-card"; import { RolesCard } from "@/components/users/profile/roles-card"; import { SkeletonUserInfo } from "@/components/users/profile/skeleton-user-info"; +import { isUserOwnerAndHasManageAccount } from "@/lib/permissions"; import { RoleDetail, TenantDetailData } from "@/types/users/users"; export default async function Profile() { return ( -
- }> - - -
+ }> + +
); } @@ -61,14 +60,27 @@ const SSRDataUser = async () => { ), ); + const isOwner = isUserOwnerAndHasManageAccount( + roleDetails, + memberships?.data || [], + userProfile.data.id, + ); + return ( -
+
- - +
+
+ +
+
+ +
+
); }; diff --git a/ui/components/ui/custom/custom-alert-modal.tsx b/ui/components/ui/custom/custom-alert-modal.tsx index 2df428104e..3878bb686f 100644 --- a/ui/components/ui/custom/custom-alert-modal.tsx +++ b/ui/components/ui/custom/custom-alert-modal.tsx @@ -23,9 +23,10 @@ export const CustomAlertModal: React.FC = ({ size="xl" classNames={{ base: "dark:bg-prowler-blue-800", - closeButton: "right-0", + closeButton: "rounded-md", }} backdrop="blur" + placement="center" > {(_onClose) => ( diff --git a/ui/components/ui/custom/custom-server-input.tsx b/ui/components/ui/custom/custom-server-input.tsx new file mode 100644 index 0000000000..58318d96c9 --- /dev/null +++ b/ui/components/ui/custom/custom-server-input.tsx @@ -0,0 +1,52 @@ +"use client"; + +import { Input } from "@nextui-org/react"; +import React from "react"; + +interface CustomServerInputProps { + name: string; + label?: string; + labelPlacement?: "inside" | "outside"; + variant?: "flat" | "bordered" | "underlined" | "faded"; + type?: string; + placeholder?: string; + isRequired?: boolean; + isInvalid?: boolean; + errorMessage?: string; +} + +/** + * Custom input component that is used to display a server input without useForm hook. + */ +export const CustomServerInput = ({ + name, + type = "text", + label, + labelPlacement = "outside", + placeholder, + variant = "bordered", + isRequired = false, + isInvalid = false, + errorMessage, +}: CustomServerInputProps) => { + return ( +
+ +
+ ); +}; diff --git a/ui/components/ui/custom/index.ts b/ui/components/ui/custom/index.ts index d236bdc1d1..4e7a55b03f 100644 --- a/ui/components/ui/custom/index.ts +++ b/ui/components/ui/custom/index.ts @@ -6,4 +6,5 @@ export * from "./custom-dropdown-selection"; export * from "./custom-input"; export * from "./custom-loader"; export * from "./custom-radio"; +export * from "./custom-server-input"; export * from "./custom-textarea"; diff --git a/ui/components/ui/entities/info-field.tsx b/ui/components/ui/entities/info-field.tsx index 0607efdf7b..3d75bb98ae 100644 --- a/ui/components/ui/entities/info-field.tsx +++ b/ui/components/ui/entities/info-field.tsx @@ -5,9 +5,10 @@ import { InfoIcon } from "lucide-react"; interface InfoFieldProps { label: string; children: React.ReactNode; - variant?: "default" | "simple"; + variant?: "default" | "simple" | "transparent"; className?: string; tooltipContent?: string; + inline?: boolean; } { + if (inline) { + return ( +
+ + + {label}: + {tooltipContent && ( + +
+ +
+
+ )} +
+
+
{children}
+
+ ); + } + return (
@@ -45,8 +67,10 @@ export const InfoField = ({
{children}
+ ) : variant === "transparent" ? ( +
{children}
) : ( -
+
{children}
)} diff --git a/ui/components/users/forms/edit-tenant-form.tsx b/ui/components/users/forms/edit-tenant-form.tsx new file mode 100644 index 0000000000..1e4d83d523 --- /dev/null +++ b/ui/components/users/forms/edit-tenant-form.tsx @@ -0,0 +1,95 @@ +"use client"; + +import { Dispatch, SetStateAction, useEffect } from "react"; +import { useFormState, useFormStatus } from "react-dom"; + +import { updateTenantName } from "@/actions/users/tenants"; +import { SaveIcon } from "@/components/icons"; +import { useToast } from "@/components/ui"; +import { CustomButton, CustomServerInput } from "@/components/ui/custom"; + +const SubmitButton = () => { + const { pending } = useFormStatus(); + + return ( + } + > + {pending ? <>Loading : Save} + + ); +}; + +export const EditTenantForm = ({ + tenantId, + tenantName, + setIsOpen, +}: { + tenantId: string; + tenantName?: string; + setIsOpen: Dispatch>; +}) => { + const [state, formAction] = useFormState(updateTenantName, null); + const { toast } = useToast(); + + useEffect(() => { + if (state?.success) { + toast({ + title: "Changed successfully", + description: state.success, + }); + setIsOpen(false); + } else if (state?.errors?.general) { + toast({ + variant: "destructive", + title: "Oops! Something went wrong", + description: state.errors.general, + }); + } + }, [state, toast, setIsOpen]); + + return ( +
+
+ Current name: {tenantName} +
+ + + + {/* Hidden inputs for Server Action */} + + + +
+ setIsOpen(false)} + > + Cancel + + + +
+ + ); +}; diff --git a/ui/components/users/forms/index.ts b/ui/components/users/forms/index.ts index a081952ade..7d863e16c5 100644 --- a/ui/components/users/forms/index.ts +++ b/ui/components/users/forms/index.ts @@ -1,2 +1,3 @@ export * from "./delete-form"; export * from "./edit-form"; +export * from "./edit-tenant-form"; diff --git a/ui/components/users/profile/membership-item.tsx b/ui/components/users/profile/membership-item.tsx index f9d28a9f7d..5db1e5cc6b 100644 --- a/ui/components/users/profile/membership-item.tsx +++ b/ui/components/users/profile/membership-item.tsx @@ -1,27 +1,77 @@ -import { Chip } from "@nextui-org/react"; +"use client"; -import { DateWithTime } from "@/components/ui/entities"; +import { Chip } from "@nextui-org/react"; +import { useState } from "react"; + +import { CustomAlertModal, CustomButton } from "@/components/ui/custom"; +import { DateWithTime, InfoField } from "@/components/ui/entities"; import { MembershipDetailData } from "@/types/users/users"; +import { EditTenantForm } from "../forms"; + export const MembershipItem = ({ membership, tenantName, + tenantId, + isOwner, }: { membership: MembershipDetailData; tenantName: string; -}) => ( -
-
-
- - {membership.attributes.role} - -

{tenantName}

+ tenantId: string; + isOwner: boolean; +}) => { + const [isEditOpen, setIsEditOpen] = useState(false); + + return ( + <> + + + + +
+
+ + {membership.attributes.role} + + +
+ + + {tenantName} + + + + + +
+ + {isOwner && ( + setIsEditOpen(true)} + > + Change name + + )} +
-
-
- Joined on: - -
-
-); + + ); +}; diff --git a/ui/components/users/profile/memberships-card.tsx b/ui/components/users/profile/memberships-card.tsx index c752882156..43138c74c5 100644 --- a/ui/components/users/profile/memberships-card.tsx +++ b/ui/components/users/profile/memberships-card.tsx @@ -7,9 +7,11 @@ import { MembershipItem } from "./membership-item"; export const MembershipsCard = ({ memberships, tenantsMap, + isOwner, }: { memberships: MembershipDetailData[]; tenantsMap: Record; + isOwner: boolean; }) => { return ( @@ -26,16 +28,18 @@ export const MembershipsCard = ({
No memberships found.
) : (
- {memberships.map((membership) => ( - - ))} + {memberships.map((membership) => { + const tenantId = membership.relationships.tenant.data.id; + return ( + + ); + })}
)} diff --git a/ui/components/users/profile/role-item.tsx b/ui/components/users/profile/role-item.tsx index 27c056843c..460d9d5398 100644 --- a/ui/components/users/profile/role-item.tsx +++ b/ui/components/users/profile/role-item.tsx @@ -35,7 +35,7 @@ export const RoleItem = ({ role: RoleData; roleDetail?: RoleDetail; }) => { - const [isExpanded, setIsExpanded] = useState(false); + const [isExpanded, setIsExpanded] = useState(true); if (!roleDetail) { return ( diff --git a/ui/components/users/profile/user-basic-info-card.tsx b/ui/components/users/profile/user-basic-info-card.tsx index 456f9b777e..37805b2c55 100644 --- a/ui/components/users/profile/user-basic-info-card.tsx +++ b/ui/components/users/profile/user-basic-info-card.tsx @@ -1,17 +1,15 @@ "use client"; import { Card, CardBody, Divider } from "@nextui-org/react"; -import { CircleUserRound } from "lucide-react"; -import { DateWithTime, SnippetChip } from "@/components/ui/entities"; +import { DateWithTime, InfoField, SnippetChip } from "@/components/ui/entities"; import { UserDataWithRoles } from "@/types/users/users"; +import { ProwlerShort } from "../../icons"; + const TenantIdCopy = ({ id }: { id: string }) => { return ( -
-

- Active organization ID: -

+
); @@ -29,30 +27,32 @@ export const UserBasicInfoCard = ({ return ( -
- -
-

Name:

- {name} +
+
+
-
-

Email:

- {email} -
-
-

Company:

- {company_name} -
-
-

- Date Joined: -

- - +
+ {name} + + {email} + {company_name && ` | ${company_name}`}
- - +
+ +
+
+
+ + + +
+
+
+ + + +
diff --git a/ui/lib/permissions.ts b/ui/lib/permissions.ts index 6e0862637d..7315258a9d 100644 --- a/ui/lib/permissions.ts +++ b/ui/lib/permissions.ts @@ -1,5 +1,25 @@ import { RolePermissionAttributes } from "@/types/users/users"; +export const isUserOwnerAndHasManageAccount = ( + roles: any[], + memberships: any[], + userId: string, +): boolean => { + const isOwner = memberships.some( + (membership) => + membership.attributes.role === "owner" && + membership.relationships?.user?.data?.id === userId, + ); + + const hasManageAccount = roles.some( + (role) => + role.attributes.manage_account === true && + role.relationships?.users?.data?.some((user: any) => user.id === userId), + ); + + return isOwner && hasManageAccount; +}; + /** * Get the permissions for a user role * @param attributes - The attributes of the user role From 50bcd828e9dc82cc7eee47044e300530d6283872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Jes=C3=BAs=20Pe=C3=B1a=20Rodr=C3=ADguez?= Date: Mon, 26 May 2025 10:24:11 +0200 Subject: [PATCH 05/24] fix(reports): change invalid search term for tasks (#7830) --- api/CHANGELOG.md | 7 ++++++ api/src/backend/api/tests/test_views.py | 31 +++++++++++++++++++++++++ api/src/backend/api/v1/views.py | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/api/CHANGELOG.md b/api/CHANGELOG.md index a4e118478b..299c3f715e 100644 --- a/api/CHANGELOG.md +++ b/api/CHANGELOG.md @@ -9,6 +9,13 @@ All notable changes to the **Prowler API** are documented in this file. --- +## [v1.8.2] (Prowler v5.7.2) + +### Fixed +- Fixed task lookup to use task_kwargs instead of task_args for scan report resolution. [(#7830)](https://github.com/prowler-cloud/prowler/pull/7830) + +--- + ## [v1.8.1] (Prowler v5.7.1) ### Fixed diff --git a/api/src/backend/api/tests/test_views.py b/api/src/backend/api/tests/test_views.py index 80ab44b946..97beecd6e3 100644 --- a/api/src/backend/api/tests/test_views.py +++ b/api/src/backend/api/tests/test_views.py @@ -13,6 +13,7 @@ from botocore.exceptions import ClientError, NoCredentialsError from conftest import API_JSON_CONTENT_TYPE, TEST_PASSWORD, TEST_USER from django.conf import settings from django.urls import reverse +from django_celery_results.models import TaskResult from rest_framework import status from api.compliance import get_compliance_frameworks @@ -2600,6 +2601,36 @@ class TestScanViewSet: assert response.status_code == status.HTTP_404_NOT_FOUND + @patch("api.v1.views.TaskSerializer") + def test__get_task_status_finds_task_using_kwargs( + self, mock_task_serializer, authenticated_client, scans_fixture + ): + scan = scans_fixture[0] + scan.state = StateChoices.COMPLETED + scan.output_location = "dummy" + scan.save() + + task_result = TaskResult.objects.create( + task_name="scan-report", + task_kwargs={"scan_id": str(scan.id)}, + ) + + task = Task.objects.create( + tenant_id=scan.tenant_id, + task_runner_task=task_result, + ) + + mock_task_serializer.return_value.data = { + "id": str(task.id), + "state": StateChoices.EXECUTING, + } + + url = reverse("scan-report", kwargs={"pk": scan.id}) + response = authenticated_client.get(url) + + assert response.status_code == status.HTTP_202_ACCEPTED + assert response.data["id"] == str(task.id) + @patch("api.v1.views.get_s3_client") @patch("api.v1.views.sentry_sdk.capture_exception") def test_compliance_list_objects_client_error( diff --git a/api/src/backend/api/v1/views.py b/api/src/backend/api/v1/views.py index 52ba70c264..39a48a0c16 100644 --- a/api/src/backend/api/v1/views.py +++ b/api/src/backend/api/v1/views.py @@ -1281,7 +1281,7 @@ class ScanViewSet(BaseRLSViewSet): try: task = Task.objects.get( task_runner_task__task_name="scan-report", - task_runner_task__task_args__contains=str(scan_instance.id), + task_runner_task__task_kwargs__contains=str(scan_instance.id), ) except Task.DoesNotExist: return None From eaec683eb9d672167f1dc4e39c83c0125fa7db13 Mon Sep 17 00:00:00 2001 From: Andoni Alonso <14891798+andoniaf@users.noreply.github.com> Date: Mon, 26 May 2025 10:39:09 +0200 Subject: [PATCH 06/24] feat(repositoy): add new check `repository_inactive_not_archived` (#7786) Co-authored-by: Sergio Garcia --- docs/tutorials/configuration_file.md | 14 ++ prowler/CHANGELOG.md | 1 + prowler/config/config.yaml | 5 + .../__init__.py | 0 ...sitory_inactive_not_archived.metadata.json | 30 +++ .../repository_inactive_not_archived.py | 45 ++++ .../services/repository/repository_service.py | 5 + .../providers/github/github_provider_test.py | 12 +- ...ory_branch_delete_on_merge_enabled_test.py | 5 + ...y_default_branch_deletion_disabled_test.py | 19 +- ...efault_branch_disallows_force_push_test.py | 5 + ...ranch_protection_applies_to_admins_test.py | 5 + ..._default_branch_protection_enabled_test.py | 5 + ..._branch_requires_codeowners_review_test.py | 5 + ...h_requires_conversation_resolution_test.py | 5 + ...ult_branch_requires_linear_history_test.py | 5 + ...branch_requires_multiple_approvals_test.py | 7 + ...ult_branch_requires_signed_commits_test.py | 5 + ...ault_branch_status_checks_required_test.py | 5 + ...sitory_dependency_scanning_enabled_test.py | 5 + .../repository_has_codeowners_file_test.py | 5 + .../repository_inactive_not_archived_test.py | 206 ++++++++++++++++++ ...ository_public_has_securitymd_file_test.py | 5 + ...repository_secret_scanning_enabled_test.py | 5 + .../repository/repository_service_test.py | 7 + 25 files changed, 407 insertions(+), 9 deletions(-) create mode 100644 prowler/providers/github/services/repository/repository_inactive_not_archived/__init__.py create mode 100644 prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.metadata.json create mode 100644 prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py create mode 100644 tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py diff --git a/docs/tutorials/configuration_file.md b/docs/tutorials/configuration_file.md index 78b9865183..dc1e66c96c 100644 --- a/docs/tutorials/configuration_file.md +++ b/docs/tutorials/configuration_file.md @@ -109,6 +109,15 @@ The following list includes all the Microsoft 365 checks with configurable varia | `exchange_organization_mailtips_enabled` | `recommended_mailtips_large_audience_threshold` | Integer | +## GitHub + +### Configurable Checks +The following list includes all the GitHub checks with configurable variables that can be changed in the configuration yaml file: + +| Check Name | Value | Type | +|--------------------------------------------|---------------------------------------------|---------| +| `repository_inactive_not_archived` | `inactive_not_archived_days_threshold` | Integer | + ## Config YAML File Structure ???+ note @@ -525,5 +534,10 @@ m365: # m365.exchange_organization_mailtips_enabled recommended_mailtips_large_audience_threshold: 25 # maximum number of recipients +# GitHub Configuration +github: + # github.repository_inactive_not_archived + inactive_not_archived_days_threshold: 180 + ``` diff --git a/prowler/CHANGELOG.md b/prowler/CHANGELOG.md index 0743229677..89cec16b9a 100644 --- a/prowler/CHANGELOG.md +++ b/prowler/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to the **Prowler SDK** are documented in this file. - Add CIS 4.0 compliance framework for GCP. [(7785)](https://github.com/prowler-cloud/prowler/pull/7785) - Add `repository_has_codeowners_file` check for GitHub provider. [(#7752)](https://github.com/prowler-cloud/prowler/pull/7752) - Add `repository_default_branch_requires_signed_commits` check for GitHub provider. [(#7777)](https://github.com/prowler-cloud/prowler/pull/7777) +- Add `repository_inactive_not_archived` check for GitHub provider. [(#7786)](https://github.com/prowler-cloud/prowler/pull/7786) - Add `repository_dependency_scanning_enabled` check for GitHub provider. [(#7771)](https://github.com/prowler-cloud/prowler/pull/7771) - Add `repository_secret_scanning_enabled` check for GitHub provider. [(#7759)](https://github.com/prowler-cloud/prowler/pull/7759) - Add `repository_default_branch_requires_codeowners_review` check for GitHub provider. [(#7753)](https://github.com/prowler-cloud/prowler/pull/7753) diff --git a/prowler/config/config.yaml b/prowler/config/config.yaml index c4bcd40b8e..1385ffef4f 100644 --- a/prowler/config/config.yaml +++ b/prowler/config/config.yaml @@ -515,3 +515,8 @@ m365: # m365.exchange_mailbox_properties_auditing_enabled # Maximum number of days to keep audit logs audit_log_age: 90 + +# GitHub Configuration +github: + # github.repository_inactive_not_archived --> CIS recommends 180 days (6 months) + inactive_not_archived_days_threshold: 180 diff --git a/prowler/providers/github/services/repository/repository_inactive_not_archived/__init__.py b/prowler/providers/github/services/repository/repository_inactive_not_archived/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.metadata.json b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.metadata.json new file mode 100644 index 0000000000..07395fe6b7 --- /dev/null +++ b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.metadata.json @@ -0,0 +1,30 @@ +{ + "Provider": "github", + "CheckID": "repository_inactive_not_archived", + "CheckTitle": "Check for inactive repositories that are not archived", + "CheckType": [], + "ServiceName": "repository", + "SubServiceName": "", + "ResourceIdTemplate": "", + "Severity": "medium", + "ResourceType": "GitHubRepository", + "Description": "Ensure that repositories with no activity are reviewed and considered for archival. Inactive repositories may have outdated dependencies or security configurations that could pose security risks.", + "Risk": "Inactive repositories that are not archived may contain outdated dependencies, unpatched vulnerabilities, or misconfigured security settings. These repositories increase the attack surface and could be targeted by malicious actors.", + "RelatedUrl": "https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories", + "Remediation": { + "Code": { + "CLI": "", + "NativeIaC": "", + "Other": "", + "Terraform": "" + }, + "Recommendation": { + "Text": "Review inactive repositories and either: 1) Archive them if they are no longer needed, 2) Update their dependencies and security configurations if they are still required, or 3) Delete them if they contain no valuable information.", + "Url": "https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories" + } + }, + "Categories": [], + "DependsOn": [], + "RelatedTo": [], + "Notes": "" +} diff --git a/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py new file mode 100644 index 0000000000..fb28094598 --- /dev/null +++ b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py @@ -0,0 +1,45 @@ +from datetime import datetime, timezone +from typing import List + +from prowler.lib.check.models import Check, CheckReportGithub +from prowler.providers.github.services.repository.repository_client import ( + repository_client, +) + + +class repository_inactive_not_archived(Check): + """Check if unarchived repositories have been inactive for more than 6 months.""" + + def execute(self) -> List[CheckReportGithub]: + findings = [] + + now = datetime.now(timezone.utc) + + days_threshold = repository_client.audit_config.get( + "inactive_not_archived_days_threshold", 180 + ) + + for repo in repository_client.repositories.values(): + report = CheckReportGithub( + metadata=self.metadata(), resource=repo, repository=repo.name + ) + + if repo.archived: + report.status = "PASS" + report.status_extended = f"Repository {repo.name} is properly archived." + findings.append(report) + continue + + latest_activity = repo.pushed_at + days_inactive = (now - latest_activity).days + + if days_inactive >= days_threshold: + report.status = "FAIL" + report.status_extended = f"Repository {repo.name} has been inactive for {days_inactive} days and is not archived (threshold: {days_threshold} days)." + else: + report.status = "PASS" + report.status_extended = f"Repository {repo.name} has been active within the last {days_threshold} days ({days_inactive} days ago)." + + findings.append(report) + + return findings diff --git a/prowler/providers/github/services/repository/repository_service.py b/prowler/providers/github/services/repository/repository_service.py index 49cc11177e..b586bdecf3 100644 --- a/prowler/providers/github/services/repository/repository_service.py +++ b/prowler/providers/github/services/repository/repository_service.py @@ -1,3 +1,4 @@ +from datetime import datetime from typing import Optional from pydantic import BaseModel @@ -163,6 +164,8 @@ class Repository(GithubService): full_name=repo.full_name, default_branch=repo.default_branch, private=repo.private, + archived=repo.archived, + pushed_at=repo.pushed_at, securitymd=securitymd_exists, require_pull_request=require_pr, approval_count=approval_cnt, @@ -197,6 +200,8 @@ class Repo(BaseModel): default_branch_protection: Optional[bool] default_branch: str private: bool + archived: bool + pushed_at: datetime securitymd: Optional[bool] require_pull_request: Optional[bool] required_linear_history: Optional[bool] diff --git a/tests/providers/github/github_provider_test.py b/tests/providers/github/github_provider_test.py index 30d770ef3b..60b705b629 100644 --- a/tests/providers/github/github_provider_test.py +++ b/tests/providers/github/github_provider_test.py @@ -59,7 +59,9 @@ class TestGitHubProvider: account_id=ACCOUNT_ID, account_url=ACCOUNT_URL, ) - assert provider._audit_config == {} + assert provider._audit_config == { + "inactive_not_archived_days_threshold": 180, + } assert provider._fixer_config == fixer_config def test_github_provider_OAuth(self): @@ -99,7 +101,9 @@ class TestGitHubProvider: account_id=ACCOUNT_ID, account_url=ACCOUNT_URL, ) - assert provider._audit_config == {} + assert provider._audit_config == { + "inactive_not_archived_days_threshold": 180, + } assert provider._fixer_config == fixer_config def test_github_provider_App(self): @@ -133,5 +137,7 @@ class TestGitHubProvider: assert provider._type == "github" assert provider.session == GithubSession(token="", id=APP_ID, key=APP_KEY) assert provider.identity == GithubAppIdentityInfo(app_id=APP_ID) - assert provider._audit_config == {} + assert provider._audit_config == { + "inactive_not_archived_days_threshold": 180, + } assert provider._fixer_config == fixer_config diff --git a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py index fc9a5c3ddd..1152c937f9 100644 --- a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py +++ b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -39,6 +40,8 @@ class Test_repository_branch_delete_on_merge_enabled_test: private=False, securitymd=False, delete_branch_on_merge=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -79,6 +82,8 @@ class Test_repository_branch_delete_on_merge_enabled_test: private=False, securitymd=True, delete_branch_on_merge=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py index 825e4bdc6e..d0cd44d3db 100644 --- a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -31,15 +32,18 @@ class Test_repository_default_branch_deletion_disabled_test: repository_client = mock.MagicMock repo_name = "repo1" default_branch = "main" + now = datetime.now(timezone.utc) + repository_client.repositories = { 1: Repo( id=1, name=repo_name, full_name="account-name/repo1", default_branch=default_branch, - default_branch_deletion=True, private=False, - securitymd=False, + archived=False, + pushed_at=now, + default_branch_deletion=True, ), } @@ -61,7 +65,7 @@ class Test_repository_default_branch_deletion_disabled_test: result = check.execute() assert len(result) == 1 assert result[0].resource_id == 1 - assert result[0].resource_name == "repo1" + assert result[0].resource_name == repo_name assert result[0].status == "FAIL" assert ( result[0].status_extended @@ -72,15 +76,18 @@ class Test_repository_default_branch_deletion_disabled_test: repository_client = mock.MagicMock repo_name = "repo1" default_branch = "main" + now = datetime.now(timezone.utc) + repository_client.repositories = { 1: Repo( id=1, name=repo_name, full_name="account-name/repo1", - private=False, default_branch=default_branch, + private=False, + archived=False, + pushed_at=now, default_branch_deletion=False, - securitymd=True, ), } @@ -102,7 +109,7 @@ class Test_repository_default_branch_deletion_disabled_test: result = check.execute() assert len(result) == 1 assert result[0].resource_id == 1 - assert result[0].resource_name == "repo1" + assert result[0].resource_name == repo_name assert result[0].status == "PASS" assert ( result[0].status_extended diff --git a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py index a9da35d0fe..30e79ea39e 100644 --- a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_default_branch_disallows_force_push_test: allow_force_pushes=True, private=False, securitymd=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_default_branch_disallows_force_push_test: default_branch=default_branch, allow_force_pushes=False, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py index f85bbdced9..80f19664aa 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_default_branch_protection_applies_to_admins_test: private=False, securitymd=False, enforce_admins=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_default_branch_protection_applies_to_admins_test: default_branch=default_branch, enforce_admins=True, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py index 3723863298..f323ac086a 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_default_branch_protection_enabled_test: private=False, default_branch_protection=False, securitymd=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_default_branch_protection_enabled_test: default_branch=default_branch, default_branch_protection=True, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py index fe64448402..914b24e782 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -41,6 +42,8 @@ class Test_repository_default_branch_requires_codeowners_review: require_pull_request=False, approval_count=0, require_code_owner_reviews=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -83,6 +86,8 @@ class Test_repository_default_branch_requires_codeowners_review: require_pull_request=False, approval_count=0, require_code_owner_reviews=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py index 2fe4b1dbd5..9261a97c14 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -38,6 +39,8 @@ class Test_repository_default_branch_requires_conversation_resolution_test: full_name="account-name/repo1", default_branch=default_branch, conversation_resolution=False, + archived=False, + pushed_at=datetime.now(timezone.utc), private=False, securitymd=False, ), @@ -80,6 +83,8 @@ class Test_repository_default_branch_requires_conversation_resolution_test: private=False, default_branch=default_branch, conversation_resolution=True, + archived=False, + pushed_at=datetime.now(timezone.utc), securitymd=True, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py index 5759697999..413e1db558 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_default_branch_requires_linear_history_test: required_linear_history=False, private=False, securitymd=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_default_branch_requires_linear_history_test: default_branch=default_branch, required_linear_history=True, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py index be8905fc7d..489231a642 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -41,6 +42,8 @@ class Test_repository_default_branch_requires_multiple_approvals: securitymd=False, require_pull_request=False, approval_count=0, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -83,6 +86,8 @@ class Test_repository_default_branch_requires_multiple_approvals: securitymd=False, require_pull_request=True, approval_count=0, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -125,6 +130,8 @@ class Test_repository_default_branch_requires_multiple_approvals: securitymd=True, require_pull_request=True, approval_count=2, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py index dd177f4288..637a0bd588 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_default_branch_requires_signed_commits: default_branch=default_branch, require_signed_commits=False, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_default_branch_requires_signed_commits: default_branch=default_branch, require_signed_commits=True, securitymd=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py index 0da7d9425f..a2e479a7b5 100644 --- a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -38,6 +39,8 @@ class Test_repository_default_branch_status_checks_required_test: full_name="account-name/repo1", default_branch=default_branch, status_checks=False, + archived=False, + pushed_at=datetime.now(timezone.utc), private=False, securitymd=False, ), @@ -80,6 +83,8 @@ class Test_repository_default_branch_status_checks_required_test: private=False, default_branch=default_branch, status_checks=True, + archived=False, + pushed_at=datetime.now(timezone.utc), securitymd=True, ), } diff --git a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py index 9930055be8..f4c22c3be1 100644 --- a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -37,6 +38,8 @@ class Test_repository_dependency_scanning_enabled: full_name="account-name/repo1", default_branch="main", private=False, + archived=False, + pushed_at=datetime.now(timezone.utc), securitymd=True, require_pull_request=False, approval_count=0, @@ -80,6 +83,8 @@ class Test_repository_dependency_scanning_enabled: full_name="account-name/repo2", default_branch="main", private=False, + archived=False, + pushed_at=datetime.now(timezone.utc), securitymd=True, require_pull_request=False, approval_count=0, diff --git a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py index 57cb5a53e7..06d4982fd5 100644 --- a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py +++ b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -41,6 +42,8 @@ class Test_repository_has_codeowners_file: require_pull_request=False, approval_count=0, codeowners_exists=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -83,6 +86,8 @@ class Test_repository_has_codeowners_file: require_pull_request=False, approval_count=0, codeowners_exists=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py b/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py new file mode 100644 index 0000000000..58291070df --- /dev/null +++ b/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py @@ -0,0 +1,206 @@ +from datetime import datetime, timedelta, timezone +from unittest import mock + +from prowler.providers.github.services.repository.repository_service import Repo +from tests.providers.github.github_fixtures import set_mocked_github_provider + + +class Test_repository_inactive_not_archived: + def test_no_repositories(self): + repository_client = mock.MagicMock + repository_client.repositories = {} + repository_client.audit_config = {} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived import ( + repository_inactive_not_archived, + ) + + check = repository_inactive_not_archived() + result = check.execute() + assert len(result) == 0 + + def test_repository_active_not_archived(self): + repository_client = mock.MagicMock + repo_name = "test-repo" + default_branch = "main" + now = datetime.now(timezone.utc) + recent_activity = now - timedelta(days=30) # 30 days ago + + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/test-repo", + private=False, + default_branch=default_branch, + archived=False, + pushed_at=recent_activity, + ), + } + repository_client.audit_config = {} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived import ( + repository_inactive_not_archived, + ) + + check = repository_inactive_not_archived() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == repo_name + assert result[0].status == "PASS" + assert ( + result[0].status_extended + == f"Repository {repo_name} has been active within the last 180 days (30 days ago)." + ) + + def test_repository_inactive_not_archived(self): + repository_client = mock.MagicMock + repo_name = "test-repo" + default_branch = "main" + now = datetime.now(timezone.utc) + old_activity = now - timedelta(days=200) # 200 days ago + + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/test-repo", + private=False, + default_branch=default_branch, + archived=False, + pushed_at=old_activity, + ), + } + repository_client.audit_config = {} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived import ( + repository_inactive_not_archived, + ) + + check = repository_inactive_not_archived() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == repo_name + assert result[0].status == "FAIL" + assert "has been inactive for 200 days" in result[0].status_extended + assert "and is not archived" in result[0].status_extended + + def test_repository_inactive_but_archived(self): + repository_client = mock.MagicMock + repo_name = "test-repo" + default_branch = "main" + now = datetime.now(timezone.utc) + old_activity = now - timedelta(days=200) # 200 days ago + + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/test-repo", + default_branch=default_branch, + private=False, + archived=True, + pushed_at=old_activity, + ), + } + repository_client.audit_config = {} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived import ( + repository_inactive_not_archived, + ) + + check = repository_inactive_not_archived() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == repo_name + assert result[0].status == "PASS" + assert ( + result[0].status_extended + == f"Repository {repo_name} is properly archived." + ) + + def test_custom_days_threshold(self): + repository_client = mock.MagicMock + repo_name = "test-repo" + default_branch = "main" + now = datetime.now(timezone.utc) + old_activity = now - timedelta(days=50) + + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/test-repo", + private=False, + default_branch=default_branch, + archived=False, + pushed_at=old_activity, + ), + } + repository_client.audit_config = {"inactive_not_archived_days_threshold": 40} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_inactive_not_archived.repository_inactive_not_archived import ( + repository_inactive_not_archived, + ) + + check = repository_inactive_not_archived() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == repo_name + assert result[0].status == "FAIL" + assert "has been inactive for 50 days" in result[0].status_extended + assert "and is not archived" in result[0].status_extended diff --git a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py index 776d557252..bd3592fc6c 100644 --- a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py +++ b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -40,6 +41,8 @@ class Test_repository_public_has_securitymd_file_test: securitymd=False, require_pull_request=False, approval_count=0, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -81,6 +84,8 @@ class Test_repository_public_has_securitymd_file_test: securitymd=True, require_pull_request=False, approval_count=0, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py index ba935d0a9d..8a21a828cd 100644 --- a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest import mock from prowler.providers.github.services.repository.repository_service import Repo @@ -41,6 +42,8 @@ class Test_repository_secret_scanning_enabled: require_pull_request=False, approval_count=0, secret_scanning_enabled=False, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } @@ -83,6 +86,8 @@ class Test_repository_secret_scanning_enabled: require_pull_request=False, approval_count=0, secret_scanning_enabled=True, + archived=False, + pushed_at=datetime.now(timezone.utc), ), } diff --git a/tests/providers/github/services/repository/repository_service_test.py b/tests/providers/github/services/repository/repository_service_test.py index 1fb8db539e..ea3cbb7432 100644 --- a/tests/providers/github/services/repository/repository_service_test.py +++ b/tests/providers/github/services/repository/repository_service_test.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from unittest.mock import MagicMock, patch from prowler.providers.github.services.repository.repository_service import ( @@ -26,6 +27,9 @@ def mock_list_repositories(_): codeowners_exists=True, require_code_owner_reviews=True, secret_scanning_enabled=True, + require_signed_commits=True, + archived=False, + pushed_at=datetime.now(timezone.utc), enforce_admins=True, delete_branch_on_merge=True, conversation_resolution=True, @@ -66,6 +70,9 @@ class Test_Repository_Service: assert repository_service.repositories[1].codeowners_exists is True assert repository_service.repositories[1].require_code_owner_reviews is True assert repository_service.repositories[1].secret_scanning_enabled is True + assert repository_service.repositories[1].require_signed_commits is True + assert repository_service.repositories[1].archived is False + assert repository_service.repositories[1].pushed_at is not None class Test_Repository_FileExists: From 4f099c5663a28882191cd4e3f153982e84e23267 Mon Sep 17 00:00:00 2001 From: Andoni Alonso <14891798+andoniaf@users.noreply.github.com> Date: Mon, 26 May 2025 10:40:41 +0200 Subject: [PATCH 07/24] refactor(github): use `owner` instead of `repository` in findings attributes (#7833) --- prowler/lib/check/models.py | 12 ++++++++---- prowler/lib/outputs/finding.py | 2 +- prowler/lib/outputs/outputs.py | 2 +- .../repository_branch_delete_on_merge_enabled.py | 4 +--- .../repository_default_branch_deletion_disabled.py | 4 +--- ...repository_default_branch_disallows_force_push.py | 4 +--- ...ry_default_branch_protection_applies_to_admins.py | 4 +--- .../repository_default_branch_protection_enabled.py | 4 +--- ...tory_default_branch_requires_codeowners_review.py | 4 +--- ...efault_branch_requires_conversation_resolution.py | 4 +--- ...ository_default_branch_requires_linear_history.py | 4 +--- ...ory_default_branch_requires_multiple_approvals.py | 4 +--- ...ository_default_branch_requires_signed_commits.py | 4 +--- ...pository_default_branch_status_checks_required.py | 2 +- .../repository_dependency_scanning_enabled.py | 4 +--- .../repository_has_codeowners_file.py | 4 +--- .../repository_public_has_securitymd_file.py | 4 +--- .../repository_secret_scanning_enabled.py | 4 +--- .../github/services/repository/repository_service.py | 2 ++ ...repository_branch_delete_on_merge_enabled_test.py | 2 ++ ...pository_default_branch_deletion_disabled_test.py | 2 ++ ...itory_default_branch_disallows_force_push_test.py | 2 ++ ...fault_branch_protection_applies_to_admins_test.py | 2 ++ ...ository_default_branch_protection_enabled_test.py | 2 ++ ...default_branch_requires_codeowners_review_test.py | 2 ++ ...t_branch_requires_conversation_resolution_test.py | 2 ++ ...ry_default_branch_requires_linear_history_test.py | 2 ++ ...efault_branch_requires_multiple_approvals_test.py | 3 +++ ...ry_default_branch_requires_signed_commits_test.py | 2 ++ ...ory_default_branch_status_checks_required_test.py | 2 ++ .../repository_dependency_scanning_enabled_test.py | 2 ++ .../repository_has_codeowners_file_test.py | 2 ++ .../repository_public_has_securitymd_file_test.py | 2 ++ .../repository_secret_scanning_enabled_test.py | 2 ++ .../services/repository/repository_service_test.py | 1 + 35 files changed, 59 insertions(+), 49 deletions(-) diff --git a/prowler/lib/check/models.py b/prowler/lib/check/models.py index 0ef3195b2a..875350c757 100644 --- a/prowler/lib/check/models.py +++ b/prowler/lib/check/models.py @@ -548,7 +548,7 @@ class CheckReportGithub(Check_Report): resource_name: str resource_id: str - repository: str + owner: str def __init__( self, @@ -556,7 +556,7 @@ class CheckReportGithub(Check_Report): resource: Any, resource_name: str = None, resource_id: str = None, - repository: str = "global", + owner: str = None, ) -> None: """Initialize the GitHub Check's finding information. @@ -565,12 +565,16 @@ class CheckReportGithub(Check_Report): resource: Basic information about the resource. Defaults to None. resource_name: The name of the resource related with the finding. resource_id: The id of the resource related with the finding. - repository: The repository of the resource related with the finding. + owner: The owner of the resource related with the finding. """ super().__init__(metadata, resource) self.resource_name = resource_name or getattr(resource, "name", "") self.resource_id = resource_id or getattr(resource, "id", "") - self.repository = repository or getattr(resource, "repository", "") + self.owner = ( + owner + or getattr(resource, "owner", "") # For Repositories + or getattr(resource, "name", "") # For Organizations + ) @dataclass diff --git a/prowler/lib/outputs/finding.py b/prowler/lib/outputs/finding.py index b7547da815..ffa0a2f44e 100644 --- a/prowler/lib/outputs/finding.py +++ b/prowler/lib/outputs/finding.py @@ -251,7 +251,7 @@ class Finding(BaseModel): output_data["resource_uid"] = check_output.resource_id output_data["account_name"] = provider.identity.account_name output_data["account_uid"] = provider.identity.account_id - output_data["region"] = check_output.repository + output_data["region"] = check_output.owner elif provider.type == "m365": output_data["auth_method"] = ( diff --git a/prowler/lib/outputs/outputs.py b/prowler/lib/outputs/outputs.py index adada2f513..cae67482e7 100644 --- a/prowler/lib/outputs/outputs.py +++ b/prowler/lib/outputs/outputs.py @@ -17,7 +17,7 @@ def stdout_report(finding, color, verbose, status, fix): if finding.check_metadata.Provider == "kubernetes": details = finding.namespace.lower() if finding.check_metadata.Provider == "github": - details = finding.repository + details = finding.owner if finding.check_metadata.Provider == "m365": details = finding.location if finding.check_metadata.Provider == "nhn": diff --git a/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py b/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py index 5b561927c3..98cacd4394 100644 --- a/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py +++ b/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py @@ -22,9 +22,7 @@ class repository_branch_delete_on_merge_enabled(Check): """ findings = [] for repo in repository_client.repositories.values(): - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does not delete branches on merge." diff --git a/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py b/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py index 12d504a926..1b7dfe2004 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py +++ b/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py @@ -23,9 +23,7 @@ class repository_default_branch_deletion_disabled(Check): findings = [] for repo in repository_client.repositories.values(): if repo.default_branch_deletion is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does allow default branch deletion." diff --git a/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py b/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py index 2183b84a79..b1364e2096 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py +++ b/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py @@ -23,9 +23,7 @@ class repository_default_branch_disallows_force_push(Check): findings = [] for repo in repository_client.repositories.values(): if repo.allow_force_pushes is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does allow force push." diff --git a/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py b/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py index 916ddd35c5..39c8de0384 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py +++ b/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py @@ -23,9 +23,7 @@ class repository_default_branch_protection_applies_to_admins(Check): findings = [] for repo in repository_client.repositories.values(): if repo.enforce_admins is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not enforce administrators to be subject to the same branch protection rules as other users." diff --git a/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py b/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py index a6c9be5a37..cf281c6a6a 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py +++ b/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py @@ -23,9 +23,7 @@ class repository_default_branch_protection_enabled(Check): findings = [] for repo in repository_client.repositories.values(): if repo.default_branch_protection is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not enforce branch protection on default branch ({repo.default_branch})." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py b/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py index 11cc3fd05b..5e6f0c6464 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py @@ -23,9 +23,7 @@ class repository_default_branch_requires_codeowners_review(Check): findings = [] for repo in repository_client.repositories.values(): if repo.require_code_owner_reviews is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) if repo.require_code_owner_reviews: report.status = "PASS" report.status_extended = f"Repository {repo.name} requires code owner approval for changes to owned code." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py b/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py index 1bee931478..53cff78909 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py @@ -23,9 +23,7 @@ class repository_default_branch_requires_conversation_resolution(Check): findings = [] for repo in repository_client.repositories.values(): if repo.conversation_resolution is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does not require conversation resolution." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py b/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py index a06c8b4a3f..e57250a1e5 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py @@ -23,9 +23,7 @@ class repository_default_branch_requires_linear_history(Check): findings = [] for repo in repository_client.repositories.values(): if repo.required_linear_history is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not require linear history on default branch ({repo.default_branch})." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py b/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py index ac75115010..ad6c89e833 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py @@ -23,9 +23,7 @@ class repository_default_branch_requires_multiple_approvals(Check): findings = [] for repo in repository_client.repositories.values(): if repo.approval_count is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not enforce at least 2 approvals for code changes." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py b/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py index 1eb5b41be6..3f929a2eac 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py @@ -23,9 +23,7 @@ class repository_default_branch_requires_signed_commits(Check): findings = [] for repo in repository_client.repositories.values(): if repo.require_signed_commits is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not require signed commits on default branch ({repo.default_branch})." diff --git a/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py b/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py index 21d6b173da..577b2bad05 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py +++ b/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py @@ -24,7 +24,7 @@ class repository_default_branch_status_checks_required(Check): for repo in repository_client.repositories.values(): if repo.status_checks is not None: report = CheckReportGithub( - self.metadata(), resource=repo, repository=repo.name + self.metadata(), resource=repo, owner=repo.name ) report.status = "FAIL" report.status_extended = ( diff --git a/prowler/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled.py b/prowler/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled.py index f06c58135f..f983d7f901 100644 --- a/prowler/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled.py +++ b/prowler/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled.py @@ -23,9 +23,7 @@ class repository_dependency_scanning_enabled(Check): findings = [] for repo in repository_client.repositories.values(): if repo.dependabot_alerts_enabled is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) if repo.dependabot_alerts_enabled: report.status = "PASS" report.status_extended = f"Repository {repo.name} has package vulnerability scanning (Dependabot alerts) enabled." diff --git a/prowler/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file.py b/prowler/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file.py index a158f63880..7120e0411a 100644 --- a/prowler/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file.py +++ b/prowler/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file.py @@ -23,9 +23,7 @@ class repository_has_codeowners_file(Check): findings = [] for repo in repository_client.repositories.values(): if repo.codeowners_exists is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) if repo.codeowners_exists: report.status = "PASS" report.status_extended = ( diff --git a/prowler/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file.py b/prowler/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file.py index c1ec7b51e4..3de966ed25 100644 --- a/prowler/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file.py +++ b/prowler/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file.py @@ -23,9 +23,7 @@ class repository_public_has_securitymd_file(Check): findings = [] for repo in repository_client.repositories.values(): if not repo.private and repo.securitymd is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "PASS" report.status_extended = ( f"Repository {repo.name} does have a SECURITY.md file." diff --git a/prowler/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled.py b/prowler/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled.py index 9489ba8653..57d09be486 100644 --- a/prowler/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled.py +++ b/prowler/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled.py @@ -23,9 +23,7 @@ class repository_secret_scanning_enabled(Check): findings = [] for repo in repository_client.repositories.values(): if repo.secret_scanning_enabled is not None: - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) if getattr(repo, "secret_scanning_enabled", None): report.status = "PASS" report.status_extended = f"Repository {repo.name} has secret scanning enabled to detect sensitive data." diff --git a/prowler/providers/github/services/repository/repository_service.py b/prowler/providers/github/services/repository/repository_service.py index b586bdecf3..2fbeae6be4 100644 --- a/prowler/providers/github/services/repository/repository_service.py +++ b/prowler/providers/github/services/repository/repository_service.py @@ -161,6 +161,7 @@ class Repository(GithubService): repos[repo.id] = Repo( id=repo.id, name=repo.name, + owner=repo.owner.login, full_name=repo.full_name, default_branch=repo.default_branch, private=repo.private, @@ -196,6 +197,7 @@ class Repo(BaseModel): id: int name: str + owner: str full_name: str default_branch_protection: Optional[bool] default_branch: str diff --git a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py index 1152c937f9..160928ad2f 100644 --- a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py +++ b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py @@ -35,6 +35,7 @@ class Test_repository_branch_delete_on_merge_enabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -77,6 +78,7 @@ class Test_repository_branch_delete_on_merge_enabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py index d0cd44d3db..c2345297ff 100644 --- a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py @@ -38,6 +38,7 @@ class Test_repository_default_branch_deletion_disabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, private=False, @@ -82,6 +83,7 @@ class Test_repository_default_branch_deletion_disabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, private=False, diff --git a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py index 30e79ea39e..489ad6c41b 100644 --- a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_disallows_force_push_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, allow_force_pushes=True, @@ -79,6 +80,7 @@ class Test_repository_default_branch_disallows_force_push_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py index 80f19664aa..29c3185614 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_protection_applies_to_admins_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, private=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_protection_applies_to_admins_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py index f323ac086a..249c442739 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_protection_enabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, private=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_protection_enabled_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py index 914b24e782..d0c2b8c619 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py @@ -35,6 +35,7 @@ class Test_repository_default_branch_requires_codeowners_review: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_requires_codeowners_review: 2: Repo( id=2, name=repo_name, + owner="account-name", full_name="account-name/repo2", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py index 9261a97c14..eb666df96d 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_requires_conversation_resolution_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, conversation_resolution=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_requires_conversation_resolution_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py index 413e1db558..1e25aba932 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_requires_linear_history_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, required_linear_history=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_requires_linear_history_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py index 489231a642..30ee501362 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py @@ -35,6 +35,7 @@ class Test_repository_default_branch_requires_multiple_approvals: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch_protection=False, default_branch="main", @@ -79,6 +80,7 @@ class Test_repository_default_branch_requires_multiple_approvals: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch_protection=False, default_branch="master", @@ -123,6 +125,7 @@ class Test_repository_default_branch_requires_multiple_approvals: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch_protection=True, default_branch="master", diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py index 637a0bd588..7d499c0090 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_requires_signed_commits: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, @@ -79,6 +80,7 @@ class Test_repository_default_branch_requires_signed_commits: 2: Repo( id=2, name=repo_name, + owner="account-name", full_name="account-name/repo2", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py index a2e479a7b5..cb14a4a340 100644 --- a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py @@ -36,6 +36,7 @@ class Test_repository_default_branch_status_checks_required_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch=default_branch, status_checks=False, @@ -79,6 +80,7 @@ class Test_repository_default_branch_status_checks_required_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", private=False, default_branch=default_branch, diff --git a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py index f4c22c3be1..63b2594600 100644 --- a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py @@ -35,6 +35,7 @@ class Test_repository_dependency_scanning_enabled: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -80,6 +81,7 @@ class Test_repository_dependency_scanning_enabled: 2: Repo( id=2, name=repo_name, + owner="account-name", full_name="account-name/repo2", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py index 06d4982fd5..9a28163702 100644 --- a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py +++ b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py @@ -35,6 +35,7 @@ class Test_repository_has_codeowners_file: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -79,6 +80,7 @@ class Test_repository_has_codeowners_file: 2: Repo( id=2, name=repo_name, + owner="account-name", full_name="account-name/repo2", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py index bd3592fc6c..e3d6849506 100644 --- a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py +++ b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py @@ -35,6 +35,7 @@ class Test_repository_public_has_securitymd_file_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -78,6 +79,7 @@ class Test_repository_public_has_securitymd_file_test: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py index 8a21a828cd..0bff5cd6bc 100644 --- a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py @@ -35,6 +35,7 @@ class Test_repository_secret_scanning_enabled: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/repo1", default_branch="main", private=False, @@ -79,6 +80,7 @@ class Test_repository_secret_scanning_enabled: 2: Repo( id=2, name=repo_name, + owner="account-name", full_name="account-name/repo2", default_branch="main", private=False, diff --git a/tests/providers/github/services/repository/repository_service_test.py b/tests/providers/github/services/repository/repository_service_test.py index ea3cbb7432..9c9e7371c9 100644 --- a/tests/providers/github/services/repository/repository_service_test.py +++ b/tests/providers/github/services/repository/repository_service_test.py @@ -13,6 +13,7 @@ def mock_list_repositories(_): 1: Repo( id=1, name="repo1", + owner="account-name", full_name="account-name/repo1", default_branch_protection=True, default_branch="main", From 44afd9ed31e2f4545408eabae9a3c5747bcd6b85 Mon Sep 17 00:00:00 2001 From: Andoni Alonso <14891798+andoniaf@users.noreply.github.com> Date: Mon, 26 May 2025 10:44:19 +0200 Subject: [PATCH 08/24] fix: repository `repository_dependency_scanning_enabled` check logic (#7834) --- prowler/providers/github/github_provider.py | 6 ++++-- prowler/providers/github/lib/service/service.py | 6 ++++-- .../github/services/repository/repository_service.py | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/prowler/providers/github/github_provider.py b/prowler/providers/github/github_provider.py index d34b2b3e66..f217066929 100644 --- a/prowler/providers/github/github_provider.py +++ b/prowler/providers/github/github_provider.py @@ -4,6 +4,7 @@ from typing import Union from colorama import Fore, Style from github import Auth, Github, GithubIntegration +from github.GithubRetry import GithubRetry from prowler.config.config import ( default_config_file_path, @@ -300,9 +301,10 @@ class GithubProvider(Provider): credentials = self.session try: + retry_config = GithubRetry(total=3) if credentials.token: auth = Auth.Token(credentials.token) - g = Github(auth=auth) + g = Github(auth=auth, retry=retry_config) try: identity = GithubIdentityInfo( account_id=g.get_user().id, @@ -318,7 +320,7 @@ class GithubProvider(Provider): elif credentials.id != 0 and credentials.key: auth = Auth.AppAuth(credentials.id, credentials.key) - gi = GithubIntegration(auth=auth) + gi = GithubIntegration(auth=auth, retry=retry_config) try: identity = GithubAppIdentityInfo(app_id=gi.get_app().id) return identity diff --git a/prowler/providers/github/lib/service/service.py b/prowler/providers/github/lib/service/service.py index b9e4bf2974..911a22b975 100644 --- a/prowler/providers/github/lib/service/service.py +++ b/prowler/providers/github/lib/service/service.py @@ -1,4 +1,5 @@ from github import Auth, Github, GithubIntegration +from github.GithubRetry import GithubRetry from prowler.lib.logger import logger from prowler.providers.github.github_provider import GithubProvider @@ -20,16 +21,17 @@ class GithubService: def __set_clients__(self, session): clients = [] try: + retry_config = GithubRetry(total=3) if session.token: auth = Auth.Token(session.token) - clients = [Github(auth=auth)] + clients = [Github(auth=auth, retry=retry_config)] elif session.key and session.id: auth = Auth.AppAuth( session.id, session.key, ) - gi = GithubIntegration(auth=auth) + gi = GithubIntegration(auth=auth, retry=retry_config) for installation in gi.get_installations(): clients.append(installation.get_github_for_installation()) diff --git a/prowler/providers/github/services/repository/repository_service.py b/prowler/providers/github/services/repository/repository_service.py index 2fbeae6be4..3fca76bba4 100644 --- a/prowler/providers/github/services/repository/repository_service.py +++ b/prowler/providers/github/services/repository/repository_service.py @@ -136,7 +136,7 @@ class Repository(GithubService): ) try: # Use get_dependabot_alerts to check if Dependabot alerts are enabled - repo.get_dependabot_alerts()[0] + repo.get_dependabot_alerts().totalCount # If the call succeeds, Dependabot is enabled (even if no alerts) dependabot_alerts_enabled = True except Exception as error: From 15e4d1acce7562451aff11555507419089888afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Jes=C3=BAs=20Pe=C3=B1a=20Rodr=C3=ADguez?= Date: Mon, 26 May 2025 12:20:05 +0200 Subject: [PATCH 09/24] refactor(reports): change API response message when tasks are running (#7837) --- api/src/backend/api/specs/v1.yaml | 3 ++- api/src/backend/api/tests/test_views.py | 22 +++++++++++++++++----- api/src/backend/api/v1/views.py | 22 +++++++++++++++++----- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/api/src/backend/api/specs/v1.yaml b/api/src/backend/api/specs/v1.yaml index e368d57757..8431129344 100644 --- a/api/src/backend/api/specs/v1.yaml +++ b/api/src/backend/api/specs/v1.yaml @@ -5376,7 +5376,8 @@ paths: '403': description: There is a problem with credentials '404': - description: The scan has no reports + description: The scan has no reports, or the report generation task has + not started yet /api/v1/schedules/daily: post: operationId: schedules_daily_create diff --git a/api/src/backend/api/tests/test_views.py b/api/src/backend/api/tests/test_views.py index 97beecd6e3..677f9437a6 100644 --- a/api/src/backend/api/tests/test_views.py +++ b/api/src/backend/api/tests/test_views.py @@ -2304,7 +2304,10 @@ class TestScanViewSet: url = reverse("scan-report", kwargs={"pk": scan.id}) response = authenticated_client.get(url) assert response.status_code == status.HTTP_404_NOT_FOUND - assert response.json()["errors"]["detail"] == "The scan has no reports." + assert ( + response.json()["errors"]["detail"] + == "The scan has no reports, or the report generation task has not started yet." + ) def test_report_s3_no_credentials( self, authenticated_client, scans_fixture, monkeypatch @@ -2372,7 +2375,7 @@ class TestScanViewSet: ): """ When output_location is a local path and glob.glob returns an empty list, - the view should return HTTP 404 with detail "The scan has no reports." + the view should return HTTP 404 with detail "The scan has no reports, or the report generation task has not started yet." """ scan = scans_fixture[0] scan.output_location = "/tmp/nonexistent_report_pattern.zip" @@ -2384,7 +2387,10 @@ class TestScanViewSet: response = authenticated_client.get(url) assert response.status_code == 404 - assert response.json()["errors"]["detail"] == "The scan has no reports." + assert ( + response.json()["errors"]["detail"] + == "The scan has no reports, or the report generation task has not started yet." + ) def test_report_local_file(self, authenticated_client, scans_fixture, monkeypatch): scan = scans_fixture[0] @@ -2459,7 +2465,10 @@ class TestScanViewSet: url = reverse("scan-compliance", kwargs={"pk": scan.id, "name": framework}) resp = authenticated_client.get(url) assert resp.status_code == status.HTTP_404_NOT_FOUND - assert resp.json()["errors"]["detail"] == "The scan has no reports." + assert ( + resp.json()["errors"]["detail"] + == "The scan has no reports, or the report generation task has not started yet." + ) def test_compliance_s3_no_credentials( self, authenticated_client, scans_fixture, monkeypatch @@ -2681,7 +2690,10 @@ class TestScanViewSet: response = authenticated_client.get(url) assert response.status_code == status.HTTP_404_NOT_FOUND - assert response.json()["errors"]["detail"] == "The scan has no reports." + assert ( + response.json()["errors"]["detail"] + == "The scan has no reports, or the report generation task has not started yet." + ) @patch("api.v1.views.get_s3_client") def test_report_s3_client_error_other( diff --git a/api/src/backend/api/v1/views.py b/api/src/backend/api/v1/views.py index 39a48a0c16..b8679217f9 100644 --- a/api/src/backend/api/v1/views.py +++ b/api/src/backend/api/v1/views.py @@ -1160,7 +1160,9 @@ class ProviderViewSet(BaseRLSViewSet): 200: OpenApiResponse(description="Report obtained successfully"), 202: OpenApiResponse(description="The task is in progress"), 403: OpenApiResponse(description="There is a problem with credentials"), - 404: OpenApiResponse(description="The scan has no reports"), + 404: OpenApiResponse( + description="The scan has no reports, or the report generation task has not started yet" + ), }, ), compliance=extend_schema( @@ -1363,7 +1365,9 @@ class ScanViewSet(BaseRLSViewSet): code = e.response.get("Error", {}).get("Code") if code == "NoSuchKey": return Response( - {"detail": "The scan has no reports."}, + { + "detail": "The scan has no reports, or the report generation task has not started yet." + }, status=status.HTTP_404_NOT_FOUND, ) return Response( @@ -1376,7 +1380,9 @@ class ScanViewSet(BaseRLSViewSet): files = glob.glob(path_pattern) if not files: return Response( - {"detail": "The scan has no reports."}, + { + "detail": "The scan has no reports, or the report generation task has not started yet." + }, status=status.HTTP_404_NOT_FOUND, ) filepath = files[0] @@ -1402,7 +1408,10 @@ class ScanViewSet(BaseRLSViewSet): if not scan.output_location: return Response( - {"detail": "The scan has no reports."}, status=status.HTTP_404_NOT_FOUND + { + "detail": "The scan has no reports, or the report generation task has not started yet." + }, + status=status.HTTP_404_NOT_FOUND, ) if scan.output_location.startswith("s3://"): @@ -1440,7 +1449,10 @@ class ScanViewSet(BaseRLSViewSet): if not scan.output_location: return Response( - {"detail": "The scan has no reports."}, status=status.HTTP_404_NOT_FOUND + { + "detail": "The scan has no reports, or the report generation task has not started yet." + }, + status=status.HTTP_404_NOT_FOUND, ) if scan.output_location.startswith("s3://"): From 3658e85cfcd90edf54b4f7fff94062ec4b2ca6fc Mon Sep 17 00:00:00 2001 From: Sergio Garcia Date: Mon, 26 May 2025 14:34:44 +0200 Subject: [PATCH 10/24] chore(github): add `Branch` class (#7838) --- ...pository_branch_delete_on_merge_enabled.py | 8 +- ...sitory_default_branch_deletion_disabled.py | 4 +- ...ory_default_branch_disallows_force_push.py | 12 +-- ...ult_branch_protection_applies_to_admins.py | 4 +- ...itory_default_branch_protection_enabled.py | 8 +- ...fault_branch_requires_codeowners_review.py | 4 +- ...branch_requires_conversation_resolution.py | 12 +-- ..._default_branch_requires_linear_history.py | 8 +- ...ault_branch_requires_multiple_approvals.py | 4 +- ..._default_branch_requires_signed_commits.py | 8 +- ...y_default_branch_status_checks_required.py | 8 +- .../repository_inactive_not_archived.py | 4 +- .../services/repository/repository_service.py | 58 +++++++----- ...ory_branch_delete_on_merge_enabled_test.py | 68 ++++++++++---- ...y_default_branch_deletion_disabled_test.py | 44 ++++++++- ...efault_branch_disallows_force_push_test.py | 56 +++++++++--- ...ranch_protection_applies_to_admins_test.py | 48 ++++++++-- ..._default_branch_protection_enabled_test.py | 48 ++++++++-- ..._branch_requires_codeowners_review_test.py | 52 ++++++++--- ...h_requires_conversation_resolution_test.py | 50 +++++++++-- ...ult_branch_requires_linear_history_test.py | 48 ++++++++-- ...branch_requires_multiple_approvals_test.py | 77 ++++++++++++---- ...ult_branch_requires_signed_commits_test.py | 62 ++++++++++--- ...ault_branch_status_checks_required_test.py | 42 ++++++++- ...sitory_dependency_scanning_enabled_test.py | 42 +++++++-- .../repository_has_codeowners_file_test.py | 42 +++++++-- .../repository_inactive_not_archived_test.py | 90 +++++++++++++++++-- ...ository_public_has_securitymd_file_test.py | 44 +++++++-- ...repository_secret_scanning_enabled_test.py | 42 +++++++-- .../repository/repository_service_test.py | 56 +++++++----- 30 files changed, 820 insertions(+), 233 deletions(-) diff --git a/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py b/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py index 98cacd4394..145e4261e1 100644 --- a/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py +++ b/prowler/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled.py @@ -24,15 +24,11 @@ class repository_branch_delete_on_merge_enabled(Check): for repo in repository_client.repositories.values(): report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = ( - f"Repository {repo.name} does not delete branches on merge." - ) + report.status_extended = f"Repository {repo.name} does not delete branches on merge in default branch ({repo.default_branch.name})." if repo.delete_branch_on_merge: report.status = "PASS" - report.status_extended = ( - f"Repository {repo.name} does delete branches on merge." - ) + report.status_extended = f"Repository {repo.name} does delete branches on merge in default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py b/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py index 1b7dfe2004..bf615a21b6 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py +++ b/prowler/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled.py @@ -22,14 +22,14 @@ class repository_default_branch_deletion_disabled(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.default_branch_deletion is not None: + if repo.default_branch.branch_deletion is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does allow default branch deletion." ) - if not repo.default_branch_deletion: + if not repo.default_branch.branch_deletion: report.status = "PASS" report.status_extended = ( f"Repository {repo.name} does deny default branch deletion." diff --git a/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py b/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py index b1364e2096..16eb7fa794 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py +++ b/prowler/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push.py @@ -22,18 +22,14 @@ class repository_default_branch_disallows_force_push(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.allow_force_pushes is not None: + if repo.default_branch.allow_force_pushes is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = ( - f"Repository {repo.name} does allow force push." - ) + report.status_extended = f"Repository {repo.name} does allow force pushes on default branch ({repo.default_branch.name})." - if not repo.allow_force_pushes: + if not repo.default_branch.allow_force_pushes: report.status = "PASS" - report.status_extended = ( - f"Repository {repo.name} does deny force push." - ) + report.status_extended = f"Repository {repo.name} does deny force pushes on default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py b/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py index 39c8de0384..0a70cf0aea 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py +++ b/prowler/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins.py @@ -22,12 +22,12 @@ class repository_default_branch_protection_applies_to_admins(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.enforce_admins is not None: + if repo.default_branch.enforce_admins is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not enforce administrators to be subject to the same branch protection rules as other users." - if repo.enforce_admins: + if repo.default_branch.enforce_admins: report.status = "PASS" report.status_extended = f"Repository {repo.name} does enforce administrators to be subject to the same branch protection rules as other users." diff --git a/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py b/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py index cf281c6a6a..1348018ee1 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py +++ b/prowler/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled.py @@ -22,14 +22,14 @@ class repository_default_branch_protection_enabled(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.default_branch_protection is not None: + if repo.default_branch.protected is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = f"Repository {repo.name} does not enforce branch protection on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does not enforce branch protection on default branch ({repo.default_branch.name})." - if repo.default_branch_protection: + if repo.default_branch.protected: report.status = "PASS" - report.status_extended = f"Repository {repo.name} does enforce branch protection on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does enforce branch protection on default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py b/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py index 5e6f0c6464..4c5b75010a 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review.py @@ -22,9 +22,9 @@ class repository_default_branch_requires_codeowners_review(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.require_code_owner_reviews is not None: + if repo.default_branch.require_code_owner_reviews is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) - if repo.require_code_owner_reviews: + if repo.default_branch.require_code_owner_reviews: report.status = "PASS" report.status_extended = f"Repository {repo.name} requires code owner approval for changes to owned code." else: diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py b/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py index 53cff78909..da33754cf5 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution.py @@ -22,18 +22,14 @@ class repository_default_branch_requires_conversation_resolution(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.conversation_resolution is not None: + if repo.default_branch.conversation_resolution is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = ( - f"Repository {repo.name} does not require conversation resolution." - ) + report.status_extended = f"Repository {repo.name} does not require conversation resolution on default branch ({repo.default_branch.name})." - if repo.conversation_resolution: + if repo.default_branch.conversation_resolution: report.status = "PASS" - report.status_extended = ( - f"Repository {repo.name} does require conversation resolution." - ) + report.status_extended = f"Repository {repo.name} does require conversation resolution on default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py b/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py index e57250a1e5..29a0e51b51 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history.py @@ -22,14 +22,14 @@ class repository_default_branch_requires_linear_history(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.required_linear_history is not None: + if repo.default_branch.required_linear_history is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = f"Repository {repo.name} does not require linear history on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does not require linear history on default branch ({repo.default_branch.name})." - if repo.required_linear_history: + if repo.default_branch.required_linear_history: report.status = "PASS" - report.status_extended = f"Repository {repo.name} does require linear history on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does require linear history on default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py b/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py index ad6c89e833..6312b98d02 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals.py @@ -22,12 +22,12 @@ class repository_default_branch_requires_multiple_approvals(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.approval_count is not None: + if repo.default_branch.approval_count is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = f"Repository {repo.name} does not enforce at least 2 approvals for code changes." - if repo.approval_count >= 2: + if repo.default_branch.approval_count >= 2: report.status = "PASS" report.status_extended = f"Repository {repo.name} does enforce at least 2 approvals for code changes." diff --git a/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py b/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py index 3f929a2eac..4b6aa3ae4c 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py +++ b/prowler/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits.py @@ -22,14 +22,14 @@ class repository_default_branch_requires_signed_commits(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.require_signed_commits is not None: + if repo.default_branch.require_signed_commits is not None: report = CheckReportGithub(metadata=self.metadata(), resource=repo) report.status = "FAIL" - report.status_extended = f"Repository {repo.name} does not require signed commits on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does not require signed commits on default branch ({repo.default_branch.name})." - if repo.require_signed_commits: + if repo.default_branch.require_signed_commits: report.status = "PASS" - report.status_extended = f"Repository {repo.name} does require signed commits on default branch ({repo.default_branch})." + report.status_extended = f"Repository {repo.name} does require signed commits on default branch ({repo.default_branch.name})." findings.append(report) diff --git a/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py b/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py index 577b2bad05..e67b9def2c 100644 --- a/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py +++ b/prowler/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required.py @@ -22,16 +22,14 @@ class repository_default_branch_status_checks_required(Check): """ findings = [] for repo in repository_client.repositories.values(): - if repo.status_checks is not None: - report = CheckReportGithub( - self.metadata(), resource=repo, owner=repo.name - ) + if repo.default_branch.status_checks is not None: + report = CheckReportGithub(self.metadata(), resource=repo) report.status = "FAIL" report.status_extended = ( f"Repository {repo.name} does not enforce status checks." ) - if repo.status_checks: + if repo.default_branch.status_checks: report.status = "PASS" report.status_extended = ( f"Repository {repo.name} does enforce status checks." diff --git a/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py index fb28094598..c6426fa194 100644 --- a/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py +++ b/prowler/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived.py @@ -20,9 +20,7 @@ class repository_inactive_not_archived(Check): ) for repo in repository_client.repositories.values(): - report = CheckReportGithub( - metadata=self.metadata(), resource=repo, repository=repo.name - ) + report = CheckReportGithub(metadata=self.metadata(), resource=repo) if repo.archived: report.status = "PASS" diff --git a/prowler/providers/github/services/repository/repository_service.py b/prowler/providers/github/services/repository/repository_service.py index 3fca76bba4..6c0101503b 100644 --- a/prowler/providers/github/services/repository/repository_service.py +++ b/prowler/providers/github/services/repository/repository_service.py @@ -163,24 +163,27 @@ class Repository(GithubService): name=repo.name, owner=repo.owner.login, full_name=repo.full_name, - default_branch=repo.default_branch, + default_branch=Branch( + name=default_branch, + protected=branch_protection, + default_branch=True, + require_pull_request=require_pr, + approval_count=approval_cnt, + required_linear_history=required_linear_history, + allow_force_pushes=allow_force_pushes, + branch_deletion=branch_deletion, + status_checks=status_checks, + enforce_admins=enforce_admins, + conversation_resolution=conversation_resolution, + require_code_owner_reviews=require_code_owner_reviews, + require_signed_commits=require_signed_commits, + ), private=repo.private, archived=repo.archived, pushed_at=repo.pushed_at, securitymd=securitymd_exists, - require_pull_request=require_pr, - approval_count=approval_cnt, - required_linear_history=required_linear_history, - allow_force_pushes=allow_force_pushes, - default_branch_deletion=branch_deletion, - status_checks=status_checks, - enforce_admins=enforce_admins, - conversation_resolution=conversation_resolution, - default_branch_protection=branch_protection, codeowners_exists=codeowners_exists, - require_code_owner_reviews=require_code_owner_reviews, secret_scanning_enabled=secret_scanning_enabled, - require_signed_commits=require_signed_commits, dependabot_alerts_enabled=dependabot_alerts_enabled, delete_branch_on_merge=delete_branch_on_merge, ) @@ -192,6 +195,24 @@ class Repository(GithubService): return repos +class Branch(BaseModel): + """Model for Github Branch""" + + name: str + protected: bool + default_branch: bool + require_pull_request: Optional[bool] + approval_count: Optional[int] + required_linear_history: Optional[bool] + allow_force_pushes: Optional[bool] + branch_deletion: Optional[bool] + status_checks: Optional[bool] + enforce_admins: Optional[bool] + require_code_owner_reviews: Optional[bool] + require_signed_commits: Optional[bool] + conversation_resolution: Optional[bool] + + class Repo(BaseModel): """Model for Github Repository""" @@ -199,23 +220,12 @@ class Repo(BaseModel): name: str owner: str full_name: str - default_branch_protection: Optional[bool] - default_branch: str + default_branch: Branch private: bool archived: bool pushed_at: datetime securitymd: Optional[bool] - require_pull_request: Optional[bool] - required_linear_history: Optional[bool] - allow_force_pushes: Optional[bool] - default_branch_deletion: Optional[bool] - status_checks: Optional[bool] - enforce_admins: Optional[bool] - approval_count: Optional[int] codeowners_exists: Optional[bool] - require_code_owner_reviews: Optional[bool] secret_scanning_enabled: Optional[bool] - require_signed_commits: Optional[bool] dependabot_alerts_enabled: Optional[bool] delete_branch_on_merge: Optional[bool] - conversation_resolution: Optional[bool] diff --git a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py index 160928ad2f..e10050e0cc 100644 --- a/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py +++ b/tests/providers/github/services/repository/repository_branch_delete_on_merge_enabled/repository_branch_delete_on_merge_enabled_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -30,19 +30,37 @@ class Test_repository_branch_delete_on_merge_enabled_test: def test_branch_deletion_disabled(self): repository_client = mock.MagicMock - repo_name = "repo1" + repo_name = "repo2" + default_branch = "main" repository_client.repositories = { - 1: Repo( - id=1, + 2: Repo( + id=2, name=repo_name, owner="account-name", - full_name="account-name/repo1", - default_branch="main", + full_name="account-name/repo2", + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, - delete_branch_on_merge=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -63,29 +81,47 @@ class Test_repository_branch_delete_on_merge_enabled_test: check = repository_branch_delete_on_merge_enabled() result = check.execute() assert len(result) == 1 - assert result[0].resource_id == 1 - assert result[0].resource_name == "repo1" + assert result[0].resource_id == 2 + assert result[0].resource_name == repo_name assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Repository {repo_name} does not delete branches on merge." + == f"Repository {repo_name} does not delete branches on merge in default branch ({default_branch})." ) def test_branch_deletion_enabled(self): repository_client = mock.MagicMock repo_name = "repo1" + default_branch = "main" repository_client.repositories = { 1: Repo( id=1, name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - securitymd=True, - delete_branch_on_merge=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } @@ -107,9 +143,9 @@ class Test_repository_branch_delete_on_merge_enabled_test: result = check.execute() assert len(result) == 1 assert result[0].resource_id == 1 - assert result[0].resource_name == "repo1" + assert result[0].resource_name == repo_name assert result[0].status == "PASS" assert ( result[0].status_extended - == f"Repository {repo_name} does delete branches on merge." + == f"Repository {repo_name} does delete branches on merge in default branch ({default_branch})." ) diff --git a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py index c2345297ff..b4d385fdf1 100644 --- a/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_deletion_disabled/repository_default_branch_deletion_disabled_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -31,7 +31,21 @@ class Test_repository_default_branch_deletion_disabled_test: def test_allow_branch_deletion_enabled(self): repository_client = mock.MagicMock repo_name = "repo1" - default_branch = "main" + default_branch = Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ) now = datetime.now(timezone.utc) repository_client.repositories = { @@ -45,6 +59,11 @@ class Test_repository_default_branch_deletion_disabled_test: archived=False, pushed_at=now, default_branch_deletion=True, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -76,7 +95,21 @@ class Test_repository_default_branch_deletion_disabled_test: def test_allow_branch_deletion_disabled(self): repository_client = mock.MagicMock repo_name = "repo1" - default_branch = "main" + default_branch = Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=False, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ) now = datetime.now(timezone.utc) repository_client.repositories = { @@ -90,6 +123,11 @@ class Test_repository_default_branch_deletion_disabled_test: archived=False, pushed_at=now, default_branch_deletion=False, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py index 489ad6c41b..b35393764e 100644 --- a/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_disallows_force_push/repository_default_branch_disallows_force_push_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -28,7 +28,7 @@ class Test_repository_default_branch_disallows_force_push_test: result = check.execute() assert len(result) == 0 - def test_allow_force_push_enabled(self): + def test_force_push_allowed(self): repository_client = mock.MagicMock repo_name = "repo1" default_branch = "main" @@ -38,12 +38,29 @@ class Test_repository_default_branch_disallows_force_push_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, - allow_force_pushes=True, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -69,10 +86,10 @@ class Test_repository_default_branch_disallows_force_push_test: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Repository {repo_name} does allow force push." + == f"Repository {repo_name} does allow force pushes on default branch ({default_branch})." ) - def test_allow_force_push_disabled(self): + def test_force_push_disallowed(self): repository_client = mock.MagicMock repo_name = "repo1" default_branch = "main" @@ -82,12 +99,29 @@ class Test_repository_default_branch_disallows_force_push_test: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - allow_force_pushes=False, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } @@ -113,5 +147,5 @@ class Test_repository_default_branch_disallows_force_push_test: assert result[0].status == "PASS" assert ( result[0].status_extended - == f"Repository {repo_name} does deny force push." + == f"Repository {repo_name} does deny force pushes on default branch ({default_branch})." ) diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py index 29c3185614..296c3d78e5 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_applies_to_admins/repository_default_branch_protection_applies_to_admins_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,29 @@ class Test_repository_default_branch_protection_applies_to_admins_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, - enforce_admins=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -82,12 +99,29 @@ class Test_repository_default_branch_protection_applies_to_admins_test: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - enforce_admins=True, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py index 249c442739..67bce91575 100644 --- a/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_protection_enabled/repository_default_branch_protection_enabled_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,29 @@ class Test_repository_default_branch_protection_enabled_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - default_branch_protection=False, - securitymd=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -82,12 +99,29 @@ class Test_repository_default_branch_protection_enabled_test: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - default_branch_protection=True, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py index d0c2b8c619..ab3d579b75 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_codeowners_review/repository_default_branch_requires_codeowners_review_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,14 +37,29 @@ class Test_repository_default_branch_requires_codeowners_review: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=True, - require_pull_request=False, - approval_count=0, - require_code_owner_reviews=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -82,14 +97,29 @@ class Test_repository_default_branch_requires_codeowners_review: name=repo_name, owner="account-name", full_name="account-name/repo2", - default_branch="main", + default_branch=Branch( + name="main", + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - securitymd=True, - require_pull_request=False, - approval_count=0, - require_code_owner_reviews=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py index eb666df96d..8f5a82bbd8 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_conversation_resolution/repository_default_branch_requires_conversation_resolution_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,29 @@ class Test_repository_default_branch_requires_conversation_resolution_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, - conversation_resolution=False, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), + private=False, archived=False, pushed_at=datetime.now(timezone.utc), - private=False, securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -69,7 +86,7 @@ class Test_repository_default_branch_requires_conversation_resolution_test: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Repository {repo_name} does not require conversation resolution." + == f"Repository {repo_name} does not require conversation resolution on default branch ({default_branch})." ) def test_conversation_resolution_enabled(self): @@ -82,12 +99,29 @@ class Test_repository_default_branch_requires_conversation_resolution_test: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - conversation_resolution=True, archived=False, pushed_at=datetime.now(timezone.utc), securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } @@ -113,5 +147,5 @@ class Test_repository_default_branch_requires_conversation_resolution_test: assert result[0].status == "PASS" assert ( result[0].status_extended - == f"Repository {repo_name} does require conversation resolution." + == f"Repository {repo_name} does require conversation resolution on default branch ({default_branch})." ) diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py index 1e25aba932..b072396804 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_linear_history/repository_default_branch_requires_linear_history_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,29 @@ class Test_repository_default_branch_requires_linear_history_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, - required_linear_history=False, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -82,12 +99,29 @@ class Test_repository_default_branch_requires_linear_history_test: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - required_linear_history=True, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py index 30ee501362..ddb9e89df6 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_multiple_approvals/repository_default_branch_requires_multiple_approvals_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,14 +37,29 @@ class Test_repository_default_branch_requires_multiple_approvals: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch_protection=False, - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, - require_pull_request=False, - approval_count=0, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -82,14 +97,29 @@ class Test_repository_default_branch_requires_multiple_approvals: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch_protection=False, - default_branch="master", + default_branch=Branch( + name="master", + protected=False, + default_branch=True, + require_pull_request=True, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=False, - require_pull_request=True, - approval_count=0, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -127,14 +157,29 @@ class Test_repository_default_branch_requires_multiple_approvals: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch_protection=True, - default_branch="master", + default_branch=Branch( + name="master", + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=2, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - securitymd=True, - require_pull_request=True, - approval_count=2, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py index 7d499c0090..5785dd2a14 100644 --- a/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_requires_signed_commits/repository_default_branch_requires_signed_commits_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,29 @@ class Test_repository_default_branch_requires_signed_commits: name=repo_name, owner="account-name", full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, - default_branch=default_branch, - require_signed_commits=False, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -65,7 +82,7 @@ class Test_repository_default_branch_requires_signed_commits: result = check.execute() assert len(result) == 1 assert result[0].resource_id == 1 - assert result[0].resource_name == repo_name + assert result[0].resource_name == "repo1" assert result[0].status == "FAIL" assert ( result[0].status_extended @@ -74,20 +91,37 @@ class Test_repository_default_branch_requires_signed_commits: def test_signed_commits_required(self): repository_client = mock.MagicMock - repo_name = "repo2" + repo_name = "repo1" default_branch = "main" repository_client.repositories = { - 2: Repo( - id=2, + 1: Repo( + id=1, name=repo_name, owner="account-name", - full_name="account-name/repo2", + full_name="account-name/repo1", + default_branch=Branch( + name=default_branch, + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=1, + required_linear_history=True, + allow_force_pushes=False, + branch_deletion=False, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, - default_branch=default_branch, - require_signed_commits=True, - securitymd=True, archived=False, pushed_at=datetime.now(timezone.utc), + securitymd=True, + codeowners_exists=True, + secret_scanning_enabled=True, + dependabot_alerts_enabled=True, + delete_branch_on_merge=True, ), } @@ -108,8 +142,8 @@ class Test_repository_default_branch_requires_signed_commits: check = repository_default_branch_requires_signed_commits() result = check.execute() assert len(result) == 1 - assert result[0].resource_id == 2 - assert result[0].resource_name == repo_name + assert result[0].resource_id == 1 + assert result[0].resource_name == "repo1" assert result[0].status == "PASS" assert ( result[0].status_extended diff --git a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py index cb14a4a340..1ec8acc3e0 100644 --- a/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py +++ b/tests/providers/github/services/repository/repository_default_branch_status_checks_required/repository_default_branch_status_checks_required_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -38,12 +38,30 @@ class Test_repository_default_branch_status_checks_required_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), status_checks=False, archived=False, pushed_at=datetime.now(timezone.utc), private=False, securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -83,11 +101,29 @@ class Test_repository_default_branch_status_checks_required_test: owner="account-name", full_name="account-name/repo1", private=False, - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=True, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), status_checks=True, archived=False, pushed_at=datetime.now(timezone.utc), securitymd=True, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py index 63b2594600..990886ad00 100644 --- a/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_dependency_scanning_enabled/repository_dependency_scanning_enabled_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,15 +37,29 @@ class Test_repository_dependency_scanning_enabled: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, archived=False, pushed_at=datetime.now(timezone.utc), securitymd=True, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, secret_scanning_enabled=True, dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } @@ -83,15 +97,29 @@ class Test_repository_dependency_scanning_enabled: name=repo_name, owner="account-name", full_name="account-name/repo2", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, archived=False, pushed_at=datetime.now(timezone.utc), securitymd=True, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, secret_scanning_enabled=True, dependabot_alerts_enabled=True, + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py index 9a28163702..a181ec8404 100644 --- a/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py +++ b/tests/providers/github/services/repository/repository_has_codeowners_file/repository_has_codeowners_file_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,14 +37,28 @@ class Test_repository_has_codeowners_file: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=True, - require_pull_request=False, - approval_count=0, codeowners_exists=False, + secret_scanning_enabled=False, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } @@ -82,14 +96,28 @@ class Test_repository_has_codeowners_file: name=repo_name, owner="account-name", full_name="account-name/repo2", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=True, - require_pull_request=False, - approval_count=0, codeowners_exists=True, + secret_scanning_enabled=False, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py b/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py index 58291070df..69ff88a93a 100644 --- a/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py +++ b/tests/providers/github/services/repository/repository_inactive_not_archived/repository_inactive_not_archived_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timedelta, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -40,11 +40,31 @@ class Test_repository_inactive_not_archived: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/test-repo", private=False, - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), archived=False, pushed_at=recent_activity, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } repository_client.audit_config = {} @@ -85,11 +105,31 @@ class Test_repository_inactive_not_archived: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/test-repo", private=False, - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), archived=False, pushed_at=old_activity, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } repository_client.audit_config = {} @@ -128,11 +168,31 @@ class Test_repository_inactive_not_archived: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/test-repo", - default_branch=default_branch, private=False, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), archived=True, pushed_at=old_activity, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } repository_client.audit_config = {} @@ -173,11 +233,31 @@ class Test_repository_inactive_not_archived: 1: Repo( id=1, name=repo_name, + owner="account-name", full_name="account-name/test-repo", private=False, - default_branch=default_branch, + default_branch=Branch( + name=default_branch, + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), archived=False, pushed_at=old_activity, + securitymd=False, + codeowners_exists=False, + secret_scanning_enabled=False, + dependabot_alerts_enabled=False, + delete_branch_on_merge=False, ), } repository_client.audit_config = {"inactive_not_archived_days_threshold": 40} diff --git a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py index e3d6849506..45cf49edd7 100644 --- a/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py +++ b/tests/providers/github/services/repository/repository_public_has_securitymd_file/repository_public_has_securitymd_file_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,13 +37,28 @@ class Test_repository_public_has_securitymd_file_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=False, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, + secret_scanning_enabled=False, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } @@ -81,13 +96,28 @@ class Test_repository_public_has_securitymd_file_test: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=True, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, + secret_scanning_enabled=False, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py index 0bff5cd6bc..ccdcc4dd25 100644 --- a/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py +++ b/tests/providers/github/services/repository/repository_secret_scanning_enabled/repository_secret_scanning_enabled_test.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from unittest import mock -from prowler.providers.github.services.repository.repository_service import Repo +from prowler.providers.github.services.repository.repository_service import Branch, Repo from tests.providers.github.github_fixtures import set_mocked_github_provider @@ -37,14 +37,28 @@ class Test_repository_secret_scanning_enabled: name=repo_name, owner="account-name", full_name="account-name/repo1", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=True, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, secret_scanning_enabled=False, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } @@ -82,14 +96,28 @@ class Test_repository_secret_scanning_enabled: name=repo_name, owner="account-name", full_name="account-name/repo2", - default_branch="main", + default_branch=Branch( + name="main", + protected=False, + default_branch=True, + require_pull_request=False, + approval_count=0, + required_linear_history=False, + allow_force_pushes=True, + branch_deletion=True, + status_checks=False, + enforce_admins=False, + require_code_owner_reviews=False, + require_signed_commits=False, + conversation_resolution=False, + ), private=False, securitymd=True, - require_pull_request=False, - approval_count=0, + codeowners_exists=False, secret_scanning_enabled=True, archived=False, pushed_at=datetime.now(timezone.utc), + delete_branch_on_merge=False, ), } diff --git a/tests/providers/github/services/repository/repository_service_test.py b/tests/providers/github/services/repository/repository_service_test.py index 9c9e7371c9..487ac41e7c 100644 --- a/tests/providers/github/services/repository/repository_service_test.py +++ b/tests/providers/github/services/repository/repository_service_test.py @@ -2,6 +2,7 @@ from datetime import datetime, timezone from unittest.mock import MagicMock, patch from prowler.providers.github.services.repository.repository_service import ( + Branch, Repo, Repository, ) @@ -15,25 +16,28 @@ def mock_list_repositories(_): name="repo1", owner="account-name", full_name="account-name/repo1", - default_branch_protection=True, - default_branch="main", + default_branch=Branch( + name="main", + protected=True, + default_branch=True, + require_pull_request=True, + approval_count=2, + required_linear_history=True, + allow_force_pushes=True, + branch_deletion=True, + status_checks=True, + enforce_admins=True, + require_code_owner_reviews=True, + require_signed_commits=True, + conversation_resolution=True, + ), private=False, securitymd=True, - require_pull_request=True, - required_linear_history=True, - allow_force_pushes=True, - default_branch_deletion=True, - status_checks=True, - approval_count=2, codeowners_exists=True, - require_code_owner_reviews=True, secret_scanning_enabled=True, - require_signed_commits=True, archived=False, pushed_at=datetime.now(timezone.utc), - enforce_admins=True, delete_branch_on_merge=True, - conversation_resolution=True, ), } @@ -57,21 +61,27 @@ class Test_Repository_Service: assert repository_service.repositories[1].name == "repo1" assert repository_service.repositories[1].full_name == "account-name/repo1" assert repository_service.repositories[1].private is False - assert repository_service.repositories[1].default_branch == "main" + assert repository_service.repositories[1].default_branch.name == "main" assert repository_service.repositories[1].securitymd - assert repository_service.repositories[1].required_linear_history - assert repository_service.repositories[1].require_pull_request - assert repository_service.repositories[1].allow_force_pushes - assert repository_service.repositories[1].default_branch_deletion - assert repository_service.repositories[1].status_checks - assert repository_service.repositories[1].enforce_admins + assert repository_service.repositories[1].default_branch.required_linear_history + assert repository_service.repositories[1].default_branch.require_pull_request + assert repository_service.repositories[1].default_branch.allow_force_pushes + assert repository_service.repositories[1].default_branch.branch_deletion + assert repository_service.repositories[1].default_branch.status_checks + assert repository_service.repositories[1].default_branch.enforce_admins assert repository_service.repositories[1].delete_branch_on_merge - assert repository_service.repositories[1].conversation_resolution - assert repository_service.repositories[1].approval_count == 2 + assert repository_service.repositories[1].default_branch.conversation_resolution + assert repository_service.repositories[1].default_branch.approval_count == 2 assert repository_service.repositories[1].codeowners_exists is True - assert repository_service.repositories[1].require_code_owner_reviews is True + assert ( + repository_service.repositories[1].default_branch.require_code_owner_reviews + is True + ) assert repository_service.repositories[1].secret_scanning_enabled is True - assert repository_service.repositories[1].require_signed_commits is True + assert ( + repository_service.repositories[1].default_branch.require_signed_commits + is True + ) assert repository_service.repositories[1].archived is False assert repository_service.repositories[1].pushed_at is not None From be1e3e942b0adabdcd7f3a40b31bdc80eb96f8f4 Mon Sep 17 00:00:00 2001 From: Sergio Garcia Date: Mon, 26 May 2025 15:42:39 +0200 Subject: [PATCH 11/24] feat(api): support GCP Service Account key (#7824) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sergio Garcia <38561120+garcitm@users.noreply.github.com> Co-authored-by: Víctor Fernández Poyatos --- api/CHANGELOG.md | 3 ++ ...026_provider_secret_gcp_service_account.py | 14 +++++++ api/src/backend/api/models.py | 1 + api/src/backend/api/specs/v1.yaml | 42 +++++++++++++++++++ api/src/backend/api/tests/test_views.py | 20 +++++++++ .../api/v1/serializer_utils/providers.py | 11 +++++ api/src/backend/api/v1/serializers.py | 9 ++++ 7 files changed, 100 insertions(+) create mode 100644 api/src/backend/api/migrations/0026_provider_secret_gcp_service_account.py diff --git a/api/CHANGELOG.md b/api/CHANGELOG.md index 299c3f715e..f49253fb45 100644 --- a/api/CHANGELOG.md +++ b/api/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to the **Prowler API** are documented in this file. ## [v1.9.0] (Prowler UNRELEASED) +### Added +- Support GCP Service Account key. [(#7824)](https://github.com/prowler-cloud/prowler/pull/7824) + ### Changed - Renamed field encrypted_password to password for M365 provider [(#7784)](https://github.com/prowler-cloud/prowler/pull/7784) diff --git a/api/src/backend/api/migrations/0026_provider_secret_gcp_service_account.py b/api/src/backend/api/migrations/0026_provider_secret_gcp_service_account.py new file mode 100644 index 0000000000..3857dbbd75 --- /dev/null +++ b/api/src/backend/api/migrations/0026_provider_secret_gcp_service_account.py @@ -0,0 +1,14 @@ +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("api", "0025_findings_uid_index_parent"), + ] + + operations = [ + migrations.RunSQL( + "ALTER TYPE provider_secret_type ADD VALUE IF NOT EXISTS 'service_account';", + reverse_sql=migrations.RunSQL.noop, + ), + ] diff --git a/api/src/backend/api/models.py b/api/src/backend/api/models.py index a427bcf9c9..28b0845a3a 100644 --- a/api/src/backend/api/models.py +++ b/api/src/backend/api/models.py @@ -850,6 +850,7 @@ class ProviderSecret(RowLevelSecurityProtectedModel): class TypeChoices(models.TextChoices): STATIC = "static", _("Key-value pairs") ROLE = "role", _("Role assumption") + SERVICE_ACCOUNT = "service_account", _("GCP Service Account Key") id = models.UUIDField(primary_key=True, default=uuid4, editable=False) inserted_at = models.DateTimeField(auto_now_add=True, editable=False) diff --git a/api/src/backend/api/specs/v1.yaml b/api/src/backend/api/specs/v1.yaml index 8431129344..c7c20b5d56 100644 --- a/api/src/backend/api/specs/v1.yaml +++ b/api/src/backend/api/specs/v1.yaml @@ -9137,10 +9137,12 @@ components: enum: - static - role + - service_account type: string description: |- * `static` - Key-value pairs * `role` - Role assumption + * `service_account` - GCP Service Account Key readOnly: true secret: oneOf: @@ -9269,6 +9271,14 @@ components: - client_id - client_secret - refresh_token + - type: object + title: GCP Service Account Key + properties: + service_account_key: + type: object + description: The service account key for GCP. + required: + - service_account_key - type: object title: Kubernetes Static Credentials properties: @@ -10317,10 +10327,12 @@ components: enum: - static - role + - service_account type: string description: |- * `static` - Key-value pairs * `role` - Role assumption + * `service_account` - GCP Service Account Key required: - secret_type relationships: @@ -10384,10 +10396,12 @@ components: enum: - static - role + - service_account type: string description: |- * `static` - Key-value pairs * `role` - Role assumption + * `service_account` - GCP Service Account Key secret: oneOf: - type: object @@ -10514,6 +10528,14 @@ components: - client_id - client_secret - refresh_token + - type: object + title: GCP Service Account Key + properties: + service_account_key: + type: object + description: The service account key for GCP. + required: + - service_account_key - type: object title: Kubernetes Static Credentials properties: @@ -10592,10 +10614,12 @@ components: enum: - static - role + - service_account type: string description: |- * `static` - Key-value pairs * `role` - Role assumption + * `service_account` - GCP Service Account Key secret: oneOf: - type: object @@ -10723,6 +10747,14 @@ components: - client_id - client_secret - refresh_token + - type: object + title: GCP Service Account Key + properties: + service_account_key: + type: object + description: The service account key for GCP. + required: + - service_account_key - type: object title: Kubernetes Static Credentials properties: @@ -10817,10 +10849,12 @@ components: enum: - static - role + - service_account type: string description: |- * `static` - Key-value pairs * `role` - Role assumption + * `service_account` - GCP Service Account Key readOnly: true secret: oneOf: @@ -10948,6 +10982,14 @@ components: - client_id - client_secret - refresh_token + - type: object + title: GCP Service Account Key + properties: + service_account_key: + type: object + description: The service account key for GCP. + required: + - service_account_key - type: object title: Kubernetes Static Credentials properties: diff --git a/api/src/backend/api/tests/test_views.py b/api/src/backend/api/tests/test_views.py index 677f9437a6..f6c2c56c38 100644 --- a/api/src/backend/api/tests/test_views.py +++ b/api/src/backend/api/tests/test_views.py @@ -1679,6 +1679,26 @@ class TestProviderSecretViewSet: "refresh_token": "refresh-token", }, ), + # GCP with Service Account Key secret + ( + Provider.ProviderChoices.GCP.value, + ProviderSecret.TypeChoices.SERVICE_ACCOUNT, + { + "service_account_key": { + "type": "service_account", + "project_id": "project-id", + "private_key_id": "private-key-id", + "private_key": "private-key", + "client_email": "client-email", + "client_id": "client-id", + "auth_uri": "auth-uri", + "token_uri": "token-uri", + "auth_provider_x509_cert_url": "auth-provider-x509-cert-url", + "client_x509_cert_url": "client-x509-cert-url", + "universe_domain": "universe-domain", + }, + }, + ), # Kubernetes with STATIC secret ( Provider.ProviderChoices.KUBERNETES.value, diff --git a/api/src/backend/api/v1/serializer_utils/providers.py b/api/src/backend/api/v1/serializer_utils/providers.py index a6ecea67d0..0a1e999fe2 100644 --- a/api/src/backend/api/v1/serializer_utils/providers.py +++ b/api/src/backend/api/v1/serializer_utils/providers.py @@ -154,6 +154,17 @@ from rest_framework_json_api import serializers }, "required": ["client_id", "client_secret", "refresh_token"], }, + { + "type": "object", + "title": "GCP Service Account Key", + "properties": { + "service_account_key": { + "type": "object", + "description": "The service account key for GCP.", + } + }, + "required": ["service_account_key"], + }, { "type": "object", "title": "Kubernetes Static Credentials", diff --git a/api/src/backend/api/v1/serializers.py b/api/src/backend/api/v1/serializers.py index 4ba2154327..7beb311d5f 100644 --- a/api/src/backend/api/v1/serializers.py +++ b/api/src/backend/api/v1/serializers.py @@ -1159,6 +1159,8 @@ class BaseWriteProviderSecretSerializer(BaseWriteSerializer): ) elif secret_type == ProviderSecret.TypeChoices.ROLE: serializer = AWSRoleAssumptionProviderSecret(data=secret) + elif secret_type == ProviderSecret.TypeChoices.SERVICE_ACCOUNT: + serializer = GCPServiceAccountProviderSecret(data=secret) else: raise serializers.ValidationError( {"secret_type": f"Secret type not supported: {secret_type}"} @@ -1212,6 +1214,13 @@ class GCPProviderSecret(serializers.Serializer): resource_name = "provider-secrets" +class GCPServiceAccountProviderSecret(serializers.Serializer): + service_account_key = serializers.JSONField() + + class Meta: + resource_name = "provider-secrets" + + class KubernetesProviderSecret(serializers.Serializer): kubeconfig_content = serializers.CharField() From 60b5a79b275f00267b7295f34cabe0ae28e4d9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Mon, 26 May 2025 17:52:59 +0200 Subject: [PATCH 12/24] fix(vpc): change the ServiceName from EC2 to VPC (#7840) --- .../vpc_endpoint_for_ec2_enabled.metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prowler/providers/aws/services/vpc/vpc_endpoint_for_ec2_enabled/vpc_endpoint_for_ec2_enabled.metadata.json b/prowler/providers/aws/services/vpc/vpc_endpoint_for_ec2_enabled/vpc_endpoint_for_ec2_enabled.metadata.json index 2a12db3c4e..3bd51b2656 100644 --- a/prowler/providers/aws/services/vpc/vpc_endpoint_for_ec2_enabled/vpc_endpoint_for_ec2_enabled.metadata.json +++ b/prowler/providers/aws/services/vpc/vpc_endpoint_for_ec2_enabled/vpc_endpoint_for_ec2_enabled.metadata.json @@ -3,7 +3,7 @@ "CheckID": "vpc_endpoint_for_ec2_enabled", "CheckTitle": "Amazon EC2 should be configured to use VPC endpoints that are created for the Amazon EC2 service.", "CheckType": [], - "ServiceName": "ec2", + "ServiceName": "vpc", "SubServiceName": "", "ResourceIdTemplate": "arn:partition:service:region:account-id:resource-id", "Severity": "medium", From 02ca82004f108717778880b66537ab4037cd559b Mon Sep 17 00:00:00 2001 From: Matt Keeler <19890779+mattkeeler@users.noreply.github.com> Date: Tue, 27 May 2025 03:26:51 -0400 Subject: [PATCH 13/24] fix(typo): minor language updates (#7843) --- .../sqlserver_auditing_enabled.py | 2 +- ...tra_identity_protection_sign_in_risk_enabled.py | 6 +++--- .../entra_identity_protection_user_risk_enabled.py | 14 +++++++------- .../compute_instance_login_user.py | 2 +- .../sqlserver_auditing_enabled_test.py | 2 +- ...a_identity_protection_user_risk_enabled_test.py | 10 +++++----- .../compute_instance_login_user_test_for_nhn.py | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled.py index 5461cd45e4..f9c7237302 100644 --- a/prowler/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled.py +++ b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled.py @@ -12,7 +12,7 @@ class sqlserver_auditing_enabled(Check): ) report.subscription = subscription report.status = "PASS" - report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has a auditing policy configured." + report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has an auditing policy configured." for auditing_policy in sql_server.auditing_policies: if auditing_policy.state == "Disabled": report.status = "FAIL" diff --git a/prowler/providers/m365/services/entra/entra_identity_protection_sign_in_risk_enabled/entra_identity_protection_sign_in_risk_enabled.py b/prowler/providers/m365/services/entra/entra_identity_protection_sign_in_risk_enabled/entra_identity_protection_sign_in_risk_enabled.py index c9878c8315..6b8db3230f 100644 --- a/prowler/providers/m365/services/entra/entra_identity_protection_sign_in_risk_enabled/entra_identity_protection_sign_in_risk_enabled.py +++ b/prowler/providers/m365/services/entra/entra_identity_protection_sign_in_risk_enabled/entra_identity_protection_sign_in_risk_enabled.py @@ -9,13 +9,13 @@ from prowler.providers.m365.services.entra.entra_service import ( class entra_identity_protection_sign_in_risk_enabled(Check): - """Check if at least one Conditional Access policy is a Identity Protection sign-in risk policy. + """Check if at least one Conditional Access policy is an Identity Protection sign-in risk policy. - This check ensures that at least one Conditional Access policy is a Identity Protection sign-in risk policy. + This check ensures that at least one Conditional Access policy is an Identity Protection sign-in risk policy. """ def execute(self) -> list[CheckReportM365]: - """Execute the check to ensure that at least one Conditional Access policy is a Identity Protection sign-in risk policy. + """Execute the check to ensure that at least one Conditional Access policy is an Identity Protection sign-in risk policy. Returns: list[CheckReportM365]: A list containing the results of the check. diff --git a/prowler/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled.py b/prowler/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled.py index 8864663e68..b27f6dcf3e 100644 --- a/prowler/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled.py +++ b/prowler/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled.py @@ -9,13 +9,13 @@ from prowler.providers.m365.services.entra.entra_service import ( class entra_identity_protection_user_risk_enabled(Check): - """Check if at least one Conditional Access policy is a Identity Protection user risk policy. + """Check if at least one Conditional Access policy is an Identity Protection user risk policy. - This check ensures that at least one Conditional Access policy is a Identity Protection user risk policy. + This check ensures that at least one Conditional Access policy is an Identity Protection user risk policy. """ def execute(self) -> list[CheckReportM365]: - """Execute the check to ensure that at least one Conditional Access policy is a Identity Protection user risk policy. + """Execute the check to ensure that at least one Conditional Access policy is an Identity Protection user risk policy. Returns: list[CheckReportM365]: A list containing the results of the check. @@ -29,7 +29,7 @@ class entra_identity_protection_user_risk_enabled(Check): resource_id="conditionalAccessPolicies", ) report.status = "FAIL" - report.status_extended = "No Conditional Access Policy is an user risk based Identity Protection Policy." + report.status_extended = "No Conditional Access Policy is a user risk based Identity Protection Policy." for policy in entra_client.conditional_access_policies.values(): if policy.state == ConditionalAccessPolicyState.DISABLED: @@ -62,13 +62,13 @@ class entra_identity_protection_user_risk_enabled(Check): ) if RiskLevel.HIGH not in policy.conditions.user_risk_levels: report.status = "FAIL" - report.status_extended = f"Conditional Access Policy '{policy.display_name}' is an user risk based Identity Protection Policy but does not protect against high risk potential account compromises." + report.status_extended = f"Conditional Access Policy '{policy.display_name}' is a user risk based Identity Protection Policy but does not protect against high risk potential account compromises." elif policy.state == ConditionalAccessPolicyState.ENABLED_FOR_REPORTING: report.status = "FAIL" - report.status_extended = f"Conditional Access Policy '{policy.display_name}' is an user risk based Identity Protection Policy and reports high risk potential account compromises, but does not protect against them." + report.status_extended = f"Conditional Access Policy '{policy.display_name}' is a user risk based Identity Protection Policy and reports high risk potential account compromises, but does not protect against them." else: report.status = "PASS" - report.status_extended = f"Conditional Access Policy '{policy.display_name}' is an user risk based Identity Protection Policy and does protect against high risk potential account compromises." + report.status_extended = f"Conditional Access Policy '{policy.display_name}' is a user risk based Identity Protection Policy and does protect against high risk potential account compromises." break findings.append(report) diff --git a/prowler/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user.py b/prowler/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user.py index 95f575f83c..8330dc4730 100644 --- a/prowler/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user.py +++ b/prowler/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user.py @@ -12,7 +12,7 @@ class compute_instance_login_user(Check): ) report.status = "PASS" report.status_extended = ( - f"VM Instance {instance.name} has a appropriate login user." + f"VM Instance {instance.name} has an appropriate login user." ) if instance.login_user: report.status = "FAIL" diff --git a/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py index 20c18ea998..e11294a778 100644 --- a/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py +++ b/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py @@ -122,7 +122,7 @@ class Test_sqlserver_auditing_enabled: assert result[0].status == "PASS" assert ( result[0].status_extended - == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION_ID} has a auditing policy configured." + == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION_ID} has an auditing policy configured." ) assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == sql_server_name diff --git a/tests/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled_test.py b/tests/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled_test.py index b251199af6..4336820faf 100644 --- a/tests/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled_test.py +++ b/tests/providers/m365/services/entra/entra_identity_protection_user_risk_enabled/entra_identity_protection_user_risk_enabled_test.py @@ -45,7 +45,7 @@ class Test_entra_identity_protection_user_risk_enabled: assert result[0].status == "FAIL" assert ( result[0].status_extended - == "No Conditional Access Policy is an user risk based Identity Protection Policy." + == "No Conditional Access Policy is a user risk based Identity Protection Policy." ) assert result[0].resource == {} assert result[0].resource_name == "Conditional Access Policies" @@ -119,7 +119,7 @@ class Test_entra_identity_protection_user_risk_enabled: assert result[0].status == "FAIL" assert ( result[0].status_extended - == "No Conditional Access Policy is an user risk based Identity Protection Policy." + == "No Conditional Access Policy is a user risk based Identity Protection Policy." ) assert result[0].resource == {} assert result[0].resource_name == "Conditional Access Policies" @@ -198,7 +198,7 @@ class Test_entra_identity_protection_user_risk_enabled: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Conditional Access Policy '{display_name}' is an user risk based Identity Protection Policy but does not protect against high risk potential account compromises." + == f"Conditional Access Policy '{display_name}' is a user risk based Identity Protection Policy but does not protect against high risk potential account compromises." ) assert ( result[0].resource @@ -280,7 +280,7 @@ class Test_entra_identity_protection_user_risk_enabled: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Conditional Access Policy '{display_name}' is an user risk based Identity Protection Policy and reports high risk potential account compromises, but does not protect against them." + == f"Conditional Access Policy '{display_name}' is a user risk based Identity Protection Policy and reports high risk potential account compromises, but does not protect against them." ) assert ( result[0].resource @@ -362,7 +362,7 @@ class Test_entra_identity_protection_user_risk_enabled: assert result[0].status == "PASS" assert ( result[0].status_extended - == f"Conditional Access Policy '{display_name}' is an user risk based Identity Protection Policy and does protect against high risk potential account compromises." + == f"Conditional Access Policy '{display_name}' is a user risk based Identity Protection Policy and does protect against high risk potential account compromises." ) assert ( result[0].resource diff --git a/tests/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user_test_for_nhn.py b/tests/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user_test_for_nhn.py index 5e545d87c3..635347a077 100644 --- a/tests/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user_test_for_nhn.py +++ b/tests/providers/nhn/services/compute/compute_instance_login_user/compute_instance_login_user_test_for_nhn.py @@ -67,7 +67,7 @@ class Test_compute_instance_login_user: assert len(result) == 1 assert result[0].status == "PASS" - assert "has a appropriate login user" in result[0].status_extended + assert "has an appropriate login user" in result[0].status_extended assert result[0].resource_name == instance_name assert result[0].resource_id == instance_id From 66acfd8691d2f3173a53f7073048f527919b9d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Mart=C3=ADn?= Date: Tue, 27 May 2025 09:35:57 +0200 Subject: [PATCH 14/24] feat(aws): add NIS2 compliance framework (#7839) --- README.md | 2 +- dashboard/compliance/nis2_aws.py | 43 + prowler/CHANGELOG.md | 1 + prowler/compliance/aws/nis2_aws.json | 2104 ++++++++++++++++++++++++++ 4 files changed, 2149 insertions(+), 1 deletion(-) create mode 100644 dashboard/compliance/nis2_aws.py create mode 100644 prowler/compliance/aws/nis2_aws.json diff --git a/README.md b/README.md index 7c7c12d3fc..0fbf555e26 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ prowler dashboard | Provider | Checks | Services | [Compliance Frameworks](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/compliance/) | [Categories](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/misc/#categories) | |---|---|---|---|---| -| AWS | 564 | 82 | 34 | 10 | +| AWS | 564 | 82 | 35 | 10 | | GCP | 79 | 13 | 9 | 3 | | Azure | 140 | 18 | 8 | 3 | | Kubernetes | 83 | 7 | 5 | 7 | diff --git a/dashboard/compliance/nis2_aws.py b/dashboard/compliance/nis2_aws.py new file mode 100644 index 0000000000..8baac9a9a5 --- /dev/null +++ b/dashboard/compliance/nis2_aws.py @@ -0,0 +1,43 @@ +import warnings + +from dashboard.common_methods import get_section_containers_3_levels + +warnings.filterwarnings("ignore") + + +def get_table(data): + data["REQUIREMENTS_DESCRIPTION"] = ( + data["REQUIREMENTS_ID"] + " - " + data["REQUIREMENTS_DESCRIPTION"] + ) + + data["REQUIREMENTS_DESCRIPTION"] = data["REQUIREMENTS_DESCRIPTION"].apply( + lambda x: x[:150] + "..." if len(str(x)) > 150 else x + ) + + data["REQUIREMENTS_ATTRIBUTES_SECTION"] = data[ + "REQUIREMENTS_ATTRIBUTES_SECTION" + ].apply(lambda x: x[:80] + "..." if len(str(x)) > 80 else x) + + data["REQUIREMENTS_ATTRIBUTES_SUBSECTION"] = data[ + "REQUIREMENTS_ATTRIBUTES_SUBSECTION" + ].apply(lambda x: x[:150] + "..." if len(str(x)) > 150 else x) + + aux = data[ + [ + "REQUIREMENTS_DESCRIPTION", + "REQUIREMENTS_ATTRIBUTES_SECTION", + "REQUIREMENTS_ATTRIBUTES_SUBSECTION", + "CHECKID", + "STATUS", + "REGION", + "ACCOUNTID", + "RESOURCEID", + ] + ] + + return get_section_containers_3_levels( + aux, + "REQUIREMENTS_ATTRIBUTES_SECTION", + "REQUIREMENTS_ATTRIBUTES_SUBSECTION", + "REQUIREMENTS_DESCRIPTION", + ) diff --git a/prowler/CHANGELOG.md b/prowler/CHANGELOG.md index 89cec16b9a..741a89f2aa 100644 --- a/prowler/CHANGELOG.md +++ b/prowler/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to the **Prowler SDK** are documented in this file. - Add `repository_dependency_scanning_enabled` check for GitHub provider. [(#7771)](https://github.com/prowler-cloud/prowler/pull/7771) - Add `repository_secret_scanning_enabled` check for GitHub provider. [(#7759)](https://github.com/prowler-cloud/prowler/pull/7759) - Add `repository_default_branch_requires_codeowners_review` check for GitHub provider. [(#7753)](https://github.com/prowler-cloud/prowler/pull/7753) +- Add NIS 2 compliance framework for AWS. [(7839)](https://github.com/prowler-cloud/prowler/pull/7839) ### Fixed - Fix `m365_powershell test_credentials` to use sanitized credentials. [(#7761)](https://github.com/prowler-cloud/prowler/pull/7761) diff --git a/prowler/compliance/aws/nis2_aws.json b/prowler/compliance/aws/nis2_aws.json new file mode 100644 index 0000000000..a8c5aabce8 --- /dev/null +++ b/prowler/compliance/aws/nis2_aws.json @@ -0,0 +1,2104 @@ +{ + "Framework": "NIS2", + "Version": "", + "Provider": "AWS", + "Description": "ANNEX to the Commission Implementing Regulation laying down rules for the application of Directive (EU) 2022/2555 as regards technical and methodological requirements of cybersecurity risk-management measures and further specification of the cases in which an incident is considered to be significant with regard to DNS service providers, TLD name registries, cloud computing service providers, data centre service providers, content delivery network providers, managed service providers, managed security service providers, providers of online market places, of online search engines and of social networking services platforms, and trust service providers", + "Requirements": [ + { + "Id": "1.1.1.a", + "Description": "set out the relevant entities approach to managing the security of their network and information systems;", + "Checks": [ + "route53_domains_privacy_protection_enabled", + "secretsmanager_not_publicly_accessible", + "account_security_contact_information_is_registered" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.1.1.c", + "Description": "set out network and information security objectives;", + "Checks": [ + "route53_domains_privacy_protection_enabled" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "route53" + } + ] + }, + { + "Id": "1.1.1.d", + "Description": "include a commitment to continual improvement of the security of network and information systems;", + "Checks": [ + "iam_password_policy_expires_passwords_within_90_days_or_less", + "iam_rotate_access_key_90_days", + "route53_domains_privacy_protection_enabled", + "secretsmanager_secret_rotated_periodically" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.1.1.h", + "Description": "list the documentation to be kept and the duration of retention of the documentation;", + "Checks": [ + "kinesis_stream_data_retention_period", + "s3_bucket_server_access_logging_enabled", + "cloudwatch_log_group_retention_policy_specific_days_enabled" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.1.2", + "Description": "The network and information system security policy shall be reviewed and, where appropriate, updated by management bodies at least annually and when significant incidents or significant changes to operations or risks occur. The result of the reviews shall be documented.", + "Checks": [ + "iam_password_policy_expires_passwords_within_90_days_or_less", + "iam_rotate_access_key_90_days", + "secretsmanager_secret_rotated_periodically" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.2.1", + "Description": "As part of their policy on the security of network and information systems referred to in point 1.1., the relevant entities shall lay down responsibilities and authorities for network and information system security and assign them to roles, allocate them according to the relevant entities needs, and communicate them to the management bodies.", + "Checks": [ + "iam_policy_attached_only_to_group_or_roles", + "iam_role_administratoraccess_policy", + "iam_policy_cloudshell_admin_not_attached" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "iam" + } + ] + }, + { + "Id": "1.2.3", + "Description": "At least one person shall report directly to the management bodies on matters of network and information system security.", + "Checks": [ + "account_security_contact_information_is_registered" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "account" + } + ] + }, + { + "Id": "1.2.4", + "Description": "Depending on the size of the relevant entities, network and information system security shall be covered by dedicated roles or duties carried out in addition to existing roles.", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "iam" + } + ] + }, + { + "Id": "2.1.1", + "Description": "For the purpose of Article 21(2), point (a) of Directive (EU) 2022/2555, the relevant entities shall establish and maintain an appropriate risk management framework to identify and address the risks posed to the security of network and information systems. The relevant entities shall perform and document risk assessments and, based on the results, establish, implement and monitor a risk treatment plan. Risk assessment results and residual risks shall be accepted by management bodies or, where applicable, by persons who are accountable and have the authority to manage risks, provided that the relevant entities ensure adequate reporting to the management bodies.", + "Checks": [ + "ssmincidents_enabled_with_plans", + "iam_securityaudit_role_created", + "iam_support_role_created" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.a", + "Description": "follow a risk management methodology;", + "Checks": [ + "ssmincidents_enabled_with_plans", + "iam_securityaudit_role_created", + "iam_support_role_created" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.d", + "Description": "in line with an all-hazards approach, identify and document the risks posed to the security of network and information systems, in particular in relation to third parties and risks that could lead to disruptions in the availability, integrity, authenticity and confidentiality of the network and information systems, including the identification of single point of failures;", + "Checks": [ + "networkfirewall_multi_az", + "networkfirewall_policy_rule_group_associated", + "backup_plans_exist" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.e", + "Description": "analyse the risks posed to the security of network and information systems, including threat, likelihood, impact, and risk level, taking into account cyber threat intelligence and vulnerabilities;", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "iam" + } + ] + }, + { + "Id": "2.1.2.f", + "Description": "evaluate the identified risks based on the risk criteria;", + "Checks": [ + "iam_securityaudit_role_created", + "iam_policy_attached_only_to_group_or_roles", + "secretsmanager_secret_rotated_periodically" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.g", + "Description": "identify and prioritise appropriate risk treatment options and measures;", + "Checks": [ + "guardduty_no_high_severity_findings", + "inspector2_active_findings_exist", + "accessanalyzer_enabled_without_findings" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.h", + "Description": "continuously monitor the implementation of the risk treatment measures;", + "Checks": [ + "guardduty_no_high_severity_findings", + "inspector2_active_findings_exist", + "accessanalyzer_enabled_without_findings" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.i", + "Description": "identify who is responsible for implementing the risk treatment measures and when they should be implemented;", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "ssm" + } + ] + }, + { + "Id": "2.1.2.j", + "Description": "document the chosen risk treatment measures in a risk treatment plan and the reasons justifying the acceptance of residual risks in a comprehensible manner.", + "Checks": [ + "backup_plans_exist", + "backup_reportplans_exist" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "backup" + } + ] + }, + { + "Id": "2.1.3", + "Description": "When identifying and prioritising appropriate risk treatment options and measures, the relevant entities shall take into account the risk assessment results, the results of the procedure to assess the effectiveness of cybersecurity risk-management measures, the cost of implementation in relation to the expected benefit, the asset classification referred to in point 12.1., and the business impact analysis referred to in point 4.1.3.", + "Checks": [ + "backup_recovery_point_encrypted" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "backup" + } + ] + }, + { + "Id": "2.1.4", + "Description": "The relevant entities shall review and, where appropriate, update the risk assessment results and the risk treatment plan at planned intervals and at least annually, and when significant changes to operations or risks or significant incidents occur.", + "Checks": [ + "secretsmanager_secret_rotated_periodically", + "iam_rotate_access_key_90_days" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.2.1", + "Description": "The relevant entities shall regularly review the compliance with their policies on network and information system security, topic-specific policies, rules, and standards. The management bodies shall be informed of the status of network and information security on the basis of the compliance reviews by means of regular reporting.", + "Checks": [ + "networkfirewall_policy_rule_group_associated", + "account_security_contact_information_is_registered", + "iam_support_role_created", + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.2 Compliance monitoring", + "Service": "generic" + } + ] + }, + { + "Id": "2.2.3", + "Description": "The relevant entities shall perform the compliance monitoring at planned intervals and when significant incidents or significant changes to operations or risks occur.", + "Checks": [ + "secretsmanager_secret_rotated_periodically", + "account_maintain_current_contact_details", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_changes_to_network_acls_alarm_configured", + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_network_route_tables_alarm_configured", + "cloudwatch_changes_to_vpcs_alarm_configured", + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_security_group_changes" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.2 Compliance monitoring", + "Service": "generic" + } + ] + }, + { + "Id": "2.3.1", + "Description": "The relevant entities shall review independently their approach to managing network and information system security and its implementation including people, processes and technologies.", + "Checks": [ + "iam_rotate_access_key_90_days", + "iam_securityaudit_role_created", + "secretsmanager_secret_rotated_periodically", + "cloudwatch_log_metric_filter_root_usage" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.3 Independent review of information and network security", + "Service": "generic" + } + ] + }, + { + "Id": "3.1.1", + "Description": "For the purpose of Article 21(2), point (b) of Directive (EU) 2022/2555, the relevant entities shall establish and implement an incident handling policy laying down the roles, responsibilities, and procedures for detecting, analysing, containing or responding to, recovering from, documenting and reporting of incidents in a timely manner.", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "ssm" + } + ] + }, + { + "Id": "3.1.2.a", + "Description": "a categorisation system for incidents that is consistent with the event assessment and classification carried out pursuant to point 3.4.1.;", + "Checks": [ + "cloudtrail_multi_region_enabled_logging_management_events", + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "generic" + } + ] + }, + { + "Id": "3.1.2.c", + "Description": "assignment of roles to detect and appropriately respond to incidents to competent employees;", + "Checks": [ + "iam_role_cross_service_confused_deputy_prevention", + "iam_securityaudit_role_created", + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "generic" + } + ] + }, + { + "Id": "3.1.2.d", + "Description": "documents to be used in the course of incident detection and response such as incident response manuals, escalation charts, contact lists and templates.", + "Checks": [ + "ssmincidents_enabled_with_plans", + "ssm_documents_set_as_public", + "iam_support_role_created", + "account_security_contact_information_is_registered" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "generic" + } + ] + }, + { + "Id": "3.1.3", + "Description": "The roles, responsibilities and procedures laid down in the policy shall be tested and reviewed and, where appropriate, updated at planned intervals and after significant incidents or significant changes to operations or risks.", + "Checks": [ + "secretsmanager_secret_rotated_periodically", + "iam_rotate_access_key_90_days", + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.1", + "Description": "The relevant entities shall lay down procedures and use tools to monitor and log activities on their network and information systems to detect events that could be considered as incidents and respond accordingly to mitigate the impact.", + "Checks": [ + "cloudwatch_log_metric_filter_root_usage" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.2.2", + "Description": "To the extent feasible, monitoring shall be automated and carried out either continuously or in periodic intervals, subject to business capabilities. The relevant entities shall implement their monitoring activities in a way which minimises false positives and false negatives.", + "Checks": [ + "cloudwatch_log_metric_filter_security_group_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_root_usage" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.2.3.a", + "Description": "relevant outbound and inbound network traffic;", + "Checks": [ + "cloudfront_distributions_origin_traffic_encrypted", + "cloudwatch_changes_to_network_acls_alarm_configured", + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_network_route_tables_alarm_configured", + "ec2_launch_template_no_public_ip" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.b", + "Description": "creation, modification or deletion of users of the relevant entities network and information systems and extension of the permissions;", + "Checks": [ + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_security_group_changes", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.2.3.c", + "Description": "access to systems and applications;", + "Checks": [ + "acm_certificates_transparency_logs_enabled", + "apigateway_restapi_logging_enabled", + "apigatewayv2_api_access_logging_enabled", + "appsync_field_level_logging_enabled", + "athena_workgroup_logging_enabled", + "awslambda_function_invoke_api_operations_cloudtrail_logging_enabled", + "bedrock_model_invocation_logging_enabled", + "bedrock_model_invocation_logs_encryption_enabled", + "cloudfront_distributions_logging_enabled", + "cloudtrail_cloudwatch_logging_enabled", + "cloudtrail_logs_s3_bucket_access_logging_enabled", + "cloudtrail_logs_s3_bucket_is_not_publicly_accessible", + "cloudtrail_multi_region_enabled_logging_management_events", + "cloudtrail_s3_dataevents_read_enabled", + "cloudtrail_s3_dataevents_write_enabled", + "cloudwatch_changes_to_network_acls_alarm_configured", + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_vpcs_alarm_configured", + "cloudwatch_log_group_not_publicly_accessible", + "cloudwatch_log_group_retention_policy_specific_days_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_authentication_failures", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_root_usage", + "cloudwatch_log_metric_filter_security_group_changes", + "cloudwatch_log_metric_filter_sign_in_without_mfa", + "cloudwatch_log_metric_filter_unauthorized_api_calls", + "codebuild_project_logging_enabled", + "codebuild_project_s3_logs_encrypted", + "datasync_task_logging_enabled", + "dms_replication_task_source_logging_enabled", + "dms_replication_task_target_logging_enabled", + "ec2_client_vpn_endpoint_connection_logging_enabled", + "ecs_task_definitions_logging_block_mode", + "ecs_task_definitions_logging_enabled", + "eks_control_plane_logging_all_types_enabled", + "elasticbeanstalk_environment_cloudwatch_logging_enabled", + "elb_logging_enabled", + "elbv2_logging_enabled", + "glue_etl_jobs_cloudwatch_logs_encryption_enabled", + "glue_etl_jobs_logging_enabled", + "guardduty_eks_audit_log_enabled", + "mq_broker_logging_enabled", + "neptune_cluster_integration_cloudwatch_logs", + "networkfirewall_logging_enabled", + "opensearch_service_domains_audit_logging_enabled", + "opensearch_service_domains_cloudwatch_logging_enabled", + "rds_cluster_integration_cloudwatch_logs", + "rds_instance_integration_cloudwatch_logs", + "redshift_cluster_audit_logging", + "route53_public_hosted_zones_cloudwatch_logging_enabled", + "s3_bucket_server_access_logging_enabled", + "stepfunctions_statemachine_logging_enabled", + "vpc_flow_logs_enabled", + "waf_global_webacl_logging_enabled", + "wafv2_webacl_logging_enabled", + "wafv2_webacl_rule_logging_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.d", + "Description": "authentication-related events;", + "Checks": [ + "cloudwatch_log_metric_filter_authentication_failures", + "cloudwatch_log_metric_filter_sign_in_without_mfa", + "directoryservice_supported_mfa_radius_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.e", + "Description": "all privileged access to systems and applications, and activities performed by administrative accounts;", + "Checks": [ + "accessanalyzer_enabled", + "cloudwatch_log_metric_filter_root_usage" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.f", + "Description": "access or changes to critical configuration and backup files;", + "Checks": [ + "cloudwatch_changes_to_network_acls_alarm_configured", + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_network_route_tables_alarm_configured", + "cloudwatch_changes_to_vpcs_alarm_configured", + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_security_group_changes" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.g", + "Description": "event logs and logs from security tools, such as antivirus, intrusion detection systems or firewalls;", + "Checks": [ + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_authentication_failures", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_root_usage", + "cloudwatch_log_metric_filter_security_group_changes", + "cloudwatch_log_metric_filter_sign_in_without_mfa", + "cloudwatch_log_metric_filter_unauthorized_api_calls", + "cloudtrail_s3_dataevents_read_enabled", + "cloudtrail_s3_dataevents_write_enabled", + "cloudtrail_cloudwatch_logging_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.h", + "Description": "use of system resources, as well as their performance;", + "Checks": [ + "rds_instance_enhanced_monitoring_enabled", + "ec2_instance_detailed_monitoring_enabled", + "guardduty_eks_runtime_monitoring_enabled", + "kafka_cluster_enhanced_monitoring_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.4", + "Description": "The logs shall be regularly reviewed for any unusual or unwanted trends. Where appropriate, the relevant entities shall lay down appropriate values for alarm thresholds. If the laid down values for alarm threshold are exceeded, an alarm shall be triggered, where appropriate, automatically. The relevant entities shall ensure that, in case of an alarm, a qualified and appropriate response is initiated in a timely manner.", + "Checks": [ + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_vpcs_alarm_configured", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_unauthorized_api_calls", + "cloudwatch_changes_to_network_route_tables_alarm_configured" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.2.5", + "Description": "The relevant entities shall maintain and back up logs for a predefined period and shall protect them from unauthorised access or changes.", + "Checks": [ + "cloudwatch_log_group_retention_policy_specific_days_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.4.1", + "Description": "The relevant entities shall assess suspicious events to determine whether they constitute incidents and, if so, determine their nature and severity.", + "Checks": [ + "cloudtrail_threat_detection_privilege_escalation", + "cloudtrail_threat_detection_enumeration", + "cloudtrail_threat_detection_llm_jacking" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.4 Event assessment and classification", + "Service": "cloudtrail" + } + ] + }, + { + "Id": "3.4.2.c", + "Description": "review the appropriate logs for the purposes of event assessment and classification;", + "Checks": [ + "cloudtrail_multi_region_enabled_logging_management_events", + "cloudtrail_s3_dataevents_read_enabled", + "cloudtrail_cloudwatch_logging_enabled", + "cloudwatch_log_metric_filter_unauthorized_api_calls" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.4 Event assessment and classification", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.4.2.d", + "Description": "put in place a process for log correlation and analysis, and reassess and reclassify events in case of new information becoming available or after analysis of previously available information.", + "Checks": [ + "cloudtrail_log_file_validation_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.4 Event assessment and classification", + "Service": "generic" + } + ] + }, + { + "Id": "3.5.1", + "Description": "The relevant entities shall respond to incidents in accordance with documented procedures and in a timely manner.", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "ssm" + } + ] + }, + { + "Id": "3.5.3.a", + "Description": "with the Computer Security Incident Response Teams (CSIRTs) or, where applicable, the competent authorities, related to incident notification;", + "Checks": [ + "route53_domains_privacy_protection_enabled", + "account_security_contact_information_is_registered", + "account_maintain_current_contact_details", + "ec2_instance_secrets_user_data", + "secretsmanager_not_publicly_accessible" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "generic" + } + ] + }, + { + "Id": "3.5.4", + "Description": "The relevant entities shall log incident response activities in accordance with the procedures referred to in point 3.2.1., and record evidence.", + "Checks": [ + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_authentication_failures", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_root_usage", + "cloudwatch_log_metric_filter_security_group_changes", + "cloudwatch_log_metric_filter_sign_in_without_mfa", + "cloudwatch_log_metric_filter_unauthorized_api_calls" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "3.6.1", + "Description": "Where appropriate, the relevant entities shall carry out post-incident reviews after recovery from incidents. The post-incident reviews shall identify, where possible, the root cause of the incident and result in documented lessons learned to reduce the occurrence and consequences of future incidents.", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.6 Post-incident reviews", + "Service": "ssm" + } + ] + }, + { + "Id": "3.6.2", + "Description": "The relevant entities shall ensure that post-incident reviews contribute to improving their approach to network and information security, to risk treatment measures, and to incident handling, detection and response procedures.", + "Checks": [ + "ssmincidents_enabled_with_plans", + "backup_plans_exist", + "backup_recovery_point_encrypted", + "backup_reportplans_exist", + "backup_vaults_encrypted", + "backup_vaults_exist", + "documentdb_cluster_backup_enabled", + "dynamodb_table_protected_by_backup_plan", + "ec2_ebs_volume_protected_by_backup_plan", + "efs_have_backup_enabled", + "elasticache_redis_cluster_backup_enabled", + "fsx_file_system_copy_tags_to_backups_enabled", + "neptune_cluster_backup_enabled", + "rds_cluster_protected_by_backup_plan", + "rds_instance_backup_enabled", + "rds_instance_protected_by_backup_plan" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.6 Post-incident reviews", + "Service": "generic" + } + ] + }, + { + "Id": "3.6.3", + "Description": "The relevant entities shall review at planned intervals if incidents led to post-incident reviews.", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.6 Post-incident reviews", + "Service": "generic" + } + ] + }, + { + "Id": "4.1.1", + "Description": "For the purpose of Article 21(2), point (c) of Directive (EU) 2022/2555, the relevant entities shall lay down and maintain a business continuity and disaster recovery plan to apply in the case of incidents.", + "Checks": [ + "backup_recovery_point_encrypted", + "backup_reportplans_exist", + "backup_plans_exist", + "rds_instance_backup_enabled", + "rds_instance_protected_by_backup_plan", + "rds_cluster_protected_by_backup_plan" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "generic" + } + ] + }, + { + "Id": "4.1.2.f", + "Description": "recovery plans for specific operations, including recovery objectives;", + "Checks": [ + "backup_plans_exist", + "backup_reportplans_exist", + "backup_vaults_exist" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "backup" + } + ] + }, + { + "Id": "4.1.2.g", + "Description": "required resources, including backups and redundancies;", + "Checks": [ + "backup_plans_exist", + "backup_recovery_point_encrypted", + "backup_reportplans_exist", + "backup_vaults_encrypted", + "backup_vaults_exist", + "documentdb_cluster_backup_enabled", + "dynamodb_table_protected_by_backup_plan", + "ec2_ebs_volume_protected_by_backup_plan", + "efs_have_backup_enabled", + "elasticache_redis_cluster_backup_enabled", + "fsx_file_system_copy_tags_to_backups_enabled", + "neptune_cluster_backup_enabled", + "rds_cluster_protected_by_backup_plan", + "rds_instance_backup_enabled", + "rds_instance_protected_by_backup_plan" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "generic" + } + ] + }, + { + "Id": "4.1.3", + "Description": "The relevant entities shall carry out a business impact analysis to assess the potential impact of severe disruptions to their business operations and shall, based on the results of the business impact analysis, establish continuity requirements for the network and information systems.", + "Checks": [ + "backup_plans_exist" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "backup" + } + ] + }, + { + "Id": "4.1.4", + "Description": "The business continuity plan and disaster recovery plan shall be tested, reviewed and, where appropriate, updated at planned intervals and following significant incidents or significant changes to operations or risks. The relevant entities shall ensure that the plans incorporate lessons learnt from such tests.", + "Checks": [ + "backup_plans_exist", + "backup_reportplans_exist", + "rds_cluster_protected_by_backup_plan", + "rds_instance_protected_by_backup_plan", + "dynamodb_table_protected_by_backup_plan" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "generic" + } + ] + }, + { + "Id": "4.2.2.b", + "Description": "assurance that backup copies are complete and accurate, including configuration data and data stored in cloud computing service environment;", + "Checks": [ + "backup_vaults_encrypted", + "backup_vaults_exist", + "backup_recovery_point_encrypted", + "backup_plans_exist" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "backup" + } + ] + }, + { + "Id": "4.2.2.e", + "Description": "restoring data from backup copies;", + "Checks": [ + "rds_cluster_backtrack_enabled", + "rds_instance_backup_enabled", + "backup_vaults_exist" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "generic" + } + ] + }, + { + "Id": "4.2.2.f", + "Description": "retention periods based on business and regulatory requirements.", + "Checks": [ + "kinesis_stream_data_retention_period", + "cloudwatch_log_group_retention_policy_specific_days_enabled" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "generic" + } + ] + }, + { + "Id": "4.3.1", + "Description": "The relevant entities shall put in place a process for crisis management.", + "Checks": [ + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.3 Crisis management", + "Service": "ssm" + } + ] + }, + { + "Id": "4.3.2.a", + "Description": "roles and responsibilities for personnel and, where appropriate, suppliers and service providers, specifying the allocation of roles in crisis situations, including specific steps to follow;", + "Checks": [ + "iam_support_role_created" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.3 Crisis management", + "Service": "iam" + } + ] + }, + { + "Id": "4.3.2.c", + "Description": "application of appropriate measures to ensure the maintenance of network and information system security in crisis situations.", + "Checks": [ + "iam_no_expired_server_certificates_stored", + "route53_domains_privacy_protection_enabled", + "backup_vaults_encrypted" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.3 Crisis management", + "Service": "generic" + } + ] + }, + { + "Id": "5.1.2.a", + "Description": "the cybersecurity practices of the suppliers and service providers, including their secure development procedures;", + "Checks": [ + "codebuild_report_group_export_encrypted", + "codebuild_project_s3_logs_encrypted", + "codebuild_project_source_repo_url_no_sensitive_credentials", + "cloudfront_distributions_origin_traffic_encrypted", + "bedrock_model_invocation_logs_encryption_enabled" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "5.1.4.f", + "Description": "an obligation on suppliers and service providers to handle vulnerabilities that present a risk to the security of the network and information systems of the relevant entities;", + "Checks": [ + "guardduty_no_high_severity_findings", + "inspector2_active_findings_exist" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "5.1.7.b", + "Description": "review incidents related to ICT products and ICT services from suppliers and service providers;", + "Checks": [ + "ssmincidents_enabled_with_plans", + "iam_support_role_created", + "account_security_contact_information_is_registered", + "account_maintain_current_contact_details" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "5.1.7.d", + "Description": "analyse the risks presented by changes related to ICT products and ICT services from suppliers and service providers and, where appropriate, take mitigating measures in a timely manner.", + "Checks": [ + "guardduty_no_high_severity_findings", + "inspector2_active_findings_exist" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "6.1.2.b", + "Description": "requirements regarding security updates throughout the entire lifetime of the ICT services or ICT products, or replacement after the end of the support period;", + "Checks": [ + "elasticbeanstalk_environment_managed_updates_enabled", + "opensearch_service_domains_updated_to_the_latest_service_software_version" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.1 Security in acquisition of ICT services or ICT products", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.1", + "Description": "Before developing a network and information system, including software, the relevant entities shall lay down rules for the secure development of network and information systems and apply them when developing network and information systems in-house, or when outsourcing the development of network and information systems. The rules shall cover all development phases, including specification, design, development, implementation and testing.", + "Checks": [ + "glue_development_endpoints_cloudwatch_logs_encryption_enabled", + "glue_development_endpoints_job_bookmark_encryption_enabled", + "glue_development_endpoints_s3_encryption_enabled", + "sagemaker_models_network_isolation_enabled", + "ecs_task_definitions_host_networking_mode_users", + "eks_cluster_network_policy_enabled", + "networkfirewall_deletion_protection", + "networkfirewall_in_all_vpc", + "networkfirewall_policy_default_action_fragmented_packets", + "networkfirewall_policy_default_action_full_packets" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.2.a", + "Description": "carry out an analysis of security requirements at the specification and design phases of any development or acquisition project undertaken by the relevant entities or on behalf of those entities;", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.2.b", + "Description": "apply principles for engineering secure systems and secure coding principles to any information system development activities such as promoting cybersecurity-by-design, zero-trust architectures;", + "Checks": [ + "codebuild_report_group_export_encrypted", + "codebuild_project_logging_enabled", + "codebuild_project_no_secrets_in_variables", + "codebuild_project_older_90_days", + "codebuild_project_s3_logs_encrypted", + "codebuild_project_source_repo_url_no_sensitive_credentials", + "codebuild_project_user_controlled_buildspec" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.2.c", + "Description": "lay down security requirements regarding development environments;", + "Checks": [ + "codebuild_project_no_secrets_in_variables", + "codebuild_project_s3_logs_encrypted", + "codebuild_report_group_export_encrypted", + "codebuild_project_source_repo_url_no_sensitive_credentials", + "glue_development_endpoints_job_bookmark_encryption_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.4", + "Description": "The relevant entities shall review and, where necessary, update their secure development rules at planned intervals.", + "Checks": [ + "secretsmanager_secret_rotated_periodically", + "iam_rotate_access_key_90_days" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "generic" + } + ] + }, + { + "Id": "6.4.1", + "Description": "The relevant entities shall apply change management procedures to control changes of network and information systems. Where applicable, the procedures shall be consistent with the relevant entities general policies concerning change management.", + "Checks": [ + "cloudwatch_changes_to_network_route_tables_alarm_configured", + "cloudwatch_changes_to_network_acls_alarm_configured", + "cloudwatch_changes_to_network_gateways_alarm_configured", + "cloudwatch_changes_to_vpcs_alarm_configured" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.4 Change management, repairs and maintenance", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "6.6.1.a", + "Description": "security patches are applied within a reasonable time after they become available;", + "Checks": [ + "ssm_managed_compliant_patching", + "memorydb_cluster_auto_minor_version_upgrades", + "elasticbeanstalk_environment_managed_updates_enabled", + "elasticache_redis_cluster_auto_minor_version_upgrades", + "glue_development_endpoints_job_bookmark_encryption_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.6 Security patch management", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.b", + "Description": "determine and apply controls to protect the relevant entities internal network domains from unauthorised access;", + "Checks": [ + "networkfirewall_deletion_protection", + "networkfirewall_in_all_vpc", + "networkfirewall_logging_enabled", + "networkfirewall_multi_az", + "networkfirewall_policy_default_action_fragmented_packets", + "networkfirewall_policy_default_action_full_packets", + "networkfirewall_policy_rule_group_associated" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "networkfirewall" + } + ] + }, + { + "Id": "6.7.2.e", + "Description": "not use systems used for administration of the security policy implementation for other purposes;", + "Checks": [ + "iam_inline_policy_no_administrative_privileges", + "iam_avoid_root_usage" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "iam" + } + ] + }, + { + "Id": "6.7.2.g", + "Description": "where appropriate, exclusively allow access to the relevant entities network and information systems by devices authorised by those entities;", + "Checks": [ + "ec2_instance_port_cassandra_exposed_to_internet", + "ec2_instance_port_cifs_exposed_to_internet", + "ec2_instance_port_elasticsearch_kibana_exposed_to_internet", + "ec2_instance_port_ftp_exposed_to_internet", + "ec2_instance_port_kafka_exposed_to_internet", + "ec2_instance_port_kerberos_exposed_to_internet", + "ec2_instance_port_ldap_exposed_to_internet", + "ec2_instance_port_memcached_exposed_to_internet", + "ec2_instance_port_mongodb_exposed_to_internet", + "ec2_instance_port_mysql_exposed_to_internet", + "ec2_instance_port_oracle_exposed_to_internet", + "ec2_instance_port_postgresql_exposed_to_internet", + "ec2_instance_port_rdp_exposed_to_internet", + "ec2_instance_port_redis_exposed_to_internet", + "ec2_instance_port_sqlserver_exposed_to_internet", + "ec2_instance_port_ssh_exposed_to_internet", + "ec2_instance_port_telnet_exposed_to_internet", + "ec2_networkacl_allow_ingress_tcp_port_22", + "ec2_networkacl_allow_ingress_tcp_port_3389" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "ec2" + } + ] + }, + { + "Id": "6.7.2.i", + "Description": "establish communication between distinct systems only through trusted channels that are isolated using logical, cryptographic or physical separation from other communication channels and provide assured identification of their end points and protection of the channel data from modification or disclosure;", + "Checks": [ + "kafka_cluster_in_transit_encryption_enabled", + "kafka_connector_in_transit_encryption_enabled", + "dynamodb_accelerator_cluster_in_transit_encryption_enabled", + "redshift_cluster_in_transit_encryption_enabled", + "transfer_server_in_transit_encryption_enabled", + "elbv2_nlb_tls_termination_enabled", + "kafka_cluster_mutual_tls_authentication_enabled", + "autoscaling_group_launch_configuration_requires_imdsv2", + "ec2_instance_account_imdsv2_enabled", + "ec2_instance_imdsv2_enabled", + "ec2_launch_template_imdsv2_required" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.l", + "Description": "apply best practices for the security of the DNS, and for Internet routing security and routing hygiene of traffic originating from and destined to the network.", + "Checks": [ + "route53_domains_privacy_protection_enabled", + "route53_dangling_ip_subdomain_takeover", + "elbv2_nlb_tls_termination_enabled", + "kafka_cluster_mutual_tls_authentication_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.8.2.a", + "Description": "consider the functional, logical and physical relationship, including location, between trustworthy systems and services;", + "Checks": [ + "iam_role_cross_service_confused_deputy_prevention", + "vpc_endpoint_services_allowed_principals_trust_boundaries", + "vpc_endpoint_connections_trust_boundaries" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.8 Network segmentation", + "Service": "generic" + } + ] + }, + { + "Id": "6.9.2", + "Description": "For that purpose, the relevant entities shall in particular implement measures that detect or prevent the use of malicious or unauthorised software. The relevant entities shall, where appropriate, ensure that their network and information systems are equipped with detection and response software, which is updated regularly in accordance with the risk assessment carried out pursuant to point 2.1 and the contractual agreements with the providers.", + "Checks": [ + "cloudtrail_threat_detection_privilege_escalation", + "cloudtrail_threat_detection_enumeration", + "cloudtrail_threat_detection_llm_jacking" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.9 Protection against malicious and unauthorised software", + "Service": "cloudtrail" + } + ] + }, + { + "Id": "7.2.b", + "Description": "the methods for monitoring, measurement, analysis and evaluation, as applicable, to ensure valid results;", + "Checks": [ + "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled", + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled", + "cloudwatch_log_metric_filter_authentication_failures", + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk", + "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_root_usage" + ], + "Attributes": [ + { + "Section": "7 POLICIES AND PROCEDURES TO ASSESS THE EFFECTIVENESS OF CYBERSECURITY RISK-MANAGEMENT MEASURES (ARTICLE 21(2), POINT (F), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "7.2 The policy and procedures referred to in point 7.1. shall take into account results of the risk assessment pursuant to point 2.1. and past significant incidents. The relevant entities shall determine:", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "7.2.d", + "Description": "who is responsible for monitoring and measuring the effectiveness of the cybersecurity risk-management measures;", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "7 POLICIES AND PROCEDURES TO ASSESS THE EFFECTIVENESS OF CYBERSECURITY RISK-MANAGEMENT MEASURES (ARTICLE 21(2), POINT (F), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "7.2 The policy and procedures referred to in point 7.1. shall take into account results of the risk assessment pursuant to point 2.1. and past significant incidents. The relevant entities shall determine:", + "Service": "iam" + } + ] + }, + { + "Id": "7.2.e", + "Description": "when the results from monitoring and measurement are to be analysed and evaluated;", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "7 POLICIES AND PROCEDURES TO ASSESS THE EFFECTIVENESS OF CYBERSECURITY RISK-MANAGEMENT MEASURES (ARTICLE 21(2), POINT (F), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "7.2 The policy and procedures referred to in point 7.1. shall take into account results of the risk assessment pursuant to point 2.1. and past significant incidents. The relevant entities shall determine:", + "Service": "iam" + } + ] + }, + { + "Id": "7.2.f", + "Description": "who has to analyse and evaluate these results.", + "Checks": [ + "iam_securityaudit_role_created" + ], + "Attributes": [ + { + "Section": "7 POLICIES AND PROCEDURES TO ASSESS THE EFFECTIVENESS OF CYBERSECURITY RISK-MANAGEMENT MEASURES (ARTICLE 21(2), POINT (F), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "7.2 The policy and procedures referred to in point 7.1. shall take into account results of the risk assessment pursuant to point 2.1. and past significant incidents. The relevant entities shall determine:", + "Service": "iam" + } + ] + }, + { + "Id": "9.2.a", + "Description": "in accordance with the relevant entities classification of assets, the type, strength and quality of the cryptographic measures required to protect the relevant entities assets, including data at rest and data in transit;", + "Checks": [ + "apigateway_restapi_cache_encrypted", + "athena_workgroup_encryption", + "backup_recovery_point_encrypted", + "cloudtrail_kms_encryption_enabled", + "codebuild_project_s3_logs_encrypted", + "codebuild_report_group_export_encrypted", + "dynamodb_accelerator_cluster_encryption_enabled", + "dms_endpoint_redis_in_transit_encryption_enabled", + "dynamodb_accelerator_cluster_in_transit_encryption_enabled", + "elasticache_redis_cluster_in_transit_encryption_enabled", + "kafka_connector_in_transit_encryption_enabled", + "redshift_cluster_in_transit_encryption_enabled", + "transfer_server_in_transit_encryption_enabled" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c", + "Description": "the relevant entities approach to key management, including, where appropriate, methods for the following:", + "Checks": [ + "iam_rotate_access_key_90_days", + "secretsmanager_secret_rotated_periodically", + "kms_key_not_publicly_accessible", + "iam_no_root_access_key", + "iam_user_no_setup_initial_access_key", + "iam_user_two_active_access_key" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.i", + "Description": "generating different keys for cryptographic systems and applications;", + "Checks": [ + "acm_certificates_with_secure_key_algorithms" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "acm" + } + ] + }, + { + "Id": "9.2.c.ii", + "Description": "issuing and obtaining public key certificates;", + "Checks": [ + "acm_certificates_with_secure_key_algorithms", + "acm_certificates_transparency_logs_enabled", + "route53_domains_privacy_protection_enabled", + "iam_no_expired_server_certificates_stored" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.iii", + "Description": "distributing keys to intended entities, including how to activate keys when received;", + "Checks": [ + "iam_user_no_setup_initial_access_key" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "iam" + } + ] + }, + { + "Id": "9.2.c.iv", + "Description": "storing keys, including how authorised users obtain access to keys;", + "Checks": [ + "secretsmanager_automatic_rotation_enabled", + "secretsmanager_not_publicly_accessible", + "secretsmanager_secret_rotated_periodically", + "secretsmanager_secret_unused" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "secretsmanager" + } + ] + }, + { + "Id": "9.2.c.v", + "Description": "changing or updating keys, including rules on when and how to change keys;", + "Checks": [ + "iam_password_policy_expires_passwords_within_90_days_or_less", + "iam_password_policy_lowercase", + "iam_password_policy_minimum_length_14", + "iam_password_policy_number", + "iam_password_policy_reuse_24", + "iam_password_policy_symbol", + "iam_password_policy_uppercase" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "iam" + } + ] + }, + { + "Id": "9.2.c.vi", + "Description": "backing up or archiving keys;", + "Checks": [ + "backup_vaults_encrypted" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "backup" + } + ] + }, + { + "Id": "9.2.c.vii", + "Description": "logging and auditing of key management-related activities;", + "Checks": [ + "cloudwatch_log_metric_filter_root_usage", + "cloudwatch_log_metric_filter_sign_in_without_mfa" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "9.2.c.xii", + "Description": "setting activation and deactivation dates for keys ensuring that the keys can only be used for the specified period of time according to the organization's rules on key management.", + "Checks": [ + "iam_rotate_access_key_90_days" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "iam" + } + ] + }, + { + "Id": "11.1.1", + "Description": "For the purpose of Article 21(2), point (i) of Directive (EU) 2022/2555, the relevant entities shall establish, document and implement logical and physical access control policies for the access to their network and information systems, based on business requirements as well as network and information system security requirements.", + "Checks": [ + "accessanalyzer_enabled", + "apigateway_restapi_client_certificate_enabled", + "cloudtrail_logs_s3_bucket_access_logging_enabled", + "cognito_identity_pool_guest_access_disabled", + "ec2_ebs_snapshot_account_block_public_access", + "ec2_instance_profile_attached", + "ecs_task_definitions_containers_readonly_access", + "efs_access_point_enforce_root_directory", + "efs_access_point_enforce_user_identity", + "efs_not_publicly_accessible" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.1 Access control policy", + "Service": "generic" + } + ] + }, + { + "Id": "11.1.2.c", + "Description": "ensure that access is only granted to users that have been adequately authenticated.", + "Checks": [ + "apigatewayv2_api_access_logging_enabled", + "cognito_identity_pool_guest_access_disabled", + "iam_user_mfa_enabled_console_access", + "iam_administrator_access_with_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.1 Access control policy", + "Service": "generic" + } + ] + }, + { + "Id": "11.2.1", + "Description": "The relevant entities shall provide, modify, remove and document access rights to network and information systems in accordance with the access control policy referred to in point 11.1.", + "Checks": [ + "accessanalyzer_enabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "accessanalyzer" + } + ] + }, + { + "Id": "11.2.2.a", + "Description": "assign and revoke access rights based on the principles of need-to-know, least privilege and separation of duties;", + "Checks": [ + "iam_policy_attached_only_to_group_or_roles", + "iam_policy_allows_privilege_escalation", + "iam_policy_no_full_access_to_cloudtrail", + "iam_policy_no_full_access_to_kms" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "iam" + } + ] + }, + { + "Id": "11.2.2.d", + "Description": "ensure that access rights appropriately address third-party access, such as visitors, suppliers and service providers, in particular by limiting access rights in scope and in duration;", + "Checks": [ + "apigateway_restapi_client_certificate_enabled", + "cognito_identity_pool_guest_access_disabled", + "ec2_ebs_snapshot_account_block_public_access", + "ec2_instance_profile_attached", + "ecs_task_definitions_containers_readonly_access", + "efs_access_point_enforce_root_directory" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "generic" + } + ] + }, + { + "Id": "11.2.2.e", + "Description": "maintain a register of access rights granted;", + "Checks": [ + "accessanalyzer_enabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "accessanalyzer" + } + ] + }, + { + "Id": "11.2.2.f", + "Description": "apply logging to the management of access rights.", + "Checks": [ + "apigatewayv2_api_access_logging_enabled", + "cloudtrail_logs_s3_bucket_access_logging_enabled", + "s3_bucket_server_access_logging_enabled", + "wafv2_webacl_logging_enabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "generic" + } + ] + }, + { + "Id": "11.3.1", + "Description": "The relevant entities shall maintain policies for management of privileged accounts and system administration accounts as part of the access control policy referred to in point 11.1.", + "Checks": [ + "iam_role_administratoraccess_policy" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "iam" + } + ] + }, + { + "Id": "11.3.2.a", + "Description": "establish strong identification, authentication such as multi-factor authentication, and authorisation procedures for privileged accounts and system administration accounts;", + "Checks": [ + "iam_user_mfa_enabled_console_access", + "iam_root_mfa_enabled", + "iam_administrator_access_with_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "iam" + } + ] + }, + { + "Id": "11.3.2.b", + "Description": "set up specific accounts to be used for system administration operations exclusively, such as installation, configuration, management or maintenance;", + "Checks": [ + "iam_avoid_root_usage" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "iam" + } + ] + }, + { + "Id": "11.3.2.c", + "Description": "individualise and restrict system administration privileges to the highest extent possible,", + "Checks": [ + "iam_avoid_root_usage", + "iam_inline_policy_no_administrative_privileges" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "iam" + } + ] + }, + { + "Id": "11.3.2.d", + "Description": "provide that system administration accounts are only used to connect to system administration systems.", + "Checks": [ + "iam_user_console_access_unused" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "iam" + } + ] + }, + { + "Id": "11.4.2.a", + "Description": "only use system administration systems for system administration purposes, and not for any other operations;", + "Checks": [ + "iam_avoid_root_usage" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.4 Administration systems", + "Service": "iam" + } + ] + }, + { + "Id": "11.4.2.b", + "Description": "separate logically such systems from application software not used for system administrative purposes,", + "Checks": [ + "iam_inline_policy_no_administrative_privileges" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.4 Administration systems", + "Service": "iam" + } + ] + }, + { + "Id": "11.4.2.c", + "Description": "protect access to system administration systems through authentication and encryption.", + "Checks": [ + "dms_endpoint_mongodb_authentication_enabled", + "iam_user_mfa_enabled_console_access", + "kafka_cluster_mutual_tls_authentication_enabled", + "neptune_cluster_iam_authentication_enabled", + "opensearch_service_domains_use_cognito_authentication_for_kibana", + "rds_cluster_iam_authentication_enabled", + "rds_instance_iam_authentication_enabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.4 Administration systems", + "Service": "generic" + } + ] + }, + { + "Id": "11.5.2.a", + "Description": "set up unique identities for network and information systems and their users;", + "Checks": [ + "fsx_file_system_copy_tags_to_backups_enabled", + "fsx_file_system_copy_tags_to_volumes_enabled", + "neptune_cluster_copy_tags_to_snapshots", + "organizations_tags_policies_enabled_and_attached", + "rds_cluster_copy_tags_to_snapshots", + "rds_instance_copy_tags_to_snapshots" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.5 Identification", + "Service": "generic" + } + ] + }, + { + "Id": "11.5.2.d", + "Description": "apply logging to the management of identities.", + "Checks": [ + "cloudwatch_log_metric_filter_aws_organizations_changes", + "cloudwatch_log_metric_filter_policy_changes", + "cloudwatch_log_metric_filter_security_group_changes" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.5 Identification", + "Service": "cloudwatch" + } + ] + }, + { + "Id": "11.5.4", + "Description": "The relevant entities shall regularly review the identities for network and information systems and their users and, if no longer needed, deactivate them without delay.", + "Checks": [ + "iam_user_accesskey_unused", + "iam_user_console_access_unused" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.5 Identification", + "Service": "iam" + } + ] + }, + { + "Id": "11.6.1", + "Description": "The relevant entities shall implement secure authentication procedures and technologies based on access restrictions and the policy on access control.", + "Checks": [ + "cognito_user_pool_mfa_enabled", + "iam_root_hardware_mfa_enabled", + "iam_root_mfa_enabled", + "iam_user_mfa_enabled_console_access" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "generic" + } + ] + }, + { + "Id": "11.6.2.a", + "Description": "ensure the strength of authentication is appropriate to the classification of the asset to be accessed;", + "Checks": [ + "cognito_user_pool_password_policy_lowercase", + "cognito_user_pool_password_policy_minimum_length_14", + "cognito_user_pool_password_policy_number", + "cognito_user_pool_password_policy_symbol", + "cognito_user_pool_password_policy_uppercase", + "iam_password_policy_expires_passwords_within_90_days_or_less", + "iam_password_policy_lowercase" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "generic" + } + ] + }, + { + "Id": "11.6.2.c", + "Description": "require the change of authentication credentials initially, at predefined intervals and upon suspicion that the credentials were compromised;", + "Checks": [ + "secretsmanager_secret_rotated_periodically", + "iam_rotate_access_key_90_days", + "kms_cmk_rotation_enabled", + "secretsmanager_automatic_rotation_enabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "generic" + } + ] + }, + { + "Id": "11.6.2.d", + "Description": "require the reset of authentication credentials and the blocking of users after a predefined number of unsuccessful log-in attempts;", + "Checks": [ + "cognito_user_pool_blocks_compromised_credentials_sign_in_attempts", + "cognito_user_pool_blocks_potential_malicious_sign_in_attempts" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "cognito" + } + ] + }, + { + "Id": "11.6.2.e", + "Description": "terminate inactive sessions after a predefined period of inactivity; and", + "Checks": [ + "appstream_fleet_session_idle_disconnect_timeout", + "appstream_fleet_maximum_session_duration", + "appstream_fleet_session_disconnect_timeout" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "appstream" + } + ] + }, + { + "Id": "11.7.2", + "Description": "The relevant entities shall ensure that the strength of authentication is appropriate for the classification of the asset to be accessed.", + "Checks": [ + "cloudtrail_bucket_requires_mfa_delete", + "cloudwatch_log_metric_filter_sign_in_without_mfa", + "cognito_user_pool_mfa_enabled", + "directoryservice_supported_mfa_radius_enabled", + "iam_administrator_access_with_mfa", + "iam_root_hardware_mfa_enabled", + "iam_root_mfa_enabled", + "iam_user_hardware_mfa_enabled", + "iam_user_mfa_enabled_console_access", + "s3_bucket_no_mfa_delete" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.7 Multi-factor authentication", + "Service": "generic" + } + ] + }, + { + "Id": "12.1.2.c", + "Description": "align the availability requirements of the assets with the delivery and recovery objectives set out in their business continuity and disaster recovery plans.", + "Checks": [ + "backup_vaults_exist", + "backup_plans_exist", + "dynamodb_table_protected_by_backup_plan", + "ec2_ebs_volume_protected_by_backup_plan", + "eks_control_plane_logging_all_types_enabled", + "rds_cluster_protected_by_backup_plan", + "rds_instance_protected_by_backup_plan", + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.1 Asset classification", + "Service": "generic" + } + ] + }, + { + "Id": "12.2.2.a", + "Description": "cover the entire life cycle of the assets, including acquisition, use, storage, transportation and disposal;", + "Checks": [ + "dlm_ebs_snapshot_lifecycle_policy_exists", + "ecr_repositories_lifecycle_policy_enabled", + "s3_bucket_lifecycle_enabled" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "generic" + } + ] + }, + { + "Id": "12.2.2.b", + "Description": "provide rules on the safe use, safe storage, safe transport, and the irretrievable deletion and destruction of the assets;", + "Checks": [ + "backup_vaults_exist", + "backup_plans_exist", + "dynamodb_table_protected_by_backup_plan", + "ec2_ebs_volume_protected_by_backup_plan", + "eks_control_plane_logging_all_types_enabled", + "rds_cluster_protected_by_backup_plan", + "rds_instance_protected_by_backup_plan", + "ssmincidents_enabled_with_plans" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "generic" + } + ] + }, + { + "Id": "12.2.2.c", + "Description": "provide that the transfer shall take place in a secure manner, in accordance with the type of asset to be transferred.", + "Checks": [ + "transfer_server_in_transit_encryption_enabled" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "transfer" + } + ] + } + ] +} From f254a4bc0dba956032eb2e95c70d53b725813757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Tue, 27 May 2025 09:52:50 +0200 Subject: [PATCH 15/24] feat(app): split SDK App service calls (#7778) --- docs/getting-started/requirements.md | 3 + .../app_function_access_keys_configured.py | 25 ++++---- ...p_function_application_insights_enabled.py | 39 ++++++------ .../app_function_latest_runtime_version.py | 31 ++++++---- .../azure/services/app/app_service.py | 61 ++++++++++++------- 5 files changed, 95 insertions(+), 64 deletions(-) diff --git a/docs/getting-started/requirements.md b/docs/getting-started/requirements.md index bb2452715e..ff506506e6 100644 --- a/docs/getting-started/requirements.md +++ b/docs/getting-started/requirements.md @@ -81,6 +81,9 @@ Prowler for Azure needs two types of permission scopes to be set: To assign the permissions, follow the instructions in the [Microsoft Entra ID permissions](../tutorials/azure/create-prowler-service-principal.md#assigning-the-proper-permissions) section and the [Azure subscriptions permissions](../tutorials/azure/subscriptions.md#assign-the-appropriate-permissions-to-the-identity-that-is-going-to-be-assumed-by-prowler) section, respectively. +???+ warning + Some permissions in `ProwlerRole` are considered **write** permissions, so if you have a `ReadOnly` lock attached to some resources you may get an error and will not get a finding for that check. + #### Checks that require ProwlerRole The following checks require the `ProwlerRole` permissions to be executed, if you want to run them, make sure you have assigned the role to the identity that is going to be assumed by Prowler: diff --git a/prowler/providers/azure/services/app/app_function_access_keys_configured/app_function_access_keys_configured.py b/prowler/providers/azure/services/app/app_function_access_keys_configured/app_function_access_keys_configured.py index e942aabc6f..4c1fb89756 100644 --- a/prowler/providers/azure/services/app/app_function_access_keys_configured/app_function_access_keys_configured.py +++ b/prowler/providers/azure/services/app/app_function_access_keys_configured/app_function_access_keys_configured.py @@ -11,19 +11,20 @@ class app_function_access_keys_configured(Check): functions, ) in app_client.functions.items(): for function in functions.values(): - report = Check_Report_Azure(metadata=self.metadata(), resource=function) - report.subscription = subscription_name - report.status = "FAIL" - report.status_extended = ( - f"Function {function.name} does not have function keys configured." - ) - - if len(function.function_keys) > 0: - report.status = "PASS" - report.status_extended = ( - f"Function {function.name} has function keys configured." + if function.function_keys is not None: + report = Check_Report_Azure( + metadata=self.metadata(), resource=function ) + report.subscription = subscription_name + report.status = "FAIL" + report.status_extended = f"Function {function.name} does not have function keys configured." - findings.append(report) + if len(function.function_keys) > 0: + report.status = "PASS" + report.status_extended = ( + f"Function {function.name} has function keys configured." + ) + + findings.append(report) return findings diff --git a/prowler/providers/azure/services/app/app_function_application_insights_enabled/app_function_application_insights_enabled.py b/prowler/providers/azure/services/app/app_function_application_insights_enabled/app_function_application_insights_enabled.py index 06ce41a2b0..3c5102dbbb 100644 --- a/prowler/providers/azure/services/app/app_function_application_insights_enabled/app_function_application_insights_enabled.py +++ b/prowler/providers/azure/services/app/app_function_application_insights_enabled/app_function_application_insights_enabled.py @@ -14,26 +14,29 @@ class app_function_application_insights_enabled(Check): functions, ) in app_client.functions.items(): for function in functions.values(): - report = Check_Report_Azure(metadata=self.metadata(), resource=function) - report.subscription = subscription_name - report.status = "FAIL" - report.status_extended = ( - f"Function {function.name} is not using Application Insights." - ) - - if function.enviroment_variables.get( - "APPINSIGHTS_INSTRUMENTATIONKEY", "" - ) in [ - component.instrumentation_key - for component in appinsights_client.components[ - subscription_name - ].values() - ]: - report.status = "PASS" + if function.enviroment_variables is not None: + report = Check_Report_Azure( + metadata=self.metadata(), resource=function + ) + report.subscription = subscription_name + report.status = "FAIL" report.status_extended = ( - f"Function {function.name} is using Application Insights." + f"Function {function.name} is not using Application Insights." ) - findings.append(report) + if function.enviroment_variables.get( + "APPINSIGHTS_INSTRUMENTATIONKEY", "" + ) in [ + component.instrumentation_key + for component in appinsights_client.components[ + subscription_name + ].values() + ]: + report.status = "PASS" + report.status_extended = ( + f"Function {function.name} is using Application Insights." + ) + + findings.append(report) return findings diff --git a/prowler/providers/azure/services/app/app_function_latest_runtime_version/app_function_latest_runtime_version.py b/prowler/providers/azure/services/app/app_function_latest_runtime_version/app_function_latest_runtime_version.py index 180434ec21..3cd8d349b4 100644 --- a/prowler/providers/azure/services/app/app_function_latest_runtime_version/app_function_latest_runtime_version.py +++ b/prowler/providers/azure/services/app/app_function_latest_runtime_version/app_function_latest_runtime_version.py @@ -11,20 +11,25 @@ class app_function_latest_runtime_version(Check): functions, ) in app_client.functions.items(): for function in functions.values(): - report = Check_Report_Azure(metadata=self.metadata(), resource=function) - report.subscription = subscription_name - report.status = "PASS" - report.status_extended = ( - f"Function {function.name} is using the latest runtime." - ) + if function.enviroment_variables is not None: + report = Check_Report_Azure( + metadata=self.metadata(), resource=function + ) + report.subscription = subscription_name + report.status = "PASS" + report.status_extended = ( + f"Function {function.name} is using the latest runtime." + ) - if ( - function.enviroment_variables.get("FUNCTIONS_EXTENSION_VERSION", "") - != "~4" - ): - report.status = "FAIL" - report.status_extended = f"Function {function.name} is not using the latest runtime. The current runtime is '{function.enviroment_variables.get('FUNCTIONS_EXTENSION_VERSION', '')}' and should be '~4'." + if ( + function.enviroment_variables.get( + "FUNCTIONS_EXTENSION_VERSION", "" + ) + != "~4" + ): + report.status = "FAIL" + report.status_extended = f"Function {function.name} is not using the latest runtime. The current runtime is '{function.enviroment_variables.get('FUNCTIONS_EXTENSION_VERSION', '')}' and should be '~4'." - findings.append(report) + findings.append(report) return findings diff --git a/prowler/providers/azure/services/app/app_service.py b/prowler/providers/azure/services/app/app_service.py index fc2ee5cf13..584555e2ad 100644 --- a/prowler/providers/azure/services/app/app_service.py +++ b/prowler/providers/azure/services/app/app_service.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Dict, List +from typing import Dict, List, Optional from azure.mgmt.web import WebSiteManagementClient @@ -124,14 +124,16 @@ class App(AzureService): # Filter function apps if getattr(function, "kind", "").startswith("functionapp"): # List host keys - host_keys = client.web_apps.list_host_keys( - resource_group_name=function.resource_group, - name=function.name, - ) # Need to add role 'Logic App Contributor' to the service principal to get the host keys or add to the reader role the permission 'Microsoft.Web/sites/host/listkeys' + host_keys = self._get_function_host_keys( + subscription_name, function.resource_group, function.name + ) + if host_keys is not None: + function_keys = getattr(host_keys, "function_keys", {}) + else: + function_keys = None - function_config = client.web_apps.get_configuration( - resource_group_name=function.resource_group, - name=function.name, + function_config = self._get_function_config( + subscription_name, function.resource_group, function.name ) functions[subscription_name].update( @@ -141,16 +143,9 @@ class App(AzureService): name=function.name, location=function.location, kind=function.kind, - function_keys=getattr( - host_keys, "function_keys", {} - ), + function_keys=function_keys, enviroment_variables=getattr( - client.web_apps.list_application_settings( - resource_group_name=function.resource_group, - name=function.name, - ), - "properties", - {}, + function_config, "properties", None ), identity=getattr(function, "identity", None), public_access=( @@ -167,7 +162,7 @@ class App(AzureService): "", ), ftps_state=getattr( - function_config, "ftps_state", "" + function_config, "ftps_state", None ), ) } @@ -209,6 +204,30 @@ class App(AzureService): ) return monitor_diagnostics_settings + def _get_function_host_keys(self, subscription, resource_group, name): + try: + return self.clients[subscription].web_apps.list_host_keys( + resource_group_name=resource_group, + name=name, + ) + except Exception as error: + logger.error( + f"Error getting host keys for {name} in {resource_group}: {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + return None + + def _get_function_config(self, subscription, resource_group, name): + try: + return self.clients[subscription].web_apps.list_application_settings( + resource_group_name=resource_group, + name=name, + ) + except Exception as error: + logger.error( + f"Error getting configuration for {name} in {resource_group}: {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + return None + @dataclass class ManagedServiceIdentity: @@ -250,9 +269,9 @@ class FunctionApp: name: str location: str kind: str - function_keys: Dict[str, str] - enviroment_variables: Dict[str, str] + function_keys: Optional[Dict[str, str]] + enviroment_variables: Optional[Dict[str, str]] identity: ManagedServiceIdentity public_access: bool vnet_subnet_id: str - ftps_state: str + ftps_state: Optional[str] From ea97de7f43a2063476b49f7697bb6c7b51137c11 Mon Sep 17 00:00:00 2001 From: sumit-tft <70506234+sumit-tft@users.noreply.github.com> Date: Tue, 27 May 2025 14:21:08 +0530 Subject: [PATCH 16/24] fix(ui): updated to use the correct message when download report clicked (#7758) Co-authored-by: Pablo Lara --- ui/CHANGELOG.md | 1 + ui/actions/scans/scans.ts | 35 ++++-- ui/components/compliance/compliance-card.tsx | 17 ++- .../scans/table/scans/column-get-scans.tsx | 14 +-- .../scans/data-table-download-details.tsx | 34 ++++++ .../download-icon-button.tsx | 9 +- ui/lib/helper.ts | 100 ++++++++++++------ ui/styles/globals.css | 11 ++ ui/tailwind.config.js | 6 ++ ui/types/formSchemas.ts | 4 +- 10 files changed, 172 insertions(+), 59 deletions(-) create mode 100644 ui/components/scans/table/scans/data-table-download-details.tsx diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index e58655a05f..6ba9950320 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to the **Prowler UI** are documented in this file. - Improved `SnippetChip` component and show resource name in new findings table. [(#7813)](https://github.com/prowler-cloud/prowler/pull/7813) - Possibility to edit the organization name. [(#7829)](https://github.com/prowler-cloud/prowler/pull/7829) - Add `Provider UID` filter to scans page. [(#7820)](https://github.com/prowler-cloud/prowler/pull/7820) +- Download report behaviour updated to show feedback based on API response. [(#7758)](https://github.com/prowler-cloud/prowler/pull/7758) --- diff --git a/ui/actions/scans/scans.ts b/ui/actions/scans/scans.ts index 39e17a4b42..b3115ea0e9 100644 --- a/ui/actions/scans/scans.ts +++ b/ui/actions/scans/scans.ts @@ -236,10 +236,23 @@ export const getExportsZip = async (scanId: string) => { headers, }); + if (response.status === 202) { + const json = await response.json(); + const taskId = json?.data?.id; + const state = json?.data?.attributes?.state; + return { + pending: true, + state, + taskId, + }; + } + if (!response.ok) { const errorData = await response.json(); + throw new Error( - errorData?.errors?.[0]?.detail || "Failed to fetch report", + errorData?.errors?.detail || + "Unable to fetch scan report. Contact support if the issue continues.", ); } @@ -271,20 +284,28 @@ export const getComplianceCsv = async ( ); try { - const response = await fetch(url.toString(), { - headers, - }); + const response = await fetch(url.toString(), { headers }); + + if (response.status === 202) { + const json = await response.json(); + const taskId = json?.data?.id; + const state = json?.data?.attributes?.state; + return { + pending: true, + state, + taskId, + }; + } if (!response.ok) { const errorData = await response.json(); throw new Error( - errorData?.errors?.[0]?.detail || "Failed to fetch compliance report", + errorData?.errors?.detail || + "Unable to retrieve compliance report. Contact support if the issue continues.", ); } - // Get the blob data as an array buffer const arrayBuffer = await response.arrayBuffer(); - // Convert to base64 const base64 = Buffer.from(arrayBuffer).toString("base64"); return { diff --git a/ui/components/compliance/compliance-card.tsx b/ui/components/compliance/compliance-card.tsx index 56b6cec402..ff55421681 100644 --- a/ui/components/compliance/compliance-card.tsx +++ b/ui/components/compliance/compliance-card.tsx @@ -3,7 +3,7 @@ import { Card, CardBody, Progress } from "@nextui-org/react"; import Image from "next/image"; import { useSearchParams } from "next/navigation"; -import React from "react"; +import React, { useState } from "react"; import { DownloadIconButton, toast } from "@/components/ui"; import { downloadComplianceCsv } from "@/lib/helper"; @@ -31,6 +31,7 @@ export const ComplianceCard: React.FC = ({ }) => { const searchParams = useSearchParams(); const hasRegionFilter = searchParams.has("filter[region__in]"); + const [isDownloading, setIsDownloading] = useState(false); const formatTitle = (title: string) => { return title.split("-").join(" "); @@ -67,6 +68,15 @@ export const ComplianceCard: React.FC = ({ return "success"; }; + const handleDownload = async () => { + setIsDownloading(true); + try { + await downloadComplianceCsv(scanId, complianceId, toast); + } finally { + setIsDownloading(false); + } + }; + return ( @@ -104,11 +114,10 @@ export const ComplianceCard: React.FC = ({ - downloadComplianceCsv(scanId, complianceId, toast) - } + onDownload={handleDownload} textTooltip="Download compliance CSV report" isDisabled={hasRegionFilter} + isDownloading={isDownloading} /> {/* {getScanChange()} */}
diff --git a/ui/components/scans/table/scans/column-get-scans.tsx b/ui/components/scans/table/scans/column-get-scans.tsx index 9082618eb8..4d6796b6bc 100644 --- a/ui/components/scans/table/scans/column-get-scans.tsx +++ b/ui/components/scans/table/scans/column-get-scans.tsx @@ -5,15 +5,14 @@ import { ColumnDef } from "@tanstack/react-table"; import { useSearchParams } from "next/navigation"; import { InfoIcon } from "@/components/icons"; -import { DownloadIconButton, toast } from "@/components/ui"; import { DateWithTime, EntityInfoShort } from "@/components/ui/entities"; import { TriggerSheet } from "@/components/ui/sheet"; import { DataTableColumnHeader, StatusBadge } from "@/components/ui/table"; -import { downloadScanZip } from "@/lib/helper"; import { ProviderType, ScanProps } from "@/types"; import { LinkToFindingsFromScan } from "../../link-to-findings-from-scan"; import { TriggerIcon } from "../../trigger-icon"; +import { DataTableDownloadDetails } from "./data-table-download-details"; import { DataTableRowActions } from "./data-table-row-actions"; import { DataTableRowDetails } from "./data-table-row-details"; @@ -130,15 +129,10 @@ export const ColumnGetScans: ColumnDef[] = [
), cell: ({ row }) => { - const scanId = row.original.id; - const scanState = row.original.attributes?.state; - return ( - downloadScanZip(scanId, toast)} - isDisabled={scanState !== "completed"} - /> +
+ +
); }, }, diff --git a/ui/components/scans/table/scans/data-table-download-details.tsx b/ui/components/scans/table/scans/data-table-download-details.tsx new file mode 100644 index 0000000000..4579ef3c56 --- /dev/null +++ b/ui/components/scans/table/scans/data-table-download-details.tsx @@ -0,0 +1,34 @@ +import { Row } from "@tanstack/react-table"; +import { useState } from "react"; + +import { DownloadIconButton, useToast } from "@/components/ui"; +import { downloadScanZip } from "@/lib"; + +interface DataTableDownloadDetailsProps { + row: Row; +} + +export function DataTableDownloadDetails({ + row, +}: DataTableDownloadDetailsProps) { + const { toast } = useToast(); + const [isDownloading, setIsDownloading] = useState(false); + + const scanId = (row.original as { id: string }).id; + const scanState = (row.original as any).attributes?.state; + + const handleDownload = async () => { + setIsDownloading(true); + await downloadScanZip(scanId, toast); + setIsDownloading(false); + }; + + return ( + + ); +} diff --git a/ui/components/ui/download-icon-button/download-icon-button.tsx b/ui/components/ui/download-icon-button/download-icon-button.tsx index 364ae0fe39..e84ecfa568 100644 --- a/ui/components/ui/download-icon-button/download-icon-button.tsx +++ b/ui/components/ui/download-icon-button/download-icon-button.tsx @@ -11,6 +11,7 @@ interface DownloadIconButtonProps { ariaLabel?: string; isDisabled?: boolean; textTooltip?: string; + isDownloading?: boolean; } export const DownloadIconButton = ({ @@ -19,20 +20,24 @@ export const DownloadIconButton = ({ ariaLabel = "Download report", isDisabled, textTooltip = "Download report", + isDownloading = false, }: DownloadIconButtonProps) => { return (
onDownload(paramId)} className="p-0 text-default-500 hover:text-primary disabled:opacity-30" isIconOnly ariaLabel={ariaLabel} size="sm" > - +
diff --git a/ui/lib/helper.ts b/ui/lib/helper.ts index db664e2a18..7a13fb266f 100644 --- a/ui/lib/helper.ts +++ b/ui/lib/helper.ts @@ -61,14 +61,22 @@ export const downloadScanZip = async ( ) => { const result = await getExportsZip(scanId); - if (result?.success && result?.data) { + if (result?.pending) { + toast({ + title: "The report is still being generated", + description: "Please try again in a few minutes.", + }); + return; + } + + if (result?.success && result.data) { const binaryString = window.atob(result.data); const bytes = new Uint8Array(binaryString.length); for (let i = 0; i < binaryString.length; i++) { bytes[i] = binaryString.charCodeAt(i); } - const blob = new Blob([bytes], { type: "application/zip" }); + const blob = new Blob([bytes], { type: "application/zip" }); const url = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; @@ -82,11 +90,11 @@ export const downloadScanZip = async ( title: "Download Complete", description: "Your scan report has been downloaded successfully.", }); - } else if (result?.error) { + } else { toast({ variant: "destructive", title: "Download Failed", - description: result.error, + description: result?.error || "An unknown error occurred.", }); } }; @@ -95,37 +103,64 @@ export const downloadComplianceCsv = async ( scanId: string, complianceId: string, toast: ReturnType["toast"], -) => { +): Promise => { const result = await getComplianceCsv(scanId, complianceId); - if (result?.success && result?.data) { - const binaryString = window.atob(result.data); - const bytes = new Uint8Array(binaryString.length); - for (let i = 0; i < binaryString.length; i++) { - bytes[i] = binaryString.charCodeAt(i); - } - const blob = new Blob([bytes], { type: "text/csv" }); - - const url = window.URL.createObjectURL(blob); - const a = document.createElement("a"); - a.href = url; - a.download = result.filename; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - window.URL.revokeObjectURL(url); - + if (result?.pending) { toast({ - title: "Download Complete", - description: "The compliance report has been downloaded successfully.", + title: "The report is still being generated", + description: "Please try again in a few minutes.", }); - } else if (result?.error) { + return; + } + + if (result?.success && result.data) { + try { + const binaryString = window.atob(result.data); + const bytes = new Uint8Array(binaryString.length); + for (let i = 0; i < binaryString.length; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + + const blob = new Blob([bytes], { type: "text/csv" }); + const url = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = result.filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + + toast({ + title: "Download Complete", + description: "The compliance report has been downloaded successfully.", + }); + } catch (error) { + toast({ + variant: "destructive", + title: "Download Failed", + description: "An error occurred while processing the file.", + }); + } + return; + } + + if (result?.error) { toast({ variant: "destructive", title: "Download Failed", description: result.error, }); + return; } + + // Unexpected case + toast({ + variant: "destructive", + title: "Download Failed", + description: "Unexpected response. Please try again later.", + }); }; export const isGoogleOAuthEnabled = @@ -136,13 +171,12 @@ export const isGithubOAuthEnabled = !!process.env.SOCIAL_GITHUB_OAUTH_CLIENT_ID && !!process.env.SOCIAL_GITHUB_OAUTH_CLIENT_SECRET; -export async function checkTaskStatus( +export const checkTaskStatus = async ( taskId: string, -): Promise<{ completed: boolean; error?: string }> { - const MAX_RETRIES = 20; // Define the maximum number of attempts before stopping the polling - const RETRY_DELAY = 1000; // Delay time between each poll (in milliseconds) - - for (let attempt = 0; attempt < MAX_RETRIES; attempt++) { + maxRetries: number = 20, + retryDelay: number = 1500, +): Promise<{ completed: boolean; error?: string }> => { + for (let attempt = 0; attempt < maxRetries; attempt++) { const task = await getTask(taskId); if (task.error) { @@ -162,7 +196,7 @@ export async function checkTaskStatus( case "scheduled": case "executing": // Continue waiting if the task is still in progress - await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY)); + await new Promise((resolve) => setTimeout(resolve, retryDelay)); break; default: return { completed: false, error: "Unexpected task state" }; @@ -170,7 +204,7 @@ export async function checkTaskStatus( } return { completed: false, error: "Max retries exceeded" }; -} +}; export const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/ui/styles/globals.css b/ui/styles/globals.css index 3d8d40186d..f3b0a3e4ae 100644 --- a/ui/styles/globals.css +++ b/ui/styles/globals.css @@ -32,6 +32,7 @@ } @layer utilities { + /* Hide scrollbar */ .no-scrollbar { scrollbar-width: none; @@ -41,3 +42,13 @@ @apply mr-2 bg-background; } } + +@layer components { + + .animate-download-icon polyline, + .animate-download-icon line { + @apply animate-drop-arrow; + transform-box: fill-box; + transform-origin: center; + } +} \ No newline at end of file diff --git a/ui/tailwind.config.js b/ui/tailwind.config.js index 8245f1971f..664e360167 100644 --- a/ui/tailwind.config.js +++ b/ui/tailwind.config.js @@ -170,10 +170,16 @@ module.exports = { "50%": { left: "20%", width: "80%" }, "100%": { left: "100%", width: "100%" }, }, + dropArrow: { + '0%': { transform: 'translateY(-8px)', opacity: '0' }, + '50%': { opacity: '1' }, + '100%': { transform: 'translateY(0)', opacity: '1' }, + }, }, animation: { "collapsible-down": "collapsible-down 0.2s ease-out", "collapsible-up": "collapsible-up 0.2s ease-out", + "drop-arrow": "dropArrow 0.6s ease-out infinite", }, screens: { "3xl": "1920px", // Add breakpoint to optimize layouts for large screens. diff --git a/ui/types/formSchemas.ts b/ui/types/formSchemas.ts index 168e45e261..217cca4e11 100644 --- a/ui/types/formSchemas.ts +++ b/ui/types/formSchemas.ts @@ -142,9 +142,7 @@ export const addCredentialsFormSchema = (providerType: string) => .nonempty("Client Secret is required"), tenant_id: z.string().nonempty("Tenant ID is required"), user: z.string().nonempty("User is required"), - password: z - .string() - .nonempty("Password is required"), + password: z.string().nonempty("Password is required"), } : {}), }); From 3728430f8c0f32c65a39b0f08bd5a0c493c53171 Mon Sep 17 00:00:00 2001 From: Sergio Garcia Date: Tue, 27 May 2025 14:25:37 +0200 Subject: [PATCH 17/24] chore: update README (#7842) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Pedro Martín --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0fbf555e26..b33364e6bf 100644 --- a/README.md +++ b/README.md @@ -86,12 +86,12 @@ prowler dashboard | Provider | Checks | Services | [Compliance Frameworks](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/compliance/) | [Categories](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/misc/#categories) | |---|---|---|---|---| -| AWS | 564 | 82 | 35 | 10 | +| AWS | 567 | 82 | 36 | 10 | | GCP | 79 | 13 | 9 | 3 | -| Azure | 140 | 18 | 8 | 3 | +| Azure | 142 | 18 | 9 | 3 | | Kubernetes | 83 | 7 | 5 | 7 | -| GitHub | 3 | 2 | 1 | 0 | -| M365 | 44 | 2 | 2 | 0 | +| GitHub | 16 | 2 | 1 | 0 | +| M365 | 69 | 7 | 2 | 0 | | NHN (Unofficial) | 6 | 2 | 1 | 0 | > [!Note] From 9e8e3eb0e6cb5a4d7ffb107c570e039b5d85449f Mon Sep 17 00:00:00 2001 From: Hugo Pereira Brito <101209179+HugoPBrito@users.noreply.github.com> Date: Wed, 28 May 2025 08:52:03 +0200 Subject: [PATCH 18/24] fix(m365): update documentation (#7823) Co-authored-by: Sergio Garcia Co-authored-by: Daniel Barranquero --- README.md | 2 +- docs/getting-started/requirements.md | 63 +++--------------- docs/img/m365-credentials.png | Bin 355105 -> 122221 bytes .../microsoft365/getting-started-m365.md | 45 +++++++------ .../microsoft365/img/m365-credentials.png | Bin 355105 -> 122221 bytes 5 files changed, 34 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index b33364e6bf..1219983bdf 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ prowler dashboard | Azure | 142 | 18 | 9 | 3 | | Kubernetes | 83 | 7 | 5 | 7 | | GitHub | 16 | 2 | 1 | 0 | -| M365 | 69 | 7 | 2 | 0 | +| M365 | 69 | 7 | 2 | 2 | | NHN (Unofficial) | 6 | 2 | 1 | 0 | > [!Note] diff --git a/docs/getting-started/requirements.md b/docs/getting-started/requirements.md index ff506506e6..6e79f86bba 100644 --- a/docs/getting-started/requirements.md +++ b/docs/getting-started/requirements.md @@ -163,70 +163,24 @@ export AZURE_CLIENT_ID="XXXXXXXXX" export AZURE_CLIENT_SECRET="XXXXXXXXX" export AZURE_TENANT_ID="XXXXXXXXX" export M365_USER="your_email@example.com" -export M365_PASSWORD="6500780061006d0070006c006500700061007300730077006f0072006400" # replace this to yours +export M365_PASSWORD="examplepassword" ``` These two new environment variables are **required** to execute the PowerShell modules needed to retrieve information from M365 services. Prowler uses Service Principal authentication to access Microsoft Graph and user credentials to authenticate to Microsoft PowerShell modules. -- `M365_USER` should be your Microsoft account email using the default domain. This means it must look like `example@YourCompany.onmicrosoft.com`. +- `M365_USER` should be your Microsoft account email using the **assigned domain in the tenant**. This means it must look like `example@YourCompany.onmicrosoft.com` or `example@YourCompany.com`, but it must be the exact domain assigned to that user in the tenant. - To ensure that you are using the default domain you can see how to verify it [here](../tutorials/microsoft365/getting-started-m365.md#step-1-obtain-your-domain). + ???+ warning + Using a tenant domain other than the one assigned — even if it belongs to the same tenant — will cause Prowler to fail, as Microsoft authentication will not succeed. - If you don't have a user created with that domain, Prowler will not work as it will not be able to ensure both app an user belong to the same tenant. To proceed, you can either create a new user with that domain or modify the domain of an existing user. + Ensure you are using the right domain for the user you are trying to authenticate with. ![User Domains](../tutorials/microsoft365/img/user-domains.png) -- `M365_PASSWORD` must be an encrypted SecureString. To convert your password into a valid encrypted string, you need to use PowerShell. - - ???+ warning - Passwords encrypted using ConvertTo-SecureString can only be decrypted on the same OS/user context. If you generate an encrypted password on macOS or Linux (both UNIX), it should fail on Windows and vice versa. As Prowler Cloud runs on UNIX if you generate your password using Windows it won't work so you'll need to generate a new password using any UNIX distro (example above) - - If you are working from Windows and you will use your encrypted password in a different system (like for example executing Prowler in macOS or adding your password to Prowler Cloud), you will need to generate a "UNIX compatible" version of your encrypted password. This can be done using WSL which is so easy to install on Windows. - - === "UNIX" - - Open a PowerShell cmd with a [supported version](requirements.md#supported-powershell-versions) and then run the following command: - - ```console - $securePassword = ConvertTo-SecureString "examplepassword" -AsPlainText -Force - $encryptedPassword = $securePassword | ConvertFrom-SecureString - Write-Output $encryptedPassword - 6500780061006d0070006c006500700061007300730077006f0072006400 - ``` - - If everything is done correctly, you will see the encrypted string that you need to set as the `M365_PASSWORD` environment variable. - - === "Windows" - - - How to install WSL and PowerShell on it to generate that password (you can use a different distro but this one will work for sure): - - ```console - wsl --install -d Ubuntu-22.04 - ``` - - Then, open the Ubuntu terminal and run the following commands: - - ```console - sudo apt update && sudo apt install -y wget apt-transport-https software-properties-common - wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" - sudo dpkg -i packages-microsoft-prod.deb - sudo apt update - sudo apt install -y powershell - pwsh - ``` - - With this done you will see now that a prompt running PowerShell with the latest version is open so here you will be able to generate your encrypted password: - - ```console - $securePassword = ConvertTo-SecureString "examplepassword" -AsPlainText -Force - $encryptedPassword = $securePassword | ConvertFrom-SecureString - Write-Output $encryptedPassword - 6500780061006d0070006c006500700061007300730077006f0072006400 - ``` - - If everything is done correctly, you will see the encrypted string that you need to set as the `M365_PASSWORD` environment variable. +- `M365_PASSWORD` must be the user password. + ???+ note + Before we asked for a encrypted password, but now we ask for the user password directly. Prowler will now handle the password encryption for you. ### Interactive Browser authentication @@ -248,7 +202,6 @@ Prowler for M365 requires two types of permission scopes to be set (if you want - `Directory.Read.All`: Required for all services. - `Policy.Read.All`: Required for all services. - `User.Read` (IMPORTANT: this must be set as **delegated**): Required for the sign-in. - - `Sites.Read.All`: Required for SharePoint service. - `SharePointTenantSettings.Read.All`: Required for SharePoint service. - `AuditLog.Read.All`: Required for Entra service. diff --git a/docs/img/m365-credentials.png b/docs/img/m365-credentials.png index 9c06343ce2f23e3dde7a3b13dce072acb804c799..87191751a8d5187c5d6a4be97a01c04c073fe0ef 100644 GIT binary patch literal 122221 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 z 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%0A>tGJ;%8(F?4=Uu0o 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 literal 355105 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 z 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�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�o3P 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%0D)Q$o|0p1JoT>zn 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 z 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 Z=~SzbR=O1*I1czvQBL(@-h~@}{|h{@=7<0Q diff --git a/docs/tutorials/microsoft365/getting-started-m365.md b/docs/tutorials/microsoft365/getting-started-m365.md index bf9d6b0664..f94707d86b 100644 --- a/docs/tutorials/microsoft365/getting-started-m365.md +++ b/docs/tutorials/microsoft365/getting-started-m365.md @@ -4,9 +4,9 @@ Set up your M365 account to enable security scanning using Prowler Cloud/App. ## Requirements -To configure your M365 account, you’ll need: +To configure your M365 account, you'll need: -1. Obtain your `Default Domain` from the Entra ID portal. +1. Obtain a domain from the Entra ID portal. 2. Access Prowler Cloud/App and add a new cloud provider `Microsoft 365`. @@ -18,8 +18,6 @@ To configure your M365 account, you’ll need: 3.3 Assign the required roles to your user. - 3.4 Retrieve your encrypted password. - 4. Add the credentials to Prowler Cloud/App. ## Step 1: Obtain your Domain @@ -32,9 +30,7 @@ Go to the Entra ID portal, then you can search for `Domain` or go to Identity > ![Custom Domain Names](./img/custom-domain-names.png) -Once you are there just look for the `Default Domain` this should be something similar to `YourCompany.onmicrosoft.com`. To ensure that you are picking the correct domain just click on it and verify that the type is `Initial` and you can't delete it. - -![Search Default Domain](./img/search-default-domain.png) +Once you are there just select the domain you want to use. --- @@ -78,11 +74,11 @@ A Service Principal is required to grant Prowler the necessary privileges. ![New Registration](./img/new-registration.png) -4. Go to `Certificates & secrets` > `+ New client secret` +4. Go to `Certificates & secrets` > `Client secrets` > `+ New client secret` ![Certificate & Secrets nav](./img/certificates-and-secrets.png) -5. Fill in the required fields and click `Add`, then copy the generated value (that value will be `AZURE_CLIENT_SECRET`) +5. Fill in the required fields and click `Add`, then copy the generated `value` (that value will be `AZURE_CLIENT_SECRET`) ![New Client Secret](./img/new-client-secret.png) @@ -102,9 +98,9 @@ Assign the following Microsoft Graph permissions: - `Directory.Read.All`: Required for all services. - `Policy.Read.All`: Required for all services. -- `User.Read` (IMPORTANT: this is set as **delegated**): Required for the sign-in. -- `Sites.Read.All`: Required for SharePoint service. - `SharePointTenantSettings.Read.All`: Required for SharePoint service. +- `AuditLog.Read.All`: Required for Entra service. +- `User.Read` (IMPORTANT: this is set as **delegated**): Required for the sign-in. Follow these steps to assign the permissions: @@ -120,8 +116,8 @@ Follow these steps to assign the permissions: - `Directory.Read.All` - `Policy.Read.All` - - `Sites.Read.All` - `SharePointTenantSettings.Read.All` + - `AuditLog.Read.All`: Required for Entra service. ![Permission Screenshots](./img/directory-permission.png) @@ -174,25 +170,34 @@ Follow these steps to assign the role: --- -### Get your encrypted password - -For this step you will need to use PowerShell, here you will have to create your Encrypted Password based on the password of the User that you are going to use. For more information about how to generate this Password go [here](../../getting-started/requirements.md#service-principal-and-user-credentials-authentication-recommended) and follow the steps needed to obtain `M365_PASSWORD`. - ---- - ## Step 4: Add credentials to Prowler Cloud/App 1. Go to your App Registration overview and copy the `Client ID` and `Tenant ID` ![App Overview](./img/app-overview.png) +???+ warning + For Prowler Cloud encrypted password is still needed (when we update Prowler Cloud and regular password is accepted this warning will be deleted), so the password that you paste in the next step should be generated following this steps: + + - UNIX: Open a PowerShell cmd with a [supported version](../../getting-started/requirements.md#supported-powershell-versions) and then run the following command: + + ```console + $securePassword = ConvertTo-SecureString "examplepassword" -AsPlainText -Force + $encryptedPassword = $securePassword | ConvertFrom-SecureString + Write-Output $encryptedPassword + 6500780061006d0070006c006500700061007300730077006f0072006400 + ``` + + - Windows: Install WSL using `wsl --install -d Ubuntu-22.04`, then open the Ubuntu terminal, install powershell and run the same command above. + + 2. Go to Prowler Cloud/App and paste: - `Client ID` - `Tenant ID` - `AZURE_CLIENT_SECRET` from earlier - - `M365_USER` your user using the default domain, more info [here](../../getting-started/requirements.md#service-principal-and-user-credentials-authentication-recommended) - - `M365_PASSWORD` generated before + - `M365_USER` the user using the correct assigned domain, more info [here](../../getting-started/requirements.md#service-principal-and-user-credentials-authentication-recommended) + - `M365_PASSWORD` the password of the user ![Prowler Cloud M365 Credentials](./img/m365-credentials.png) diff --git a/docs/tutorials/microsoft365/img/m365-credentials.png b/docs/tutorials/microsoft365/img/m365-credentials.png index 9c06343ce2f23e3dde7a3b13dce072acb804c799..87191751a8d5187c5d6a4be97a01c04c073fe0ef 100644 GIT binary patch literal 122221 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 z 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%0A>tGJ;%8(F?4=Uu0o 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 literal 355105 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 z zOik3!cQEy2BKXlvZz2vElj2qCIKx$|1kuADsXmLdwLqTL@AwVW?finKZ2f_qGh z;_K- zmK0~Mg-)$U5+XKdZJ>IRF1Fozw`k8Njdzz#@rn!ITO2c;T~k=)yxI`FnFjD{?@?T( zbny>XLSENVeh*MZ^pgy~MbISoNG{E@%dZET1h#g_88Eg6B8jal?5mO?6AO7se=dzF z#^Bf-clbxZ+Q9J4apUMY3-T5_N#i`ea>}|sSTq7GU7`W?J#_x-?!X8`KnaogUaVH7 zJm-ry6TFZ1@n9@qBjp~~qNY1;J71a#Qu_X0rh&1%XBBtWkF@vurZg_fm|qmmi8E+v z%HJHh0dr9rjtm3bAn+BbbkK%3c;UYYmlN6ZMRwI+UjoNqcIwZ&slKQ3xebe}*dhP(}O- ze>0Xj&Au=nss~Xlvl$Wq07@*Od5dxDNu5@lG~uht@D<)Eh#*S1{%(YzNwS^8(U^{v zCSfE5&^=kaC)0UeQm}&1-rG|mj+k@F@T76JX72lAEU%-CKiyiw+ySaK3lF;^EQ0k5&m!zY z+DzWu@_<)4I;gXl2inlSu{t!DEmpBg_sOg8lzK05Wqx-@&e`r+m<#BI!w7_Tk0w9m zshtRnA6v4^#T1ghDWniY@z`5&LNt$f)cv!Y?KRzVK+_Heare50mr+$J6)&`mXn+zJ zvjg#&^W79_O7$F*F1=81GK;jf=o&!jcBUHNDc{D(_N`tqs5CbABIvfkic{2vPVRMwQ5yrp^+F^E|Gu)ImiR;VS=i1}YE z@8JAnt2!YxxYA~3o28Cm5&=oU79CFjq|p!K?LWfXIjiq8jJDzSH#a%rN^dnLJ~3gW z#!ilvwPPSnt2uDaDRjGLp*LJLeFVZ?nQyW$=Thun>!V z;}l3O3cFoJBXz~h)^;d@Y9eSc$OG^sJ2XF%yJEJX1N6%!oDT1l`pHR$%y>u*ugpIS z3N96-i&VRf6l#O~A9wDVs6i4H^iTfBry8(ncCc@de@cT=E(m|$!9*+v*T+iqd@ zEALgX^}27LzHYlek*0uv%kdJj1+ca}i@+mM2MoCort)^b0H8B4Q>$}r^UfP?y5Y+g z1nu%EZj0`dat9d~HfpuP&lsf;XQa4hWDROL1V3cW8p@ZsB6@Qpbo1H#^csZT|?oQR?7> z^p<4lm(LAa11ND@Tsr1Jg%`7Jg#0TBdL97fj;XKx{fx&8a! zt;k{c@8e{>iQi*{`%s%^79C8B8}TmP+{a(k|8mrH!G|%=`7GIgh%|>lJnh*cKfBGT zh9_2UQdMHD1Ia7XGWADK$8M!ww((A4As+lf2Ml*sjM@sq&Vz|;S`Ef;&CAr`A77#w z1SE?-V$%>uo8kuhtifJ#-+9qK=JoKSRkhCCIz^xTRVuzR_+4G==#^&bRsKoz1qdu?gI%3uS}m+DxW>LX@hdf(Zwn|^mGFpswX9?T(n z{9$V!JFlO50aNs!vj7I2$?aA`9A3aHbF2Es_9Zq@i%t@Uo1 z4{yxW$b6)flUB2tsD5HKvBD2mOeYHMd|RkFKYsf7DhF^LTa83G_r){O2Qrh09}dSG zGz7ecrPp$$#Asl~REwMU6h3$imfAy~Q$=dc43xcLx9A%>Uh1H;;t{(w z3Ck?En`HNY=JW9Soubcrw){ypI{l9{pfj>lqx9nRfOxMZQrLMG%<`HLbL4%>?t2_h zz>jcHjhb{h+}aU~H8u589l(-N00Dufc>X~#fi}f^yRyObqB}fKPHzEgbotx0%xVwL zFxPPTBcxnsy|?+Uo+dHfS!OdEx0jS#Ofv%tn0p%qSo8Z!uvj$imG6QWK~NwbX|#H> zH8V)`aaRm+S z^Yf!UCePl7H8y#*otC@ySbIj#+A06kEunhg9@^x;$%d0vG~YP6%~@VUe&5k)Wj@0& z?T=W+ej>?Up>X=6l??tkO;hUn2^j=$-pfLuZ4{hcTkit67cMTUj+?Sm=90J9?G>~4FX1W0(as1M<~LizLcpnDm&qj>xF_!Yb8V)bUps;pSppW5jq0}BAO}96>KUB5=*e1)(lIOZO+k4FdXg`% zx-cJ&4X6_#z`DrJ@lTp|wLb6Ot>LuUZ+y}YH>q8kLam#q@sUEtEl(vM^C!(4 zsV+W%{}KcIw^e_GAJEYimb3nQGZl%gXc*)$F^rneYKyCkTd&SF)1Zo!NWJAZIsC$p zE>|`;pM$b013cLS0*etTML3+6rqbv_j1+S5QMBsxua6R4ZUN3|b})c&nWYL~O(+F@ zG(_zHjfF@d(cFud++Iuc47#O3)-&}_X3xJxJQk~!EmF^B?FhqZGqwzrMtMx&IVsjI zV!&LP{LSz^C@zN=pJazLJ>)4fNpB52#83X@M0U@Kp?-oT9$WGQlaGh%Vd*x`f3i8; zEgB)>ane&fCrY7Jr?ondIA9xS=kRFIQ=)D@Q!6mnBwzy=ZQrr1{;pNZ5k3dc+m&=9?ltWF`tVBk?tCWLK zgSrv2;eU}-)e$rf$X+^_ZvjeWvKNuWdkPSfokJ7-+xPrx)Gm899W%)H@*vvk)kiR{rGj>H@3hX0Me%dFb4$mhWdEdi*3R7<(X|xUQJtLHZny1bNL^| zLZHB)Q*-98ZXCC>b!S6_K5OBvbl`DqlU%y6?<9CR?OxH?Sfrk^$eyZ4HF}(n2zw4U zN%w3$qW7g2Dq!vkX9ds`z{7sU*BWDVKQ<7%2V{ z;YK2M$3x~Cn~Es^)_Y-$&VE0(bt{{RG@aB%tfCJd5)%wUf%c79IKhamsklQihihw- za}&lr9ZiJte)pc~e|oCVECx^e(i6|6FR`X4=My~F!3o{BM91Xr7zXJKspE>Dy7~e~ zfLtcG6xJqS`TFVDrTL~W0Ky++)EtRzPm92WT$mY2BBWH6EM}SoUuJvP_l9Ft9T)LH zuJlvn^W}#%*E-kN7i^CEJR{a|NU*&kzG9CPg&NvO+j%@zp2px2Q@@l0oaaG2*t+HU zy+mttXI4+l|bv_;JyPw~;~Fg%B^C^O&DgeQL(fiPn4&3en4 zvBo$UJPrEYP5?&rzC;|MI!f4k8(t=bR-o?OpRG9jie7ey^~PjqM$;(A6hnr7=Y2-@ z;KBRoUB<4GGMQLvag;z2UAA}HXs^UBFyF+xOdZ1>zeqeb7F!;Yh&=(M%RxN7VUAJ* z(P)vjS~XXsk>?}Lb*wEU+`@E;*4-PR7R=TD6f4Aly%0FraXZj5O9L=JCzMgkkX!X? z)%l9`sF`n<9QN2~^Vo>rJ33N;=s>yGd^N{((BmU0d>AM>$+kLC>(>f zeEq0S@vEuVCN#NvAN?hT+UM}?{Bg@Po}*8LHTIv>>hc4D5GzamalCQ~`GqCFY;pEO zCto4U_NTR;>w>$p6|LH$&{k-g67X-~PV$wymSC+4Ta4m1!JSKH-6I#QJ?ezaMVlW6PMeaPy%7k zL7}40xc&M*0aA8eh%N4QABB8k^O_TPBJ$g>_qsNt&fchGR!g`|0#fXO7GaEEB*o41 z@GHGZfn$YnONS>sGtEmXBs#=*Y!6<4_q8Wq@fmnrEKEv`1QW2#ii+^6ySEj3@Eb9# z3-VhS%9D^gwoh55G4VrlH{ZO>QDlEtx_Tf4cK)2i{Ur}NdI*rZQApz}Boc)^F^U$# z>=fa&O=_~0AlUWX#y$65qQL6x0=hk!mS!|Eco*uITl3X#f~{v8*R?;D)X5K|5)Yjx za_-Kv%5I$yR)Hm(K0e*$t6QEO#0R2hj9XG@iAdZSfRxInNL&w_^y`KV!1r&=T+lJ5 zOq}&LbcQ`j!VGivO;K8ThOsfYY;vfhuS+86vOCxu<0&4AD-nbcLN&*OAs&04c>=_Z zo0CVM3T2(mWS^GUc=exqM$j5=3wqy5H=3CA>yYE}lYWM`-3WJiW7K2vnBRrj?ckuq zV+`CCjQ2ABR3j)0g@0m!X59+_ChF zAcdK%Yh=#Ghjm_lnA3QcE}>Y2569a9txRSPRGgb zcMU?F7RRvaut?3CKJ*oq@ezZel!*?hGA;L{s)>;pB7X@#57wn9EDNT~V(vCoP5` zUD|nA$bRUvN&A?4B;#sRZlpjbbZabkY1v|D);Zu31%EZ;f<7#c&mB1suO{~PYX8Zo z#Xy8^z3sJor$?og7PXhNpV{!szPrclu}-^!8;35)F#j$MIpDiLyN|WMBL7!bK0rcu zIXeD0To*M5BY#U3en1%sF${ahlj@3nFnf9Qc7J1Z)frnB5k`YL6#-71ksXDY9vPja zFG~uVPtewk~0fAx_BLm9#&ZIkjZ(PO1z*>^@(HF-Y z=YFRk8qdq{%-mr-{He}}Eh)7?UriY>E;Q?N*(X!A6<;6W3%d@}>kVjZ`s#wg>BpkJ zsJjFz*{Ho9vgS8IyCXSfCM3Nn|3H`enX7(9(ZmuQDV%oV9Jb=djlQm%o&e>ch-^lS zFzUa3*jri9+Io9IRrCMX(;?hU2`b^{{d$Br`HqJOtu;=fw-0BhZ$1b%T+#wXw68Ea z4bcI*)sR1wJGSC$?MTSxhk#5B6!HsvFJW9nkBh^=dv5X*qu$x+P1YqJECBmbfc*qy zbwK=oV^Ye!*O?IvNVuXGH|FYTQV*nS>THc>6fDM?^lJiq0+pqF65NvY{__jQ1mmI} zGr|CfJchx)V{p~s;Ni9w3rG5IKov$30_u*p3Z9t~*+OC3(Tp(Sly;l7GnLkMrq(Ry z3H*unvm?d~@XQQPE;AK{U)jx|)s`Pu9Fvm@Ai}fw&~Ulpk}7>7hCL>S-ZbzLLyv1k zh53n|4A*X4c@n<1EQJ{r2=P!EFPu#$r!XG?1-ee-H^nqj#7|pqsa@@4zC&BF20#cx z^`1mxQeY@v0Hb>$>pKnPaB5Ob~sC;l})CIdNQc6a7n2ds(Ot*-@%DTf?HA?Z#08SNayH`~!BnDJ>1#O!aGM)m6IpB&ZMJ+$ zb}0_Qz<7~fl3cbH2kk(JLBj|)s*3H|+yk|WAKJx!yv~m|4hw+pknSgqJ2W|k!wf#wO4Ahm`35^ccToMsPO5r^*Rs2BdE;V|SzChMk1}<_rStfJCABJ0>nK&-ZlS3__ls#*Hia5XziL(}CqGm=w zI3|W&(a1&DPxHx58F#hY;}d9l+KLRbuK3`~z=M_mVc{SmeFL9!m$*PkEHex}HZu~O z1~qBGgL)}kifPdx1DndUIv^$5vrt= z50yRxA{d{Ji$bt;eqq4{BCGjSxmWUwm>RwSNP|S2&l>qlpI8kdMbQu#Ys3d~H=pE)zlj!JJ59Q3CnJdZ&lMrLUy*sXwut{;k(p=B zK>k=-W@9=zsm_ZAu^bpjf^x}-xXk%muYj3oG z5CK6ld?TZo5>bp6jQfadkix?mQtdb5A7EpB0WeXyk5ml zZaZ3qyj*MF{@k$VTRL_J`I@x|(gNK=#I zq8Uy>sr3`RQ|>rS9eEQF)%+Zh9ssQ2_k7)|xm>7%!nDk<`hw|gWh=nh1tP7cHQmbQ zb?!_$$Mq#GJGX9Q3%=CIQ_aPG-SshcsWV(|Fhe5E{fuM?(Ds|@=S2J-L%D?KK%J<_ zT@n#{F3z8QU;7VbA*x)vlw`SIZ?fSHf;O_kfRm?gpokWE9_U3e-9sr(F=KS=J?=S} zFKi}EgF~y^8=&6gJgPSjK^IKquSf<(?nh2JY3VppMggyD)%FtaXM|k)nY(*(F zV>gqYosoFKprOo*Eh0asl8b*fI$khOd0~OVq+6dZAv5;fd?*tkSIM71wbB9O-fzY! zzN(VVM2f1Dnsu~ZG_cnYT)w5S3NGdOl7&PSy6?(dAwRz7Z`xPCdhZ$ljc~c`EzF6| zIuD4%salTOZ&T=ZtG>m=gjnkd$$DQKAZoIj?6Gc585LV#u^|4tIgwNt!$*-+SOC=$ z?%!Vk$^_C>4BMyJ8m@~p1+@nnmg;P!n<%$mIBD?ppCoF+r#`wa5W|^(hy9U;ENf9_ z>obhzX3NViz)KQTnvEnQmoNDV;*abd7~2qWTVH$mzVNH3%zT%BvhL5P{Ujorb?3Hw z&tngrHBY0K8}AO#)t4iq=tFkD$z6zfG^)fR;)=No;~)|NJ6z$*8j+K2H4ajPs>65| zo%t5Hvz7;Sn+c`>;Uy1pSCythp4BR)!p7&zBT*|bd{Z}7$$x0h^>dJ_aBcYEi~ z0f31?Sa-H7WL`8qu%>t1-&VDiC}j$yLEu|xAh6yzVpw+l z(2npb&L1A5HUGpU^en&5rN2HJ@axa{su;gKdrzKccD65+-r8Y-?mlxMABG`7niO5`GJ-cp1&WF5BA>+MDTM54_xOKY`w;Qkpp8u%y( zG@>ykys05{8MiPNa&eq+D2&&^o-7}>2%_v6&1q5%MCl8n2sJ4ZY~HA){4^(1I(Any zwfs(DgKCYN!{ray(O7y-@~K8wmJ(<^83pkWzw1`v`e%uaYbvK&mzrt9=>b1Y*N)$J zzpkq+RKEb{Emt#t4`^T>Cm4*0`T}`2p*YeMj5|=duJ#An$eE^wpU|2xh9@|t8GY;L zCVBzH#_{Z4=z$2!6)u5z`p}|R@;9cFVJN8MN4=hKoWQ8TI8p9JOd*f0_j9stAAU4v z){kF+!SC_tW-2LQtLo#H@-N z1KtDkG|@f#Gj(SqnNndu5IYRq0wWsO|Cv;9?~}^dQM2`bya0X+!H1R-^>w2=MSzAv zf}FR>KOlN^?I;T286qcQ?j0R>^=Y)$yz0$}`bZ@TXRbTT@xD3fL}4=s9Z>@YLM+Ox zkBJz^k63&L6)goFJO^`LSU%0VPZtswQzEL^Ju~76r4LYHLzB| zBSgKcv`kbW6Vnohy0-(1O5_g*quo7;;A+yuH&n^GROwwEfWgUUr_?n%3c6^d#MZC6 zzlAU>j>RhFv0n7-m=tbygMZin#@J@}D4}Y#2Fm5-Nq(9P6ZQhC?zgr!Ojf@J3`y?$JInysyzV`)r`(ny7BF?85F&X2^h+@t1sTHlFN1 z$J*$;H}P(&%F0qBn9j1@WcfBjN?{YoCd*&Kb4C#JS+VuirnvzNxErv5{~$&^T zW9xu%BQ#ZPB0wP;=qUb#L&v4q!`YDI99cP1uc;$8|9x;cv&Y-|`2TVCmqB%PUDGJc z#@!u)26uu4cXti0A-KD5Tmr$}2~KeL9Y`R!yF-F|a6OCreX72Cuj_ukI(2?gY<^^C z%{Axj(WAQuOMxinIXl4^i3%V9;WGGaxa{f`^hN+f7E2UhXf9?v5lm-B>9z(BlLCzO zIsi5HvMwRJ^?@MJ$9)Ij&JV-~P3PGSSb>NAaLI4w#Qht%cH+ncLcWj+F-W{Q14f?6 z%K*3{QQG8b18|L~Vo@4+F~vacH7ljzUfEI`A2#I_%R#khqn_s0=3R}8=~C3MuXxP) zmDH8j$|~b0cr?q~>aP0}2BreK+dsNbo<_7t`sL$#%+x z^Z2*?8x!hv;q6*|V&{x!mBq49?>gOis)i?^FNBZ0;3tsaV#J|yO^jsTY!bNtz;ln#5I@QYqOTgw>t_&1O#GZUtBxWnSHrLIr#0{&s*_g>irRVp>tGvDOw zXL-C2{0?|ck}GWCc-kFT8^PE=;uHv24GPYab|%`dmP6TpUKHN_5pMDy$r1{W#vQBF zDu1o#pTvBh)#*J0q z5?^>c%=KKIgYV08;Ezq%1)R{XAL4NUc3VEYsE_T^a*~aILipm%ho19~itvOQkm^0? zY|H=SbKuvYc(71`XagG4kDNW!JA+gnOCFC*)Lc77Ufp{oT2Jpopd=g=v@bOto2~iT zpm;SYMLbB8{p8)c35=XNn|OIKq3gw8<#?F&JeaaGq~xm2LF#X+BiR+-6f z#YS6jU7GP)E(LIqC1Z&*JRFUsCkv&VTk`;dOFf8c7WHKEb=6A8QSchQjJ<%c0=M;- zSM2`~g-O}TRnk!TBA2v_i~-WOL%o{=+R=Tb-`~)9SO$uR!bf5WRS>&KMp7?$4bM9# zFF191eTN;&=)<-NmY^vb)||maFHk7mnSu#w9?NXf|IOf1RXwipRz!bYIB1RB*X6dmd7n3nwDN@ zbcOj08Z&NH98992eGbr}3+N7u)~5D7rT3+uh&bG6JMs>KgOd4@ja~Tl^ulnEt{3aA zQs%GP%LYp}`oK*_Wg$vJ+Jb*uMZcl>t-OkD@#3)ej zbx9tT#6hDFwujN}Mx48P8+@pR%jI)=)wgo^jETRts#m$zpVwtbPNzc9Fh+o#MF=s2 z>Jo+g783pYN`}a)Kr^G)BElYpk!>*5Lj_A=#q#1c^?-O=_yIwS2QuP^XOvwP%!fG! zGPj3s>$O7mYxVl`TLJ|Lfay<^VC)E&?r%s%6JT7F(KOu;;2h`}I!{X7QXB1robA>fYS{fx%@pAe`+6jOqsq z-r!N+q2M^{-Uo0KZ#3Yqo1WNAn(_N5V0nxKn5gFgvJe066ClFEehY)vcgQYb;Z=#s z5g>rA)zu59iodqbsf7s6*EvBNo9B$*tD!R{PY|}OVYO?Fdf-Ih*IrSW;G@c_f#sOb zB)ss>W&j482!fFcoem45jt|l2SdAPhRuzr0sx43c%F^1jidO*TSOy^P8DQ*9R@Z25 zLvs5SsoC@i2^ri}se)AJ7vU6o!wBUZ4~Oje@wyMq_{i_y-Mi{Qp=0D1zqaHqdR&&h z7$@$p_(-a243|`ZAcBHS1XNN59J+BecOKN!wYrfV+&iG}R7_|JggZ2v?*_EH-L+?$ z*KEu`%v4+3%VN+MAT&NL4)bM0fPPdtVD$<=DWtKP0+dFY`pJNMe`W9(S5uIerA`)* z7YPPFtJ|vc`NpR6+BQ=>i6qAv+s(q5kPlDQKd(BLJiub}-?Ft=hf&EBjF)(Ko>zGv1s)It1lG_U>z=x@>}B@EMScQ#|lv^A+x02GGXU9>s%V?M}mFYkVK#)UMb z+bpFYaCFz&o#PHA2~-mE{7*$%;Yw+^)MH)1j@nSLq}J|pOk4NfeE;I=hZ)@A?=Sur z+%R8N!8fD*H)8PxhNrS;%#(NsP z=YE!-cOTyk8X<-ncn?pu*O7m5-?U9))l1aMEu3$uv_0+v`{vp#A~${V*S#@OQ^!#(I_TD_`5w_@!HpHVnT(x}IBz>HYTnmDh5H*de#8lUEQxb2?6 z^dSP10c(-r2bU!^bAu4;^X)HyeWwx&zRD@Kh>Urw|x z1PZT|ayjGfpN4xpg;kh|+q^u|OoJF_v!=SAWYFx({(n80|Ipj5dB9n6V)=#X-zh_| zRM0*JkTC%S>)jlfiytCcqDr4sWyGPX4C#n5aR3geYCXBZ+h|Ek*VE)$7IL^7lb2Wj zIgV-nxwY@|d5I)RRh00d=cN`1RPw=&-&QPu2Rd$TI1Qaa!*hd;>j#IGdY-omtAKuJ z&17{cCG_E%j7r;AM6dH>Y@g6WxGKee9I}I&ecV%@=oMA+y4V}MNnZN#L zgdhRWQ;p_q3xn><0)Jb2=Pg*9$8_g+R=;YaDjW=D0nSIOQZE%5Z-k}m{Q?eJEy<(7 z9pl7u%jt|8@L<_d;QohtQy)Pm=ac)x#I1QX$MRBeVyIt!zu1sgW+k^=OJW0VgB0T9 zw^&*KIZ&D@)WWDb*nXU9TgBybk>u_H@&OtFQMr~3=>NVRA%Orq-4I!E*7`4JgSaRg z?t-r;`Eggn{KpC2tf@O5#S(X(v(M2Ngd3TdqFGEr7<)UmwD;P45v_^`K9x-$&q*mH zp?l52-+O(NmiD=bkP1kArK@eF}cX#D%@1j4@EFaKc_%Wa()tYXjv(+4s zhzI?M+L|tSvPGM>UMNbMwk4r`U*`3J-o$?>JI!6I(PW&(e*nl>`d+Ao?qO;7g^VQ{ z7q!-j0tg8TS4NkZs4D&Q#&cd6CQ%jA*B7GxR%Od#4^gNQP^PM9Oi5|tkgP7=R@2yq zGyk|{au2wFe(K=);m{2julxRHaM*HO9SMzmvIEK)Tn2SXpYyF0r95{S-}LuDs#igq zU0C4WUfpy!kLEuL@0HhH!Ogn?ynnO2&{&`@Rg=LxKDX0Rd#3+121bwgB}CQ>2QMAk zb(aHH1>a%p%R!FRz-e15eMi(IT}GCU%?5=ZvZ@hH!EzKPmlXNl_$F*Hne33{EOE^D z7xX4b*^m!uEp&g$HBIdeYj}T`808_t87yWx0up8@zsn7uXact8_TTk?4$Iv;)+$cQ zCV*?t=kk`peyMY~I%vK_Jm~g(Ya$`!F!H9TxOx>~GTVE&siLp*)71r+ORL4WNGKsK z;L>q>81wJTW;Yerm}B0z253USQC+O@P%=~Ck2C9bx+XD{*oQp@dGql5^Gl5C#!TJl zYc`TQ1|0H-0)U|cyg^}-NZW%rk6Kc)k$aPc>bcN(uT`{iX`V<|NFmaBSZcpYwh|0N z+;l}Uou{^5vsZM5YXRVka@*X}lE~`57$7g$yDxrv4M>_@DP5O+&AzENrC(t;&N{OGRv!WuPC*Do@Dv|VWEzKPRw?DA>;V2f7C?Z-DZV? zR=%EE27&FScNpSeO3piziK$u6ORm~j>{qrfs0o}dc8^n0E`6pg8ZaS8a-v?i6QQ8& z7j|DllQ>YOD7XuiP#pa+J`sMc%E7Y#v#ZKt6Ix8{vnI+fagg*>v%AE>Qd?M%a*c4G z_5FxcIFEmr5ZOpNzX1>6Dvjt@$&_HycF1>J7o253MTYa*>h<0(2YMMcz}OVy24yC; z?Vpz8sR^mf*|L-p;hKLvPWfbKZJRW&0IE;5FVH4Zg*zIPQn1NpIw`egrR@F+4j;#$ zqctuV9)&S$ae@@!D7U(-25YX%tH$rf5#i>lGNp7wDZ~|k*rZY|+nCawCgBfu}!v59TTIi0^QHVqK z@l?@=5jre1G~hBC9oTKWY#c;u5xir&uI4Sy8aecnkfsbWMg1@$ z4x&M4&-y(pIIEJ(s4OSXAY5G(VNZa(-NW|-YIn*NEC-NY@U;jahh3(>@5fkzgUIW1 zq+mL6G+1d+)psEz^NIV<^3~1R$n!pr)EIl>AdikflT(}5V4>c={&Sw=2TWgrT4jLY zFT_(Q#U}A>aswh9oT)n7zo(zz0C?x=14|xjD0AxWUC+xCUF`I=!FNm9yv$VAOvTM! zUDUD88-TpPBx!2Wq%cO;Ycwg;E(RvIsou$>?Z4Vtm6+ZtVt(-Asa?70@H}Pk9um}R z8F{kFyZ;Qxn@uhwg*ChM_?lLtl6K1g>&|Oxg;o|5+%=c8Y9|R$1*`S}3^L<->_Bf; zsQZ@f7s92aV0i8*=2ie|4QsY~p&b@*xv6?q=$Fz4ZX|?>Ni|PmDT{JOGVho0HnTbOP<@)q=l6-2pf*-bi9^fq9 zxcfi!1@U28q6Lp?!}$x4RN0Fb@JbQF{29*bt0f?N{~zn=2o>@KzS)PHqYER2SF3?D z&ZkLn)9iqU>o;|q?_2g9=S#4jayZ*~0D5#)0^oTy+^aS|Jj~3!5CN~nkuGz-3Sg8h z>3WEphy`R#KZoZVfm_hOrOzeKp{iW#^L=>0b#<*npGUjfKEMC%SrAZ9X93{`Nbf%rcpKk>Z|*lAVvePF{{)KHe$lbp&LgW??FOar^@Exct)ivV(-*U~PrSYmtx$n(sZR z{iAYoVgo4Xm0^+(F#l=`AbxyZ+dkf1>lbdU8-1OjJJIIBZ)3b)kwA*a_;DcGKK?lN zjHM=nnBBV__iqo}fBotgiW#DATN8yH1eC~m@;H1^fkQOY6IA7Z%wd9!nLczR1;OiJytAl6Nu|UiIKMRd24*E3HX8z7*eQr+lG-e&Rre7^QJbiwQ zxMyc)`GYv{YKxpw_H%A?kp5G^!nNRToJVge=p5`v3_#lHPZ?>wPGlTrUVU<2WS9HX zmW&z&!Z`w-i=Vz2A8T|>0Ec5R{8fGx34wZrW}wY5(M8w87u8wfQB?acjHF~Hn=8)A z+_vyC5~R(Z`#kYGW5%1cBF1Y+jaJXFW~pm(Mq#+WfDA>zau!{P#1Z9*je;AUT*e>; zx0Vr6_mAT);PtrcG5?(MZ!{4AdOhyWvs~SN6O-7nga>Ft)gppLX#eu3DTcc(I#kG; zLdDg_OpoJOXhal;|tN>g`@7r*a!uW(QRNH`sCAdQ^66C(`$DMEwGPrgGx?t7!@v~q{J zKO^o0zU@>QKA`vw4~D}i;pQ6=>hYd}P;OgY%-n4Wu`|gW#eBhg#}D+Z5}p+kfYjK! z{mHL%y-A|J{B#Dpz9|4(>(`YBXgMEe#NV<9j_E`*oGkKt%g{qy7vtA~8P=~|21?YR zt9HGdF7C$Dg*+bn#bV&!xpNaiktmdjJ8+7b`(A*f<5vr4AgTr($QaaNi60$5oC^~) zEIY2YzD9;lRtN~;oO1o6@eFjGfsQo98-D@m-yLbFw?KP67pVX;NOI(|N(E~&++Ae} zrO>nZJl^+_6A3!|5=DYJZa6of#5?uxk=DHR<#tEt z0Z(iiU)mpsw%Flp#SUI?+>H)82nu8<7b@oP-wryBkb!?qI-4!)AD`e`9-<2gr;0<*@1UeSnU0ihMD>c<9;E6l37aGYkvC`ESc{ zed!~;^^{lBbA?U;EVr$?etUCEZXYzFhuC`6F6Jwcb#Ga1H$M7n83x@s>9pCa+A_vc zE_n_O{~Zh<@FgVxOr^JbIEd{}KP%Ol{hY|udcNFu)ob??dL>JM+{2Qk9K81*MZdyx zze>?~OkuoOMRrpvc_sl5%>LZ5?^vqF6Ts{xA3i?;!CB*obNdT*(~TyRjCz!F&j8GJ z=RNqxd;b4lUMm4AUW%b zaWb>DWg5h9$vyaa*;zdj_QzN^3cC^-p;F_=yMS@w_hBE#RbU=O^LezPq z;BV_!#^vbnH{iQX6J(e&ViIR-dST-IWWi_$c2IGEVD%?vY1ip$pezBaQ892%-#ba= zsh|*X!qO-us-DpJG?raH{#5We+u(Q=)r2FQ4GxL@7#_Pxr3f&1#oxGa*#v7axrpX1 zDoMsi)1|(3xdY)Bu;<$o0E*iC-Zvn;Q&Kfdg?+7u$*asf7z6hfAld-tzSXJcW}9`^cx&7`&7}T{I}CQ&gk=JbT5(2|7t|2%VPy&|L;wPmX@~%sjYCuMeuhV-L@06s52T9}jzuFRMR+@G z7agl=(;FR<;xc_O)qo59_bK+;r+o9;!(65A3;*|@SLA>%>39Da%4&4L%4&~|C_Bx! zJQGG^hzu(kH<(?0$lJ1b?Mumpc{m_9mGg}Fw^X6!t|SjJA|DAzOa`>;z^n5y=OIj1 zlnryj7eAf~#6URVjU68hs^i*ataI8xpm}2)MAiQ*U+|&@OMl64E#J+e zeSi0G2iR&FZ_-h@DZ)URKqSR8Q1FR}|H_Yo=Mn=M>xRGCFr*IxTg%|9KzA}ZOeb2W zVSRp5!ip{pRTb?ECjGyw_5TDtK)*&mLvKp-rT&*kC<8pgGd%J&VnuQhg9P}1B;B0Y zUH*`saz;3i$HVCIr|;me&+L;-s#fRDH2%U~$->71Hdx4eaL`A(qLsrdnrW$lt^%h9 z{*ol8(Gs}7R_nw??KE-FBLU3%xwPc$r@91vK1l5UR!sh%{T=kGH4Zu}FdhEKeg}R% zq0T2j_IqB(^9itxw-tvnHMJZE!BYl#FMrbLEI0o0&fUqkH5p~}Yv-5)n~t+d0qz-|npV#kW~LU?F)dI*39$Jb}O|JtJfI!=Cl{gUI*vOYlvh9XOu z_J)@LcCXJb2^ROpA1KW8L;)E)gF!3%<<7CM&%<@jlUR=&lg=Y8264;XFxD&FA)Nd= z1=xM}`hZB2KPMQxxMzru(J!47C;L^mH$l8TcRd)le@F&;KAdm$C#JP}zF<8I&9a$x zINRG6KpEc;|JAy@xSf(vmN&rpHofi`j{#{TeOcJs&n%T3t%Ch@_~a<8GWcuI*^G#do{w&pBDP+ShpiVitmT zy9H_;>Eu(nIMB$2Qm)D0Z}Bxmbcy4hK`Fmq`x8aKab90dM$%T3MCf2J#Xo<*5`ZX? zVF~#7ST!-dLROuGD-6C2r7_82QFV#|_K%`jTb`*g!-xHYro$t(zoBORF=A(2Px*Gv zL)V{ZwQ52lUcPc{TTVPZV2Bsznm)ZPFg*gl_3HL?akdJ{l3%23m1~=OM z);w9{om#X!4R;4*8?!rg<2k9skBR=-Z)04a`6!!b?j=!ZrhMq(0 zj2=g!MAm6(T4R(1#fCChVIuOVL39=-wJv{8xD*016$V6T3N&`pjs1o{$xR65hlPQ$ zGNE@@vXj%{cl`2jaQ|&dfpvxu1OIWIZ7TgfM8M3CSFps*Sh>Wk+bli!TUg5{eGZRV zy9mnPsI;95@0-zIgwbc~0{8xTJ6kJ4fs36nWtOa24N8i83^IZPM433USlXDA(y`@E zB^CWdSt}E)1A>=CmD~E|XBy*f{w|XZKclK`VCOFQ|B;NAyoCt1hP*(#zzn)TrL)TK0D;a z<49|HumvApCj31LA-oYqj1L9jW2+UxA+ zTR#EGyDfHah5z4C-e!4S^1w$98pZT@?P>!#;DHy9WW3WTS1)F+^g7!R(`)#o6z>lJ z`9c+uCr$f-fZr0)*fhwqHO9tOSuZ0w0)Y3R`x_668YJe+BmO`3_y27AUX0gmE@FSR zG~2jHkf+hz;yMLz#a1JsM8d`*y?BjQ>S=&vUkZq|E!1yu@D=27E`&{{H-(PI=0-Mb zb4eM?>yZRP*e|_M#|o0P-$xD&SPrFsIa%wHDIL$YjJtl||7=S{E$t?sLPaF?Tdp6- zzkcu|^GC-GRYd_PjuOC>$B^;jy2~~NRN{uawR-0R3!rhoAG@(QbUeN@Ii)BBFm#}* zp`Xq4N8Z2<$y#yeOcVXnT_9kKiwF-c#+^3}L<$6I$VRoIkqP_#7|5;Hf@UYL4E%~3 zntfZO2PdDzAGWkoXwUY6Z|ASRX@a0Gw*1IdE6{JepyDF`I&RVAwnaRFpyAZh>by;x zW6CC7*=_FbVE4DB>u89>A?}R;ZLv~L;_IQeXUyxc#(CmV)f3Y^f0J7WsN^GMWLyOb@=D}0vI{x;WxnLr zUd_x76gY4TSIeHJvC0GD!BW1zfeqiP$Ku$za@9i-v1VFR*-icM>UXH(Z2Rk!(#-n@ z96Ig{axZj`C9=MbdHAyc2Y=AjpYB+80l+h%aW}f#^iVY(^|WJK&)=W+2ynHU{@hsR zx9Nugcbp<@{(Bnjc8*uI!6`c4JKQt&suup^(f;E&^ud@eFcSJc`@MDxdGlsQl&@SG`AWcs zg24Uf%Ib#dnr?^6;xXH9;cdst?Mt4RItcOh+g{cjp#etNNA$?w7-~>gXE%nwDo$Eu zCVA!^SMsxXg?b(iY~zaq5sy}ZU>~3dv@XWemUp5nt>VFIQ3!dL2qg=nh#R@i9Zw(6 zZL7W16WGJw?zrAP1L%1vXtb*IQg+7kYMMjX*&Wve?~fYB_c~6yQ4$GAYP%d(+r_S* zZnxv2lWW}%wHeimA`gYQ^qcJ(0o@w2Q6Hv! z(yP|u5dHp}hn5s}Bp~i)M6vkx2`)6Or&_Z=hu)5~Qmu;$NIuV_v8OH~-cS;g!2Vwox)`OG$Bry~7gR?@b$uFh|AcYI z@2a{@E_{sfBD~*ai*aIt1w4*5Oi3?cTh|cGAPWipmny>+53Dd=&`;9w{$cC>5x@;u zPTO>)tay}X>eBmYoH}`(Gl!GJUt@HAxSFe8pRmg6&u7l_)Me3O+k*AE>gA{i{>nzR zy|LWj!4!9W^mp>X8azr4f_?Baci<)`?W7p z2^a%(GUeW9w8iX}244JTSkLnH@-t8ZLjD7~`)WUtbqH5n3RlMBYK5YHlpvyjduqP) zy!RX+>q}5X-*B!sSTu83_PgUSy=V~|>UCz%G|OhteKZ8vgfIGP6x^eRwV~H10+Ppi zyoIEW76mnyV+FB+4$glb3QgZIri;W8mwx!Bce>icF6(ZQ!~LE)M~j8yTAR^0Gd~7K;;S-+`WrrGy1AV8V7FO^-G#nv-GLwa)6X6&ApW3n#dzhIea@uAxo^uqK7Mgel?*RZ2tHv_ndA4fQ8yE9cA2TY?-GV>q@s=6Y@%gynM>!`dxkVmc9DnJtDpS+ z{hJ}as(xeyJFGhL3TX&Fx+I5fFA%K1rU#zHw5eL52Y|o0||N7 z!>KG>pGFAhJ-#s;wkHo9RoY}>!mZ>dkpCB43xHkGR&fCPY*w@xX* z&KB(3%^PEc5$n1OSvHb37�>{%tWOspS5ox(QAoWkiUakAdy|m5yXw?z43>Yz3&K zu39X5G(MNOrxd~+!1VFTf}~;QOtp_8U17e{*&C~C1xn_BkfN{G8%`;FJ7fx&Gv3jo znj8hMJY~8EW?;BKp|ir5nWudjHN3$`g|-~eq4N^xn*a{m-rTX8zeH&iU2Zn>l0-wb zZ*B+>CHI!^*8tza!vVsQy+kO~_k5{opK4!Fe+}e;x}0;Y&>+4*IyPtL0Aryf$@vJV zqs%JqzMI{ztTf6;86$5zV>|b z>wuv2xLKb{0f9U&Q~+V+CU?wrxAR|Gdvj>?B^|n%7Vo5SBvZ|J69WVWTGL)HR!-de z3(tmKpnK~$9ihvL)s7%Nfrz!1zxE_uH#EvO?6-ipZ5GGMqGh~4V~=V04znXaeX`vG z$b9BbI`k6UrILyMcJij{{B-nXs<9>z)$FZDFJ?7biz)#$5e(A%jQ|AGUuCEThvo)_ z_8cdNum&|3@6d+?`9XQkI6c~HH$Eh(_ui&AN2vQ5-}w{F^xx{7i*}NGud66q?Ce7o~3`f^ECT zE8dkC=lg`m67#NBFxrqricuh%k{(RBgAa8p5BdBqHS4L6!FItM_>2s)6vC#D%9(FD zl9*v=_Qz{0aQjobyOt^iJtTwTJ7xBo`JB$^i&gUUgiy#ELZ6fZ2w*`&%Y+4tw1JP( z`JQpwkIKgDr`t#9UY%~JLPDcOl6b*TA3?Opmzgqt9qm|fPLCPyEa^Q@R=x?k$q9{r zs4-Hakxz!Orf{i=zVu^{8xYxf_}pfn^^0f3rvidya&8Z!oPK!NBkA7*1Lsb zN%<0m@As&+z6g(X;ueC5u75f9TL(>tbY591SyqKs;$|a0P ztH>%wZwWthWcVE2GH~n0AYElIHmGycVnYzU5{siabnQ}?=5QM6Vc86ebL-C*x8AfDXd9&9qj%rV#En~ z#eHv$;{UWec*2Oc{$UsV@h*Nd3C~n4=W&tT(3r^_p_kHaedlD9Hw&hD>JQA^` zVT8Hws!HYSNSu^Lha0fz5I78#T^aHYpJ6~>w|w)(hH=Csdlu=UMH)jwal@R7Jn8TH zs8POPcGJA)rPXAa>i16AIGN<9zn#V@N3E>GHb|&cwTTjqWs_Dw0t+KbB;E}ZT@KY8!QYiX2nONc!6ZV%*Wi9sr!V6mEoN^3z76~6TAS$vLOTwoN_$cEw zGs+_cEql4KtVUc>$D1^wsLOz^PKRiwrh$_p1Bsa3h}ZtHoRhY90tLf}@QbnZvTY$$ z1qKXT3}<|CM4I4<>E$~@GchO-5u&uG*XKA37>WZs#ijI*v^Y@4q$qI?gkVw4;Gr-r zWOVp=`+=wMI{0uNOiy+X@LtGaP>Z*-uxG$EINa26=UZE2!1kxgX@tda4mgYLTyV?d z7EPs2^KGPh38d>vyLsdrm#X&aA>lMMe2g~PN`J7++3kFVu23-}^pW-jVdu*R7G5~? zLg!Cp7z*9*I`E0pksQYD2@$HP&PU=|cI$N?h%ih|q=TIs#a2~ty^*&?U%qb}9>BID ze3g#gI~wnsC6*g)YLomjUL?m-3xY#=%ChX(B{uRN(g&EscdfY+U5jL z3KQh)ZbqumOD!6@OaOI;aGJ+{jVu)W@f%yeZy5&oE!Ywn8&NW4D9uz5x#C`e2BOHS zL4+2l=OPg72DXInckj^5TZXpbC5&Jv+lO@znHzm6&E-HGXfWAySsFaxr1)CUO@Y;w zLl>dW200bcjoPhrq|89W`C#JmpEHOa%O86_n4fU`?~$7rKH<0+zvL5pZnfbH!DcQ( zHH3>G4i8Zu<|`X6NjUo=y1zQzQ)jJ@2fs6$KoG`3g%&XQ1DjSY$S>rEzyvl?m6i5I zvr=7ob^d-Se{YjXO_V(3Cdd28zsGhwKxzW2nt~3`WEL$HNi3Kc2UmAwaNYxzp;|8o zdVa0^A)mrLyZQr8zzcNLua#4Gp{ht|NWHBLnfaX%#;KgD_F~6NJn~EEF50hv(=-NY z$4{eWk<6KjCQ`VF`@W$kS*>L87NQir0@-BmF5QQwbYb&pp|n7yQ`7Gd_9w+@C8;05 z>Udt_NDr(|)W|Cz%@(T-JCfxgi8KmjW!oNjAYm_J! z&?;rpQwKKL%&zpegd*Wg^}IYQlxvjICO_<#=D9>t-b~0O(W#V_C}maD!q%A&Xz#+* zZCqH~)P5Alb*hk&<@;YS${saP8BGirjP1cd>-8@ZNYr8cY^x^}LJ73!n+%p3HhhR- zlCCiz#DGW3vRXO5;QUb}7_-H0M2JH>&VhtxPLACvhfrraz!U!FVp4l7;+5^)a*xL6>b1r36O1M=!qAtf)jvhE zMjfgPHmwpMDX9`CNRN{s-HtN9uN)m+zHGdt8c>dfn==&+-yF`~*vE(qBplFdLUDS> zDd3E@Bnmb1fbN#&B4s#1cDy)^MYhhqLKM5A+>~~nSx^Kjgo-(R(}9MFz5Jf_-nwND zQ0BcUW;8{2#?rHQe2bj_jHm{(09C>|PR_9q)7RXJJTFzCruX|%hhJ*u9&gk6(@!ef`Bf<}vqNVv>`;*X@p^AcK1{rpT8DzIKLkiq zWK6_CL?CqB==ug=k>E{a^SAe@90lF0-ikrr$)u$S2}a9z2JliQ(dw^7Tw7r)Lv4dh zClqm^bWw^Bi!vH^>QHaiwIi5_9`4<3*>{3EjNht3NxNN2RTfFWf&Dn#e!m@d64)c4 zNE4GLe+!C-6C@fIO9x7xAWpO9)2a1X_TodZGmiSPe0@$=P3$I5BPE`Fgynek>cf?( zgTl6}`(Qmc*D1l5wkKvjQ^fgj{rD4~8*-u|wtd%(G(5rp-Ezwh> znJJOP&i~r|T+pbyJ)WFk`{y859(qxy+q(X;BB*U_#}7!%kOX;cxSQi4RKkus z#G`MheLllMSoo?(M^_EvSit(cs__Ph8pSIT%C=+k7t*0B@jpGOnx&PElgQ}J&L?#~ zoO?45+u$5%)zpDWfhbUbH1gy7?74`IIc!vq~89d>I-C zqx&Q6Hwt__Ttu3{!F1)iY+U#oLSBI;$HEvT_BEfx3F)T|YxF;H2pDAQal(CCkvJVb zeN6c98m{Tsgd?AE$4bTVz(+8rrX8W@<$%I#;T6R1AjF#aN6No6Je2plq!x7GW7o1CKPKA#Pcl$&!IUyw$35|sPHveF@a(boB z)o}L>hgm2U5~OcEnqCzM)xSUM!?@EW%mQ{%u`GOF1V-stjzA?QJOvrW<}HhUbJ-a* zuz!kx(p?px-DkQ1GFvqqmB?!Dn=T_Ws2Q+d==j6@9?3}3`V5T(+<~f2gXI6qzA>PB z-8YMNH37u}&E{-3-!hU7xXsr16Bq;{a=fh5Rt@S*=ovdWY-(>Ensd6mCmYPro{Lu(C8 zx!omyX$y^x&Q9{PsctbVL9cSd@9(O?(%HaYRjl^$UY%IyaYhTEchT-{Q@zxpG|=rZ zHKBdi#4(q2(<+Qkwsv+Y>~$+bJXC+b11m)mnvg#1asde7osXY4p0?x@$&2tCW9g<4 z(d9F!GN>v{SIefb)Fs{zO@}W#e}ii169>V2k03pHPql&=9Xe{pRa}W~?Qf3U4vf$l zgkK3Ky!h0LgYK9p4sS)$2Rp^fKf?3#7~Dar$D){SAK*F6!&PyC85CMs9aqHtA6pfw znY$amYP4?g%b*>Xukq%0Is*)6wU3DuQv&m&I}OWLV1Ln}H7&BJ1$=?7-y3t=`7&_} z`L5Dv9&EU5pSTHo^U{ltowT~1_(4{W*(*)<3^-z20_ta9$;08W;c}fQvSk!;3ELJD z>A^|+s!)N?cXW7cMg~Mj$C1$eLqS|;52roTiw%|xz`R*`-F!f&*66$~t%W`Vi%lah zIS@x)O2}bW<^)@+oMXmmq6kfCGF_rny@k(eAe+MUp+vh%ZxVo%GakV0vXSur;&$0Y zf{$Z2?iBNvk|eS7ldbI_4%ga0kn#VJmR4bCTryhk3zDu}vk6|& z=&E%T&HKVA-LgoZ$}Z-|L(8jX3KfrG1JmJ2t{N`;;~P&u!$5%JAh0!zNb*PA>zGKU z7UL(R#Uqhbe#eUW3usIgMcHkKEayl#@_ym%#w>R-*iR&-D*A+n_ql_{clhulbER4X zYcp)jM>!lOMNBhTMw%U5gF?|wPu;cxBPH~&E_r$_7-!`y+(-vfSa9fMW)e@o^22=$ zT*c5i&ZR<@4lbUEB1RdxK0TfZ1a!7?*{OQc@UAzEBNpQq{3X&d8=;iBeAoBLJUNh= z#vbs62rIu={qfhu4O8CWdc+Lom%n=t{dTR~^WSet3b;+^rHMK2fx)92wazW$hr|ef z|BBBu6y3PUo(Gvh|6=y4u^zmMXG5mfOI=TEKRj&Fcw&b^D*imFSS!gHM@{@r<+$wc ztvYXZ-!x%)-X@T#Vs^3Y_wfVLfr6^Uch?rzo9|+{Zf}(VvTFQ zrB;KK-yp8?>~xna(+3*8hfZNiDan`)snCMm{h<;|FD1jOwg;7gBj1s)1)EkPlzxDI;fx#_|R`8cM0#g$O66Ln@)ixcNa0X|;qW>jK z_>Wov^8^z>ZLPNT^Ivf0p{v}JFq_Z#}I}6$w%KdWh^Kn*q7XbOt zBB#&t8sIhQSPyNoUbrgWT#@kNXu`!HIafHx^#EiuO+n2~&l4AumzewsDyJ+tD z*LzN9`u6CQZtp{MyNh&oF%kD(6N}&6B&#C`2lb_jSwGJgy3*{0*A`lq-A@SK9)yg6|A*iWzz=p+fm1}geOMz4*K~Hw|m07DEjurIx zt*O9RKcnta%4G}-*c`4pRDb7#OI@D^y@R?>$M;IGKhcb_HA(Y#Ot>z>Uti26A_t+_ z!735Yt>;JPqsUV8Z`X@L0#{G)E8;F}5xC^5o@2QkkW+5zZ>*HRn)?;y8Gii6H5Y&z zytE7He%9)F`EI@?-eKpkEQSkZ3RNMk$~!ff=HZ6?AzLFNFxX7)f%VCtAWOJhJ19TB z?sJr>Iqk^AtSig$LHXg%Az{{AXDZ^Ao(9JG_rk;vC5J`A-_qB^+?Em5AP8qhs;LDq z0vbuuO{5G@oAV+2g9-kOkD`T93U*P@+H~)5;8I!irT+}2e1!)B1m}$dtI)0Iz7Z*9 za>+5kbUvJP$YVhb0e&8`qF^|bsV3Wbdce8B2n&+sI^Q1nPyx;Kp<44d^ihY)pXjA$ zpbXI18ObOIn8n7Aawb;ffIy@v#t!Fy(F-8F>IKM;FPCQ3BapzqJ%A(?B%?o+N_Xpn zN=hVw6`cyEUJ(S9Ek$U|%g?JyIHhB57B}v}a}0%$S~U$_wT;NbM-Qf@vu&n2vEB8q zU8vFfbAk@D5W60Lxx!?yaST`gT1r_21_JBe6d6>a#q;;Wwzc3AO9m0RqXF{hA_Kk# z23;RQUK5IL@4q}iogb?nF)`31pZgeESjH|e9$H_ zyj>Ca`Kt~v;7_mR{%fp$w@*jrF#Gi}2PvaPno=3=wzGu-L9t$*rn>X0zUSWd(p7yF zw0G-xv(2-JRvx+`Jm9hyf`rMH0_f9Sk<#gQm5zAnmKqsCM zx(c|xDNBBzPs#~2v&17wnSK%r%~9YY_40ZtK+p-HhZjXyKGsi@AH>HK_o_vnEPujq zRB`9L{*Gm?qh|8rIfh^e~zq&Q&D~`FhC5Q-JK(Iy2;x=?j{-B>_^Y2t}6izmrN31u>xU#RliW zSI!H|{(ZU0{GIsG4qBjHfn#^p_AzG5lUAi4#FJRZb<@_vh*n(W=w-uXMkerFXV zcfw)yp-6XIo})W{u|r%n$UNb&p8CR(watfh7mLqou?Ki5yIg{)5{aEe@mnTH7P z|HBd?*j0DaA!2YVzMX?xr77=pAp5T#puPvzB+Q!2bw}g6dq0o=qrmCpN0#do`eY zJOE72zg4^`su41kq&~@vV_cM8$A7uh^*bsy^`e}fSG^F`N(h^g{!!f?Ijhs_r^228?xX2|Dr3`eEDdk-7!@{>Gb7y&a+oh0ad{Y2trYXbbs zHI7jf<8mI0vsjKxVb!3pCXs}oJu8&Ae}n?VYIM_FJbD`pTPuk?v?y#{t|{s{qP_z8 zaEfcg>ZZRNx`^2 zKXxI&P5{}7`B6C2CCmuMzY8Ipz@I3M;_uIR<32CxU=0h|c;%t{ zy!PjvM_=zVDs^-j^OuxoA>SX*2J#Q)7FS~MQ1TCZFN%WB2%}R0DcvRA^9SBA&rz^d zC&JRfCD3udsTEr-ggFw`?=A2{Gz9v+qT0Gh;Iag_{3Hm>e4f!?ALj-8X`!?RYEW%& z9xk_upHDc5^CT0b&w-gk5-?ErcIhc}q=a80v6tnEVu5j~l`U}I%+7Owg>%!sZNv$- z8z)@$$HRHA@uxHH^ei0^WIKh>law;qO947nE-{SGCcL)_O3cqUNa=ii6BF6n{Af%U zYYs2HmZm~;xBbfN=w`-czknk7LU}}B zL|>9~tozP2f)ofAO(S8JisfL1ozh)Gy zuO=d;QVzt?ig*qP2iGN`;XLOo?5;u)DTrxc*DEj2r%+apbVEzQ~?7 zbsA>hF=){8CA-e=spJhmigU%wzNe_Gelbt#F4d^}iuW zc+bj9*$AuJnvlytq+YBxBMpHMaDNnhKg*F)>2LrTs#cSQ*bdg3D7sX<*BE6i0qD4Y zwfxq@ruBHP39`=w$GVq$t?K)B{nHN@gw1yF0Vw96qaJ?4>}!K!M`m=$FJ6cM9HhE7 zelhcYw44c>2kQ*S#&@Tdipof62;(w+3uozlcvX3_SclogI*T3%ZiTP73&0{FTTBI$ zR^GOv)BAdr4&1NJE_H8*^&y+cSJ%m%`W=p}zu@+o?~bu&0V!p!a1Z5I+}=$�o3P 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%0D)Q$o|0p1JoT>zn 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 z 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 Z=~SzbR=O1*I1czvQBL(@-h~@}{|h{@=7<0Q From 2dd6be59b9d09f639efd91569f42c6dcf826c428 Mon Sep 17 00:00:00 2001 From: Matt Keeler <19890779+mattkeeler@users.noreply.github.com> Date: Wed, 28 May 2025 03:05:00 -0400 Subject: [PATCH 19/24] fix(m365): add compliantDevice grant control support (#7844) --- prowler/providers/m365/services/entra/entra_service.py | 1 + .../azure/services/entra/entra_service_test.py | 4 ++-- .../services/entra/microsoft365_entra_service_test.py | 10 ++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/prowler/providers/m365/services/entra/entra_service.py b/prowler/providers/m365/services/entra/entra_service.py index b14f82b03c..05e152bf2d 100644 --- a/prowler/providers/m365/services/entra/entra_service.py +++ b/prowler/providers/m365/services/entra/entra_service.py @@ -493,6 +493,7 @@ class ConditionalAccessGrantControl(Enum): BLOCK = "block" DOMAIN_JOINED_DEVICE = "domainJoinedDevice" PASSWORD_CHANGE = "passwordChange" + COMPLIANT_DEVICE = "compliantDevice" class GrantControlOperator(Enum): diff --git a/tests/providers/azure/services/entra/entra_service_test.py b/tests/providers/azure/services/entra/entra_service_test.py index b09b6edaa4..11cd49b40c 100644 --- a/tests/providers/azure/services/entra/entra_service_test.py +++ b/tests/providers/azure/services/entra/entra_service_test.py @@ -93,7 +93,7 @@ async def mock_entra_get_conditional_access_policy(_): "include": ["797f4846-ba00-4fd7-ba43-dac1f8f63013"], "exclude": [], }, - access_controls={"grant": ["MFA"], "block": []}, + access_controls={"grant": ["MFA", "compliantDevice"], "block": []}, ) } } @@ -216,7 +216,7 @@ class Test_Entra_Service: ) assert entra_client.conditional_access_policy[DOMAIN]["id-1"].access_controls[ "grant" - ] == ["MFA"] + ] == ["MFA", "compliantDevice"] assert ( entra_client.conditional_access_policy[DOMAIN]["id-1"].access_controls[ "block" diff --git a/tests/providers/m365/services/entra/microsoft365_entra_service_test.py b/tests/providers/m365/services/entra/microsoft365_entra_service_test.py index 46e92aa1f1..defe476e4b 100644 --- a/tests/providers/m365/services/entra/microsoft365_entra_service_test.py +++ b/tests/providers/m365/services/entra/microsoft365_entra_service_test.py @@ -68,7 +68,10 @@ async def mock_entra_get_conditional_access_policies(_): ), ), grant_controls=GrantControls( - built_in_controls=[ConditionalAccessGrantControl.BLOCK], + built_in_controls=[ + ConditionalAccessGrantControl.BLOCK, + ConditionalAccessGrantControl.COMPLIANT_DEVICE, + ], operator=GrantControlOperator.OR, authentication_strength=AuthenticationStrength.PHISHING_RESISTANT_MFA, ), @@ -211,7 +214,10 @@ class Test_Entra_Service: ), ), grant_controls=GrantControls( - built_in_controls=[ConditionalAccessGrantControl.BLOCK], + built_in_controls=[ + ConditionalAccessGrantControl.BLOCK, + ConditionalAccessGrantControl.COMPLIANT_DEVICE, + ], operator=GrantControlOperator.OR, authentication_strength=AuthenticationStrength.PHISHING_RESISTANT_MFA, ), From df8aacd09d58590aaf4ce8d71dc7581a62780971 Mon Sep 17 00:00:00 2001 From: sumit-tft <70506234+sumit-tft@users.noreply.github.com> Date: Wed, 28 May 2025 13:21:28 +0530 Subject: [PATCH 20/24] fix(ui): Added missing icons (kisa, prowlerThreat) on compliance page (#7860) --- ui/CHANGELOG.md | 1 + .../icons/compliance/IconCompliance.tsx | 8 + ui/components/icons/compliance/kisa.svg | 439 ++++++++++++++++++ .../icons/compliance/prowlerThreat.svg | 16 + 4 files changed, 464 insertions(+) create mode 100644 ui/components/icons/compliance/kisa.svg create mode 100644 ui/components/icons/compliance/prowlerThreat.svg diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index 6ba9950320..443c6bbe03 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to the **Prowler UI** are documented in this file. - Possibility to edit the organization name. [(#7829)](https://github.com/prowler-cloud/prowler/pull/7829) - Add `Provider UID` filter to scans page. [(#7820)](https://github.com/prowler-cloud/prowler/pull/7820) - Download report behaviour updated to show feedback based on API response. [(#7758)](https://github.com/prowler-cloud/prowler/pull/7758) +- Missing KISA and ProwlerThreat icons added to the compliance page. [(#7860)(https://github.com/prowler-cloud/prowler/pull/7860)] --- diff --git a/ui/components/icons/compliance/IconCompliance.tsx b/ui/components/icons/compliance/IconCompliance.tsx index 543f6c68c8..304fe091b4 100644 --- a/ui/components/icons/compliance/IconCompliance.tsx +++ b/ui/components/icons/compliance/IconCompliance.tsx @@ -8,9 +8,11 @@ import GDPRLogo from "./gdpr.svg"; import GxPLogo from "./gxp-aws.svg"; import HIPAALogo from "./hipaa.svg"; import ISOLogo from "./iso-27001.svg"; +import KISALogo from "./kisa.svg"; import MITRELogo from "./mitre-attack.svg"; import NISTLogo from "./nist.svg"; import PCILogo from "./pci-dss.svg"; +import PROWLERTHREATLogo from "./prowlerThreat.svg"; import RBILogo from "./rbi.svg"; import SOC2Logo from "./soc2.svg"; @@ -60,4 +62,10 @@ export const getComplianceIcon = (complianceTitle: string) => { if (complianceTitle.toLowerCase().includes("soc2")) { return SOC2Logo; } + if (complianceTitle.toLowerCase().includes("kisa")) { + return KISALogo; + } + if (complianceTitle.toLowerCase().includes("prowlerthreatscore")) { + return PROWLERTHREATLogo; + } }; diff --git a/ui/components/icons/compliance/kisa.svg b/ui/components/icons/compliance/kisa.svg new file mode 100644 index 0000000000..8450a6566d --- /dev/null +++ b/ui/components/icons/compliance/kisa.svg @@ -0,0 +1,439 @@ + +Created with Fabric.js 5.2.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/components/icons/compliance/prowlerThreat.svg b/ui/components/icons/compliance/prowlerThreat.svg new file mode 100644 index 0000000000..f14d50c323 --- /dev/null +++ b/ui/components/icons/compliance/prowlerThreat.svg @@ -0,0 +1,16 @@ + + + + + + + + From c2e54bbbcc2f1ec6661b2aa53fdbea9de930f699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Mart=C3=ADn?= Date: Wed, 28 May 2025 10:03:20 +0200 Subject: [PATCH 21/24] fix(threatscore): remove compliance name in tests to remove dummy files (#7859) Co-authored-by: Sergio Garcia --- tests/lib/outputs/compliance/fixtures.py | 4 ---- .../prowler_threatscore_aws_test.py | 13 +++---------- .../prowler_threatscore_azure_test.py | 13 +++---------- .../prowler_threatscore_gcp_test.py | 13 +++---------- .../prowler_threatscore_m365_test.py | 13 +++---------- 5 files changed, 12 insertions(+), 44 deletions(-) diff --git a/tests/lib/outputs/compliance/fixtures.py b/tests/lib/outputs/compliance/fixtures.py index ddf25ad661..c656165195 100644 --- a/tests/lib/outputs/compliance/fixtures.py +++ b/tests/lib/outputs/compliance/fixtures.py @@ -857,7 +857,6 @@ KISA_ISMSP_AWS = Compliance( ], ) -PROWLER_THREATSCORE_AWS_NAME = "prowler_threatscore_aws" PROWLER_THREATSCORE_AWS = Compliance( Framework="ProwlerThreatScore", Version="1.0", @@ -901,7 +900,6 @@ PROWLER_THREATSCORE_AWS = Compliance( ], ) -PROWLER_THREATSCORE_AZURE_NAME = "prowler_threatscore_azure" PROWLER_THREATSCORE_AZURE = Compliance( Framework="ProwlerThreatScore", Version="1.0", @@ -945,7 +943,6 @@ PROWLER_THREATSCORE_AZURE = Compliance( ], ) -PROWLER_THREATSCORE_GCP_NAME = "prowler_threatscore_gcp" PROWLER_THREATSCORE_GCP = Compliance( Framework="ProwlerThreatScore", Version="1.0", @@ -989,7 +986,6 @@ PROWLER_THREATSCORE_GCP = Compliance( ], ) -PROWLER_THREATSCORE_M365_NAME = "prowler_threatscore_m365" PROWLER_THREATSCORE_M365 = Compliance( Framework="ProwlerThreatScore", Version="1.0", diff --git a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws_test.py b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws_test.py index b4771b6139..bae12554ee 100644 --- a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws_test.py +++ b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws_test.py @@ -10,10 +10,7 @@ from prowler.lib.outputs.compliance.prowler_threatscore.models import ( from prowler.lib.outputs.compliance.prowler_threatscore.prowler_threatscore_aws import ( ProwlerThreatScoreAWS, ) -from tests.lib.outputs.compliance.fixtures import ( - PROWLER_THREATSCORE_AWS, - PROWLER_THREATSCORE_AWS_NAME, -) +from tests.lib.outputs.compliance.fixtures import PROWLER_THREATSCORE_AWS from tests.lib.outputs.fixtures.fixtures import generate_finding_output from tests.providers.aws.utils import AWS_ACCOUNT_NUMBER, AWS_REGION_EU_WEST_1 @@ -24,9 +21,7 @@ class TestProwlerThreatScoreAWS: generate_finding_output(compliance={"ProwlerThreatScore-1.0": "1.1.1"}) ] - output = ProwlerThreatScoreAWS( - findings, PROWLER_THREATSCORE_AWS, PROWLER_THREATSCORE_AWS_NAME - ) + output = ProwlerThreatScoreAWS(findings, PROWLER_THREATSCORE_AWS) output_data = output.data[0] assert isinstance(output_data, ProwlerThreatScoreAWSModel) assert output_data.Provider == "aws" @@ -134,9 +129,7 @@ class TestProwlerThreatScoreAWS: findings = [ generate_finding_output(compliance={"ProwlerThreatScore-1.0": "1.1.1"}) ] - output = ProwlerThreatScoreAWS( - findings, PROWLER_THREATSCORE_AWS, PROWLER_THREATSCORE_AWS_NAME - ) + output = ProwlerThreatScoreAWS(findings, PROWLER_THREATSCORE_AWS) output._file_descriptor = mock_file with patch.object(mock_file, "close", return_value=None): diff --git a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure_test.py b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure_test.py index 64b79acb9e..d259641967 100644 --- a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure_test.py +++ b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure_test.py @@ -10,10 +10,7 @@ from prowler.lib.outputs.compliance.prowler_threatscore.models import ( from prowler.lib.outputs.compliance.prowler_threatscore.prowler_threatscore_azure import ( ProwlerThreatScoreAzure, ) -from tests.lib.outputs.compliance.fixtures import ( - PROWLER_THREATSCORE_AZURE, - PROWLER_THREATSCORE_AZURE_NAME, -) +from tests.lib.outputs.compliance.fixtures import PROWLER_THREATSCORE_AZURE from tests.lib.outputs.fixtures.fixtures import generate_finding_output from tests.providers.azure.azure_fixtures import ( AZURE_SUBSCRIPTION_ID, @@ -33,9 +30,7 @@ class TestProwlerThreatScoreAzure: ) ] - output = ProwlerThreatScoreAzure( - findings, PROWLER_THREATSCORE_AZURE, PROWLER_THREATSCORE_AZURE_NAME - ) + output = ProwlerThreatScoreAzure(findings, PROWLER_THREATSCORE_AZURE) output_data = output.data[0] assert isinstance(output_data, ProwlerThreatScoreAzureModel) assert output_data.Provider == "azure" @@ -144,9 +139,7 @@ class TestProwlerThreatScoreAzure: findings = [ generate_finding_output(compliance={"ProwlerThreatScore-1.0": "1.1.1"}) ] - output = ProwlerThreatScoreAzure( - findings, PROWLER_THREATSCORE_AZURE, PROWLER_THREATSCORE_AZURE_NAME - ) + output = ProwlerThreatScoreAzure(findings, PROWLER_THREATSCORE_AZURE) output._file_descriptor = mock_file with patch.object(mock_file, "close", return_value=None): diff --git a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp_test.py b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp_test.py index 4727cc748c..5318392ea3 100644 --- a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp_test.py +++ b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp_test.py @@ -10,10 +10,7 @@ from prowler.lib.outputs.compliance.prowler_threatscore.models import ( from prowler.lib.outputs.compliance.prowler_threatscore.prowler_threatscore_gcp import ( ProwlerThreatScoreGCP, ) -from tests.lib.outputs.compliance.fixtures import ( - PROWLER_THREATSCORE_GCP, - PROWLER_THREATSCORE_GCP_NAME, -) +from tests.lib.outputs.compliance.fixtures import PROWLER_THREATSCORE_GCP from tests.lib.outputs.fixtures.fixtures import generate_finding_output from tests.providers.gcp.gcp_fixtures import GCP_PROJECT_ID @@ -30,9 +27,7 @@ class TestProwlerThreatScoreGCP: ) ] - output = ProwlerThreatScoreGCP( - findings, PROWLER_THREATSCORE_GCP, PROWLER_THREATSCORE_GCP_NAME - ) + output = ProwlerThreatScoreGCP(findings, PROWLER_THREATSCORE_GCP) output_data = output.data[0] assert isinstance(output_data, ProwlerThreatScoreGCPModel) assert output_data.Provider == "gcp" @@ -140,9 +135,7 @@ class TestProwlerThreatScoreGCP: findings = [ generate_finding_output(compliance={"ProwlerThreatScore-1.0": "1.1.1"}) ] - output = ProwlerThreatScoreGCP( - findings, PROWLER_THREATSCORE_GCP, PROWLER_THREATSCORE_GCP_NAME - ) + output = ProwlerThreatScoreGCP(findings, PROWLER_THREATSCORE_GCP) output._file_descriptor = mock_file with patch.object(mock_file, "close", return_value=None): diff --git a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365_test.py b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365_test.py index ea0b3e529f..fa43a336ec 100644 --- a/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365_test.py +++ b/tests/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365_test.py @@ -10,10 +10,7 @@ from prowler.lib.outputs.compliance.prowler_threatscore.models import ( from prowler.lib.outputs.compliance.prowler_threatscore.prowler_threatscore_m365 import ( ProwlerThreatScoreM365, ) -from tests.lib.outputs.compliance.fixtures import ( - PROWLER_THREATSCORE_M365, - PROWLER_THREATSCORE_M365_NAME, -) +from tests.lib.outputs.compliance.fixtures import PROWLER_THREATSCORE_M365 from tests.lib.outputs.fixtures.fixtures import generate_finding_output from tests.providers.m365.m365_fixtures import TENANT_ID @@ -30,9 +27,7 @@ class TestProwlerThreatScoreM365: ) ] - output = ProwlerThreatScoreM365( - findings, PROWLER_THREATSCORE_M365, PROWLER_THREATSCORE_M365_NAME - ) + output = ProwlerThreatScoreM365(findings, PROWLER_THREATSCORE_M365) output_data = output.data[0] assert isinstance(output_data, ProwlerThreatScoreM365Model) assert output_data.Provider == "m365" @@ -142,9 +137,7 @@ class TestProwlerThreatScoreM365: findings = [ generate_finding_output(compliance={"ProwlerThreatScore-1.0": "1.1.1"}) ] - output = ProwlerThreatScoreM365( - findings, PROWLER_THREATSCORE_M365, PROWLER_THREATSCORE_M365_NAME - ) + output = ProwlerThreatScoreM365(findings, PROWLER_THREATSCORE_M365) output._file_descriptor = mock_file with patch.object(mock_file, "close", return_value=None): From 41f6637497cee4bd2b5c22ec4809f9f6d537a53a Mon Sep 17 00:00:00 2001 From: Daniel Barranquero <74871504+danibarranqueroo@users.noreply.github.com> Date: Wed, 28 May 2025 10:32:44 +0200 Subject: [PATCH 22/24] fix(defender): update `defender_ensure_notify_alerts_severity_is_high` logic (#7862) Co-authored-by: MrCloudSec --- prowler/CHANGELOG.md | 1 + ...tify_alerts_severity_is_high.metadata.json | 10 ++-- ...r_ensure_notify_alerts_severity_is_high.py | 13 +++-- ...ure_notify_alerts_severity_is_high_test.py | 54 +++++++++++++++++-- 4 files changed, 63 insertions(+), 15 deletions(-) diff --git a/prowler/CHANGELOG.md b/prowler/CHANGELOG.md index 741a89f2aa..583c2a09b0 100644 --- a/prowler/CHANGELOG.md +++ b/prowler/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to the **Prowler SDK** are documented in this file. - Fix `m365_powershell test_credentials` to use sanitized credentials. [(#7761)](https://github.com/prowler-cloud/prowler/pull/7761) - Fix `admincenter_users_admins_reduced_license_footprint` check logic to pass when admin user has no license. [(#7779)](https://github.com/prowler-cloud/prowler/pull/7779) - Fix `m365_powershell` to close the PowerShell sessions in msgraph services. [(#7816)](https://github.com/prowler-cloud/prowler/pull/7816) +- Fix `defender_ensure_notify_alerts_severity_is_high`check to accept high or lower severity. [(#7862)](https://github.com/prowler-cloud/prowler/pull/7862) --- diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json index 20fc3d837c..d8a4f1812b 100644 --- a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json @@ -1,16 +1,16 @@ { "Provider": "azure", "CheckID": "defender_ensure_notify_alerts_severity_is_high", - "CheckTitle": "Ensure That 'Notify about alerts with the following severity' is Set to 'High'", + "CheckTitle": "Ensure that email notifications are configured for alerts with a minimum severity of 'High' or lower", "CheckType": [], "ServiceName": "defender", "SubServiceName": "", "ResourceIdTemplate": "", "Severity": "high", "ResourceType": "AzureEmailNotifications", - "Description": "Microsoft Defender for Cloud emails the subscription owners whenever a high-severity alert is triggered for their subscription. You should provide a security contact email address as an additional email address.", - "Risk": "Microsoft Defender for Cloud emails the Subscription Owner to notify them about security alerts. Adding your Security Contact's email address to the 'Additional email addresses' field ensures that your organization's Security Team is included in these alerts. This ensures that the proper people are aware of any potential compromise in order to mitigate the risk in a timely fashion.", - "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security-center/security-center-provide-security-contact-details", + "Description": "Microsoft Defender for Cloud sends email notifications when alerts of a certain severity level or higher are triggered. By setting the minimum severity to 'High', 'Medium', or even 'Low', you ensure that alerts with equal or greater severity (e.g., High or Critical) are still delivered. Selecting a lower threshold like 'Low' results in more comprehensive alert coverage.", + "Risk": "If this setting is too restrictive (e.g., set to 'Critical' only), important security alerts with 'High' or 'Medium' severity might be missed. Ensuring that 'High' or a lower threshold is configured helps security teams stay informed about significant threats and respond in a timely manner.", + "RelatedUrl": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/email-notifications-alerts#manage-notifications-on-email", "Remediation": { "Code": { "CLI": "", @@ -19,7 +19,7 @@ "Terraform": "https://docs.prowler.com/checks/azure/azure-general-policies/bc_azr_general_4#terraform" }, "Recommendation": { - "Text": "1. From Azure Home select the Portal Menu 2. Select Microsoft Defender for Cloud 3. Click on Environment Settings 4. Click on the appropriate Management Group, Subscription, or Workspace 5. Click on Email notifications 6. Enter a valid security contact email address (or multiple addresses separated by commas) in the Additional email addresses field 7. Click Save", + "Text": "1. From Azure Home select the Portal Menu. 2. Select Microsoft Defender for Cloud. 3. Click on Environment Settings. 4. Click on the appropriate Management Group, Subscription, or Workspace. 5. Click on Email notifications. 6. Under 'Notify about alerts with the following severity (or higher)', select at least 'High' (or optionally 'Medium' or 'Low' for broader coverage). 7. Click Save.", "Url": "https://docs.microsoft.com/en-us/rest/api/securitycenter/securitycontacts/list" } }, diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py index b7154e99aa..34eaab9624 100644 --- a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py @@ -13,12 +13,15 @@ class defender_ensure_notify_alerts_severity_is_high(Check): for contact in security_contacts.values(): report = Check_Report_Azure(metadata=self.metadata(), resource=contact) report.subscription = subscription_name - report.status = "PASS" - report.status_extended = f"Notifiy alerts are enabled for severity high in subscription {subscription_name}." + report.status = "FAIL" + report.status_extended = f"Notifications are not enabled for alerts with a minimum severity of high or lower in subscription {subscription_name}." - if contact.alert_notifications_minimal_severity != "High": - report.status = "FAIL" - report.status_extended = f"Notifiy alerts are not enabled for severity high in subscription {subscription_name}." + if ( + contact.alert_notifications_minimal_severity != "Critical" + and contact.alert_notifications_minimal_severity != "" + ): + report.status = "PASS" + report.status_extended = f"Notifications are enabled for alerts with a minimum severity of high or lower ({contact.alert_notifications_minimal_severity}) in subscription {subscription_name}." findings.append(report) diff --git a/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py b/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py index a2764139c6..23aadef795 100644 --- a/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py +++ b/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py @@ -31,7 +31,7 @@ class Test_defender_ensure_notify_alerts_severity_is_high: result = check.execute() assert len(result) == 0 - def test_defender_severity_alerts_low(self): + def test_defender_severity_alerts_critical(self): resource_id = str(uuid4()) defender_client = mock.MagicMock defender_client.security_contacts = { @@ -41,7 +41,7 @@ class Test_defender_ensure_notify_alerts_severity_is_high: name="default", emails="", phone="", - alert_notifications_minimal_severity="Low", + alert_notifications_minimal_severity="Critical", alert_notifications_state="On", notified_roles=["Contributor"], notified_roles_state="On", @@ -69,7 +69,7 @@ class Test_defender_ensure_notify_alerts_severity_is_high: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Notifiy alerts are not enabled for severity high in subscription {AZURE_SUBSCRIPTION_ID}." + == f"Notifications are not enabled for alerts with a minimum severity of high or lower in subscription {AZURE_SUBSCRIPTION_ID}." ) assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == "default" @@ -113,7 +113,51 @@ class Test_defender_ensure_notify_alerts_severity_is_high: assert result[0].status == "PASS" assert ( result[0].status_extended - == f"Notifiy alerts are enabled for severity high in subscription {AZURE_SUBSCRIPTION_ID}." + == f"Notifications are enabled for alerts with a minimum severity of high or lower (High) in subscription {AZURE_SUBSCRIPTION_ID}." + ) + assert result[0].subscription == AZURE_SUBSCRIPTION_ID + assert result[0].resource_name == "default" + assert result[0].resource_id == resource_id + + def test_defender_severity_alerts_low(self): + resource_id = str(uuid4()) + defender_client = mock.MagicMock + defender_client.security_contacts = { + AZURE_SUBSCRIPTION_ID: { + resource_id: SecurityContacts( + resource_id=resource_id, + name="default", + emails="", + phone="", + alert_notifications_minimal_severity="Low", + alert_notifications_state="On", + notified_roles=["Contributor"], + notified_roles_state="On", + ) + } + } + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_azure_provider(), + ), + mock.patch( + "prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high.defender_client", + new=defender_client, + ), + ): + from prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high import ( + defender_ensure_notify_alerts_severity_is_high, + ) + + check = defender_ensure_notify_alerts_severity_is_high() + result = check.execute() + assert len(result) == 1 + assert result[0].status == "PASS" + assert ( + result[0].status_extended + == f"Notifications are enabled for alerts with a minimum severity of high or lower (Low) in subscription {AZURE_SUBSCRIPTION_ID}." ) assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == "default" @@ -156,7 +200,7 @@ class Test_defender_ensure_notify_alerts_severity_is_high: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Notifiy alerts are not enabled for severity high in subscription {AZURE_SUBSCRIPTION_ID}." + == f"Notifications are not enabled for alerts with a minimum severity of high or lower in subscription {AZURE_SUBSCRIPTION_ID}." ) assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == "default" From 2d71cef3d598363926d4f8e599840caec132f204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Mart=C3=ADn?= Date: Wed, 28 May 2025 11:35:40 +0200 Subject: [PATCH 23/24] feat(azure): add NIS 2 compliance framework (#7857) --- README.md | 2 +- dashboard/compliance/nis2_azure.py | 43 + prowler/CHANGELOG.md | 1 + prowler/compliance/azure/nis2_azure.json | 1898 + .../icons/compliance/IconCompliance.tsx | 4 + ui/components/icons/compliance/nis2.svg | 28966 ++++++++++++++++ 6 files changed, 30913 insertions(+), 1 deletion(-) create mode 100644 dashboard/compliance/nis2_azure.py create mode 100644 prowler/compliance/azure/nis2_azure.json create mode 100644 ui/components/icons/compliance/nis2.svg diff --git a/README.md b/README.md index 1219983bdf..8702e8f675 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ prowler dashboard |---|---|---|---|---| | AWS | 567 | 82 | 36 | 10 | | GCP | 79 | 13 | 9 | 3 | -| Azure | 142 | 18 | 9 | 3 | +| Azure | 142 | 18 | 10 | 3 | | Kubernetes | 83 | 7 | 5 | 7 | | GitHub | 16 | 2 | 1 | 0 | | M365 | 69 | 7 | 2 | 2 | diff --git a/dashboard/compliance/nis2_azure.py b/dashboard/compliance/nis2_azure.py new file mode 100644 index 0000000000..8baac9a9a5 --- /dev/null +++ b/dashboard/compliance/nis2_azure.py @@ -0,0 +1,43 @@ +import warnings + +from dashboard.common_methods import get_section_containers_3_levels + +warnings.filterwarnings("ignore") + + +def get_table(data): + data["REQUIREMENTS_DESCRIPTION"] = ( + data["REQUIREMENTS_ID"] + " - " + data["REQUIREMENTS_DESCRIPTION"] + ) + + data["REQUIREMENTS_DESCRIPTION"] = data["REQUIREMENTS_DESCRIPTION"].apply( + lambda x: x[:150] + "..." if len(str(x)) > 150 else x + ) + + data["REQUIREMENTS_ATTRIBUTES_SECTION"] = data[ + "REQUIREMENTS_ATTRIBUTES_SECTION" + ].apply(lambda x: x[:80] + "..." if len(str(x)) > 80 else x) + + data["REQUIREMENTS_ATTRIBUTES_SUBSECTION"] = data[ + "REQUIREMENTS_ATTRIBUTES_SUBSECTION" + ].apply(lambda x: x[:150] + "..." if len(str(x)) > 150 else x) + + aux = data[ + [ + "REQUIREMENTS_DESCRIPTION", + "REQUIREMENTS_ATTRIBUTES_SECTION", + "REQUIREMENTS_ATTRIBUTES_SUBSECTION", + "CHECKID", + "STATUS", + "REGION", + "ACCOUNTID", + "RESOURCEID", + ] + ] + + return get_section_containers_3_levels( + aux, + "REQUIREMENTS_ATTRIBUTES_SECTION", + "REQUIREMENTS_ATTRIBUTES_SUBSECTION", + "REQUIREMENTS_DESCRIPTION", + ) diff --git a/prowler/CHANGELOG.md b/prowler/CHANGELOG.md index 583c2a09b0..ccf9fb4a7b 100644 --- a/prowler/CHANGELOG.md +++ b/prowler/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to the **Prowler SDK** are documented in this file. - Add `repository_secret_scanning_enabled` check for GitHub provider. [(#7759)](https://github.com/prowler-cloud/prowler/pull/7759) - Add `repository_default_branch_requires_codeowners_review` check for GitHub provider. [(#7753)](https://github.com/prowler-cloud/prowler/pull/7753) - Add NIS 2 compliance framework for AWS. [(7839)](https://github.com/prowler-cloud/prowler/pull/7839) +- Add NIS 2 compliance framework for Azure. [(7857)](https://github.com/prowler-cloud/prowler/pull/7857) ### Fixed - Fix `m365_powershell test_credentials` to use sanitized credentials. [(#7761)](https://github.com/prowler-cloud/prowler/pull/7761) diff --git a/prowler/compliance/azure/nis2_azure.json b/prowler/compliance/azure/nis2_azure.json new file mode 100644 index 0000000000..d3a350bfc7 --- /dev/null +++ b/prowler/compliance/azure/nis2_azure.json @@ -0,0 +1,1898 @@ +{ + "Framework": "NIS2", + "Version": "", + "Provider": "Azure", + "Description": "ANNEX to the Commission Implementing Regulation laying down rules for the application of Directive (EU) 2022/2555 as regards technical and methodological requirements of cybersecurity risk-management measures and further specification of the cases in which an incident is considered to be significant with regard to DNS service providers, TLD name registries, cloud computing service providers, data centre service providers, content delivery network providers, managed service providers, managed security service providers, providers of online market places, of online search engines and of social networking services platforms, and trust service providers", + "Requirements": [ + { + "Id": "1.1.1.a", + "Description": "set out the relevant entities approach to managing the security of their network and information systems;", + "Checks": [ + "storage_ensure_private_endpoints_in_storage_accounts" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.1.1.c", + "Description": "set out network and information security objectives;", + "Checks": [ + "network_flow_log_more_than_90_days", + "network_http_internet_access_restricted", + "storage_ensure_private_endpoints_in_storage_accounts" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.1 Policy on the security of network and information systems", + "Service": "generic" + } + ] + }, + { + "Id": "1.2.1", + "Description": "As part of their policy on the security of network and information systems referred to in point 1.1., the relevant entities shall lay down responsibilities and authorities for network and information system security and assign them to roles, allocate them according to the relevant entities needs, and communicate them to the management bodies.", + "Checks": [ + "aks_network_policy_enabled", + "network_http_internet_access_restricted", + "storage_default_network_access_rule_is_denied" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "generic" + } + ] + }, + { + "Id": "1.2.4", + "Description": "Depending on the size of the relevant entities, network and information system security shall be covered by dedicated roles or duties carried out in addition to existing roles.", + "Checks": [ + "sqlserver_azuread_administrator_enabled", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "1 POLICY ON THE SECURITY OF NETWORK AND INFORMATION SYSTEMS (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "1.2 Roles, responsibilities and authorities", + "Service": "sqlserver" + } + ] + }, + { + "Id": "2.1.2.f", + "Description": "evaluate the identified risks based on the risk criteria;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_rbac_key_expiration_set" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "keyvault" + } + ] + }, + { + "Id": "2.1.2.g", + "Description": "identify and prioritise appropriate risk treatment options and measures;", + "Checks": [ + "aisearch_service_not_publicly_accessible", + "aks_cluster_rbac_enabled", + "aks_clusters_created_with_private_nodes", + "aks_clusters_public_access_disabled", + "aks_network_policy_enabled", + "app_ensure_auth_is_set_up", + "app_ensure_http_is_redirected_to_https", + "app_function_access_keys_configured", + "app_function_application_insights_enabled", + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_function_latest_runtime_version", + "app_function_not_publicly_accessible", + "app_function_vnet_integration_enabled", + "app_http_logs_enabled", + "app_minimum_tls_version_12", + "app_register_with_identity", + "containerregistry_admin_user_disabled", + "containerregistry_not_publicly_accessible", + "cosmosdb_account_firewall_use_selected_networks", + "cosmosdb_account_use_aad_and_rbac", + "cosmosdb_account_use_private_endpoints" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.h", + "Description": "continuously monitor the implementation of the risk treatment measures;", + "Checks": [ + "app_http_logs_enabled", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "keyvault_logging_enabled", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private", + "mysql_flexible_server_audit_log_connection_activated", + "mysql_flexible_server_audit_log_enabled", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_checkpoints_on", + "postgresql_flexible_server_log_connections_on", + "postgresql_flexible_server_log_disconnections_on", + "postgresql_flexible_server_log_retention_days_greater_3" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "generic" + } + ] + }, + { + "Id": "2.1.2.i", + "Description": "identify who is responsible for implementing the risk treatment measures and when they should be implemented;", + "Checks": [ + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_register_with_identity" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.1 Risk management framework", + "Service": "app" + } + ] + }, + { + "Id": "2.2.1", + "Description": "The relevant entities shall regularly review the compliance with their policies on network and information system security, topic-specific policies, rules, and standards. The management bodies shall be informed of the status of network and information security on the basis of the compliance reviews by means of regular reporting.", + "Checks": [ + "sqlserver_va_scan_reports_configured", + "defender_container_images_scan_enabled", + "sqlserver_va_periodic_recurring_scans_enabled" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.2 Compliance monitoring", + "Service": "generic" + } + ] + }, + { + "Id": "2.2.3", + "Description": "The relevant entities shall perform the compliance monitoring at planned intervals and when significant incidents or significant changes to operations or risks occur.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr", + "monitor_diagnostic_setting_with_appropriate_categories", + "monitor_diagnostic_settings_exists" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.2 Compliance monitoring", + "Service": "monitor" + } + ] + }, + { + "Id": "2.3.1", + "Description": "The relevant entities shall review independently their approach to managing network and information system security and its implementation including people, processes and technologies.", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "entra_policy_guest_users_access_restrictions", + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_user_consent_for_verified_apps", + "entra_privileged_user_has_mfa", + "entra_security_defaults_enabled", + "entra_trusted_named_locations_exists", + "entra_user_with_vm_access_has_mfa", + "entra_users_cannot_create_microsoft_365_groups", + "aks_network_policy_enabled", + "network_bastion_host_exists", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "network_http_internet_access_restricted", + "network_public_ip_shodan", + "network_rdp_internet_access_restricted", + "network_ssh_internet_access_restricted", + "network_udp_internet_access_restricted", + "network_watcher_enabled", + "storage_default_network_access_rule_is_denied" + ], + "Attributes": [ + { + "Section": "2 RISK MANAGEMENT POLICY (ARTICLE 21(2), POINT (A) OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "2.3 Independent review of information and network security", + "Service": "generic" + } + ] + }, + { + "Id": "3.1.1", + "Description": "For the purpose of Article 21(2), point (b) of Directive (EU) 2022/2555, the relevant entities shall establish and implement an incident handling policy laying down the roles, responsibilities, and procedures for detecting, analysing, containing or responding to, recovering from, documenting and reporting of incidents in a timely manner.", + "Checks": [ + "sqlserver_va_scan_reports_configured" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "sqlserver" + } + ] + }, + { + "Id": "3.1.2.c", + "Description": "assignment of roles to detect and appropriately respond to incidents to competent employees;", + "Checks": [ + "defender_ensure_notify_emails_to_owners", + "defender_additional_email_configured_with_a_security_contact", + "defender_ensure_notify_alerts_severity_is_high" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "defender" + } + ] + }, + { + "Id": "3.1.2.d", + "Description": "documents to be used in the course of incident detection and response such as incident response manuals, escalation charts, contact lists and templates.", + "Checks": [ + "defender_auto_provisioning_log_analytics_agent_vms_on", + "defender_auto_provisioning_vulnerabilty_assessments_machines_on", + "defender_container_images_resolved_vulnerabilities", + "defender_container_images_scan_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "defender" + } + ] + }, + { + "Id": "3.1.3", + "Description": "The roles, responsibilities and procedures laid down in the policy shall be tested and reviewed and, where appropriate, updated at planned intervals and after significant incidents or significant changes to operations or risks.", + "Checks": [ + "defender_ensure_notify_emails_to_owners", + "defender_ensure_notify_alerts_severity_is_high", + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "entra_policy_guest_users_access_restrictions", + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_user_consent_for_verified_apps", + "entra_privileged_user_has_mfa", + "entra_security_defaults_enabled", + "entra_trusted_named_locations_exists", + "entra_user_with_vm_access_has_mfa", + "entra_users_cannot_create_microsoft_365_groups" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.1 Incident handling policy", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.1", + "Description": "The relevant entities shall lay down procedures and use tools to monitor and log activities on their network and information systems to detect events that could be considered as incidents and respond accordingly to mitigate the impact.", + "Checks": [ + "app_http_logs_enabled", + "keyvault_logging_enabled", + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr", + "monitor_diagnostic_setting_with_appropriate_categories", + "monitor_diagnostic_settings_exists", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.2", + "Description": "To the extent feasible, monitoring shall be automated and carried out either continuously or in periodic intervals, subject to business capabilities. The relevant entities shall implement their monitoring activities in a way which minimises false positives and false negatives.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr", + "monitor_diagnostic_setting_with_appropriate_categories", + "monitor_diagnostic_settings_exists", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "monitor" + } + ] + }, + { + "Id": "3.2.3.a", + "Description": "relevant outbound and inbound network traffic;", + "Checks": [ + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.b", + "Description": "creation, modification or deletion of users of the relevant entities network and information systems and extension of the permissions;", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "monitor_alert_create_policy_assignment", + "monitor_alert_delete_policy_assignment", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private", + "monitor_diagnostic_settings_exists" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.c", + "Description": "access to systems and applications;", + "Checks": [ + "app_http_logs_enabled", + "keyvault_logging_enabled", + "monitor_diagnostic_settings_exists", + "monitor_diagnostic_setting_with_appropriate_categories", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "mysql_flexible_server_audit_log_connection_activated", + "mysql_flexible_server_audit_log_enabled", + "postgresql_flexible_server_log_connections_on", + "postgresql_flexible_server_log_disconnections_on" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.d", + "Description": "authentication-related events;", + "Checks": [ + "network_flow_log_captured_sent", + "mysql_flexible_server_audit_log_connection_activated", + "keyvault_logging_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.e", + "Description": "all privileged access to systems and applications, and activities performed by administrative accounts;", + "Checks": [ + "app_http_logs_enabled", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "keyvault_logging_enabled", + "postgresql_flexible_server_log_connections_on", + "postgresql_flexible_server_log_disconnections_on" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.f", + "Description": "access or changes to critical configuration and backup files;", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr", + "monitor_diagnostic_setting_with_appropriate_categories", + "monitor_diagnostic_settings_exists", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "monitor" + } + ] + }, + { + "Id": "3.2.3.g", + "Description": "event logs and logs from security tools, such as antivirus, intrusion detection systems or firewalls;", + "Checks": [ + "app_http_logs_enabled", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "keyvault_logging_enabled", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private", + "mysql_flexible_server_audit_log_connection_activated", + "mysql_flexible_server_audit_log_enabled", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_checkpoints_on", + "postgresql_flexible_server_log_connections_on", + "postgresql_flexible_server_log_disconnections_on", + "postgresql_flexible_server_log_retention_days_greater_3" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.3.h", + "Description": "use of system resources, as well as their performance;", + "Checks": [ + "appinsights_ensure_is_configured", + "monitor_diagnostic_settings_exists" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.2.4", + "Description": "The logs shall be regularly reviewed for any unusual or unwanted trends. Where appropriate, the relevant entities shall lay down appropriate values for alarm thresholds. If the laid down values for alarm threshold are exceeded, an alarm shall be triggered, where appropriate, automatically. The relevant entities shall ensure that, in case of an alarm, a qualified and appropriate response is initiated in a timely manner.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "monitor" + } + ] + }, + { + "Id": "3.2.5", + "Description": "The relevant entities shall maintain and back up logs for a predefined period and shall protect them from unauthorised access or changes.", + "Checks": [ + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_retention_days_greater_3", + "sqlserver_auditing_retention_90_days" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.2 Monitoring and logging", + "Service": "generic" + } + ] + }, + { + "Id": "3.4.1", + "Description": "The relevant entities shall assess suspicious events to determine whether they constitute incidents and, if so, determine their nature and severity.", + "Checks": [ + "monitor_diagnostic_setting_with_appropriate_categories", + "monitor_diagnostic_settings_exists", + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.4 Event assessment and classification", + "Service": "monitor" + } + ] + }, + { + "Id": "3.5.1", + "Description": "The relevant entities shall respond to incidents in accordance with documented procedures and in a timely manner.", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_ensure_notify_emails_to_owners", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "generic" + } + ] + }, + { + "Id": "3.5.3.a", + "Description": "with the Computer Security Incident Response Teams (CSIRTs) or, where applicable, the competent authorities, related to incident notification;", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_ensure_notify_emails_to_owners", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "generic" + } + ] + }, + { + "Id": "3.5.4", + "Description": "The relevant entities shall log incident response activities in accordance with the procedures referred to in point 3.2.1., and record evidence.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.5 Incident response", + "Service": "monitor" + } + ] + }, + { + "Id": "3.6.2", + "Description": "The relevant entities shall ensure that post-incident reviews contribute to improving their approach to network and information security, to risk treatment measures, and to incident handling, detection and response procedures.", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_assessments_vm_endpoint_protection_installed", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "defender_auto_provisioning_vulnerabilty_assessments_machines_on", + "defender_container_images_resolved_vulnerabilities", + "defender_container_images_scan_enabled", + "defender_ensure_defender_for_app_services_is_on", + "defender_ensure_defender_for_arm_is_on", + "defender_ensure_defender_for_azure_sql_databases_is_on", + "defender_ensure_defender_for_containers_is_on", + "defender_ensure_defender_for_cosmosdb_is_on", + "defender_ensure_defender_for_databases_is_on", + "defender_ensure_defender_for_dns_is_on", + "defender_ensure_defender_for_keyvault_is_on", + "defender_ensure_defender_for_os_relational_databases_is_on", + "defender_ensure_defender_for_server_is_on", + "defender_ensure_defender_for_sql_servers_is_on", + "defender_ensure_defender_for_storage_is_on", + "defender_ensure_iot_hub_defender_is_on", + "defender_ensure_mcas_is_enabled", + "defender_ensure_notify_alerts_severity_is_high", + "defender_ensure_notify_emails_to_owners", + "defender_ensure_system_updates_are_applied", + "defender_ensure_wdatp_is_enabled", + "sqlserver_microsoft_defender_enabled" + ], + "Attributes": [ + { + "Section": "3 INCIDENT HANDLING (ARTICLE 21(2), POINT (B), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "3.6 Post-incident reviews", + "Service": "defender" + } + ] + }, + { + "Id": "4.1.1", + "Description": "For the purpose of Article 21(2), point (c) of Directive (EU) 2022/2555, the relevant entities shall lay down and maintain a business continuity and disaster recovery plan to apply in the case of incidents.", + "Checks": [ + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "keyvault" + } + ] + }, + { + "Id": "4.1.2.f", + "Description": "recovery plans for specific operations, including recovery objectives;", + "Checks": [ + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "keyvault" + } + ] + }, + { + "Id": "4.1.2.g", + "Description": "required resources, including backups and redundancies;", + "Checks": [ + "keyvault_recoverable", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_retention_days_greater_3", + "sqlserver_auditing_retention_90_days" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "generic" + } + ] + }, + { + "Id": "4.1.4", + "Description": "The business continuity plan and disaster recovery plan shall be tested, reviewed and, where appropriate, updated at planned intervals and following significant incidents or significant changes to operations or risks. The relevant entities shall ensure that the plans incorporate lessons learnt from such tests.", + "Checks": [ + "keyvault_recoverable", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_retention_days_greater_3", + "sqlserver_auditing_retention_90_days" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.1 Business continuity and disaster recovery plan", + "Service": "generic" + } + ] + }, + { + "Id": "4.2.2.b", + "Description": "assurance that backup copies are complete and accurate, including configuration data and data stored in cloud computing service environment;", + "Checks": [ + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "keyvault" + } + ] + }, + { + "Id": "4.2.2.e", + "Description": "restoring data from backup copies;", + "Checks": [ + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "generic" + } + ] + }, + { + "Id": "4.2.2.f", + "Description": "retention periods based on business and regulatory requirements.", + "Checks": [ + "sqlserver_auditing_retention_90_days", + "storage_ensure_soft_delete_is_enabled", + "network_flow_log_more_than_90_days" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.2 Backup and redundancy management", + "Service": "generic" + } + ] + }, + { + "Id": "4.3.2.a", + "Description": "roles and responsibilities for personnel and, where appropriate, suppliers and service providers, specifying the allocation of roles in crisis situations, including specific steps to follow;", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_ensure_notify_emails_to_owners", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.3 Crisis management", + "Service": "generic" + } + ] + }, + { + "Id": "4.3.2.c", + "Description": "application of appropriate measures to ensure the maintenance of network and information system security in crisis situations.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "4 BUSINESS CONTINUITY AND CRISIS MANAGEMENT (ARTICLE 21(2), POINT (C), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "4.3 Crisis management", + "Service": "monitor" + } + ] + }, + { + "Id": "5.1.2.a", + "Description": "the cybersecurity practices of the suppliers and service providers, including their secure development procedures;", + "Checks": [ + "aks_network_policy_enabled", + "app_client_certificates_on", + "app_ensure_auth_is_set_up", + "app_ensure_http_is_redirected_to_https", + "app_ensure_java_version_is_latest", + "app_ensure_php_version_is_latest", + "app_ensure_python_version_is_latest", + "app_ensure_using_http20", + "app_ftp_deployment_disabled", + "app_function_access_keys_configured", + "app_function_application_insights_enabled", + "app_function_ftps_deployment_disabled", + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_function_latest_runtime_version", + "app_function_not_publicly_accessible", + "app_function_vnet_integration_enabled", + "app_http_logs_enabled", + "app_minimum_tls_version_12", + "app_register_with_identity", + "appinsights_ensure_is_configured" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "app" + } + ] + }, + { + "Id": "5.1.4.f", + "Description": "an obligation on suppliers and service providers to handle vulnerabilities that present a risk to the security of the network and information systems of the relevant entities;", + "Checks": [ + "defender_container_images_resolved_vulnerabilities", + "defender_container_images_scan_enabled", + "defender_auto_provisioning_vulnerabilty_assessments_machines_on", + "sqlserver_vulnerability_assessment_enabled" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "5.1.7.b", + "Description": "review incidents related to ICT products and ICT services from suppliers and service providers;", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_ensure_notify_emails_to_owners", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "5 SUPPLY CHAIN SECURITY (ARTICLE 21(2), POINT (D), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "5.1 Supply chain security policy", + "Service": "generic" + } + ] + }, + { + "Id": "6.1.2.b", + "Description": "requirements regarding security updates throughout the entire lifetime of the ICT services or ICT products, or replacement after the end of the support period;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_non_rbac_secret_expiration_set", + "postgresql_flexible_server_log_retention_days_greater_3", + "network_flow_log_more_than_90_days", + "sqlserver_auditing_retention_90_days" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.1 Security in acquisition of ICT services or ICT products", + "Service": "generic" + } + ] + }, + { + "Id": "6.2.1", + "Description": "Before developing a network and information system, including software, the relevant entities shall lay down rules for the secure development of network and information systems and apply them when developing network and information systems in-house, or when outsourcing the development of network and information systems. The rules shall cover all development phases, including specification, design, development, implementation and testing.", + "Checks": [ + "defender_ensure_system_updates_are_applied", + "app_client_certificates_on", + "app_ensure_auth_is_set_up", + "app_ensure_http_is_redirected_to_https", + "app_ensure_java_version_is_latest", + "app_ensure_php_version_is_latest", + "app_ensure_python_version_is_latest", + "app_ensure_using_http20", + "app_ftp_deployment_disabled", + "app_function_access_keys_configured", + "app_function_application_insights_enabled", + "app_function_ftps_deployment_disabled", + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_function_latest_runtime_version", + "app_function_not_publicly_accessible", + "app_function_vnet_integration_enabled", + "app_http_logs_enabled", + "app_minimum_tls_version_12", + "app_register_with_identity" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "app" + } + ] + }, + { + "Id": "6.2.2.b", + "Description": "apply principles for engineering secure systems and secure coding principles to any information system development activities such as promoting cybersecurity-by-design, zero-trust architectures;", + "Checks": [ + "app_client_certificates_on", + "app_ensure_auth_is_set_up", + "app_ensure_http_is_redirected_to_https", + "app_ensure_java_version_is_latest", + "app_ensure_php_version_is_latest", + "app_ensure_python_version_is_latest", + "app_ensure_using_http20", + "app_ftp_deployment_disabled", + "app_function_access_keys_configured", + "app_function_application_insights_enabled", + "app_function_ftps_deployment_disabled", + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_function_latest_runtime_version", + "app_function_not_publicly_accessible", + "app_function_vnet_integration_enabled", + "app_http_logs_enabled", + "app_minimum_tls_version_12", + "app_register_with_identity" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "app" + } + ] + }, + { + "Id": "6.2.2.c", + "Description": "lay down security requirements regarding development environments;", + "Checks": [ + "app_client_certificates_on", + "app_ensure_auth_is_set_up", + "app_ensure_http_is_redirected_to_https", + "app_ensure_java_version_is_latest", + "app_ensure_php_version_is_latest", + "app_ensure_python_version_is_latest", + "app_ensure_using_http20", + "app_ftp_deployment_disabled", + "app_function_access_keys_configured", + "app_function_application_insights_enabled", + "app_function_ftps_deployment_disabled", + "app_function_identity_is_configured", + "app_function_identity_without_admin_privileges", + "app_function_latest_runtime_version", + "app_function_not_publicly_accessible", + "app_function_vnet_integration_enabled", + "app_http_logs_enabled", + "app_minimum_tls_version_12", + "app_register_with_identity" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.2 Secure development life cycle", + "Service": "app" + } + ] + }, + { + "Id": "6.4.1", + "Description": "The relevant entities shall apply change management procedures to control changes of network and information systems. Where applicable, the procedures shall be consistent with the relevant entities general policies concerning change management.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.4 Change management, repairs and maintenance", + "Service": "monitor" + } + ] + }, + { + "Id": "6.6.1.a", + "Description": "security patches are applied within a reasonable time after they become available;", + "Checks": [ + "defender_auto_provisioning_vulnerabilty_assessments_machines_on", + "defender_container_images_resolved_vulnerabilities", + "sqlserver_vulnerability_assessment_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.6 Security patch management", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.b", + "Description": "determine and apply controls to protect the relevant entities internal network domains from unauthorised access;", + "Checks": [ + "aisearch_service_not_publicly_accessible", + "aks_network_policy_enabled", + "containerregistry_not_publicly_accessible", + "cosmosdb_account_firewall_use_selected_networks", + "network_bastion_host_exists", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "network_http_internet_access_restricted", + "network_public_ip_shodan", + "network_rdp_internet_access_restricted", + "network_ssh_internet_access_restricted", + "network_udp_internet_access_restricted", + "network_watcher_enabled", + "storage_default_network_access_rule_is_denied" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.e", + "Description": "not use systems used for administration of the security policy implementation for other purposes;", + "Checks": [ + "app_function_identity_without_admin_privileges", + "containerregistry_admin_user_disabled", + "entra_global_admin_in_less_than_five_users", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "iam_custom_role_has_permissions_to_administer_resource_locks", + "sqlserver_azuread_administrator_enabled", + "sqlserver_va_emails_notifications_admins_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.g", + "Description": "where appropriate, exclusively allow access to the relevant entities network and information systems by devices authorised by those entities;", + "Checks": [ + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "app_function_ftps_deployment_disabled", + "app_ensure_auth_is_set_up", + "app_function_identity_is_configured" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.i", + "Description": "establish communication between distinct systems only through trusted channels that are isolated using logical, cryptographic or physical separation from other communication channels and provide assured identification of their end points and protection of the channel data from modification or disclosure;", + "Checks": [ + "storage_ensure_private_endpoints_in_storage_accounts", + "storage_secure_transfer_required_is_enabled", + "app_minimum_tls_version_12", + "mysql_flexible_server_minimum_tls_version_12", + "sqlserver_recommended_minimal_tls_version", + "storage_ensure_minimum_tls_version_12", + "app_ensure_http_is_redirected_to_https", + "defender_ensure_defender_for_dns_is_on", + "sqlserver_tde_encryption_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.7.2.l", + "Description": "apply best practices for the security of the DNS, and for Internet routing security and routing hygiene of traffic originating from and destined to the network.", + "Checks": [ + "storage_ensure_private_endpoints_in_storage_accounts", + "storage_secure_transfer_required_is_enabled", + "app_minimum_tls_version_12", + "mysql_flexible_server_minimum_tls_version_12", + "sqlserver_recommended_minimal_tls_version", + "storage_ensure_minimum_tls_version_12", + "app_ensure_http_is_redirected_to_https", + "defender_ensure_defender_for_dns_is_on", + "sqlserver_tde_encryption_enabled", + "network_bastion_host_exists", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "network_http_internet_access_restricted", + "network_public_ip_shodan", + "network_rdp_internet_access_restricted", + "network_ssh_internet_access_restricted", + "network_udp_internet_access_restricted", + "network_watcher_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.7 Network security", + "Service": "generic" + } + ] + }, + { + "Id": "6.8.2.a", + "Description": "consider the functional, logical and physical relationship, including location, between trustworthy systems and services;", + "Checks": [ + "entra_trusted_named_locations_exists", + "network_watcher_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.8 Network segmentation", + "Service": "generic" + } + ] + }, + { + "Id": "6.9.2", + "Description": "For that purpose, the relevant entities shall in particular implement measures that detect or prevent the use of malicious or unauthorised software. The relevant entities shall, where appropriate, ensure that their network and information systems are equipped with detection and response software, which is updated regularly in accordance with the risk assessment carried out pursuant to point 2.1 and the contractual agreements with the providers.", + "Checks": [ + "defender_additional_email_configured_with_a_security_contact", + "defender_assessments_vm_endpoint_protection_installed", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "defender_auto_provisioning_vulnerabilty_assessments_machines_on", + "defender_container_images_resolved_vulnerabilities", + "defender_container_images_scan_enabled", + "defender_ensure_defender_for_app_services_is_on", + "defender_ensure_defender_for_arm_is_on", + "defender_ensure_defender_for_azure_sql_databases_is_on", + "defender_ensure_defender_for_containers_is_on", + "defender_ensure_defender_for_cosmosdb_is_on", + "defender_ensure_defender_for_databases_is_on", + "defender_ensure_defender_for_dns_is_on", + "defender_ensure_defender_for_keyvault_is_on", + "defender_ensure_defender_for_os_relational_databases_is_on", + "defender_ensure_defender_for_server_is_on", + "defender_ensure_defender_for_sql_servers_is_on", + "defender_ensure_defender_for_storage_is_on", + "defender_ensure_iot_hub_defender_is_on", + "defender_ensure_mcas_is_enabled", + "defender_ensure_notify_alerts_severity_is_high", + "defender_ensure_notify_emails_to_owners", + "defender_ensure_system_updates_are_applied", + "defender_ensure_wdatp_is_enabled", + "sqlserver_microsoft_defender_enabled" + ], + "Attributes": [ + { + "Section": "6 SECURITY IN NETWORK AND INFORMATION SYSTEMS ACQUISITION, DEVELOPMENT AND MAINTENANCE (ARTICLE 21(2), POINT (E), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "6.9 Protection against malicious and unauthorised software", + "Service": "generic" + } + ] + }, + { + "Id": "7.2.b", + "Description": "the methods for monitoring, measurement, analysis and evaluation, as applicable, to ensure valid results;", + "Checks": [ + "defender_ensure_notify_alerts_severity_is_high", + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "7 POLICIES AND PROCEDURES TO ASSESS THE EFFECTIVENESS OF CYBERSECURITY RISK-MANAGEMENT MEASURES (ARTICLE 21(2), POINT (F), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "7.2 The policy and procedures referred to in point 7.1. shall take into account results of the risk assessment pursuant to point 2.1. and past significant incidents. The relevant entities shall determine:", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.a", + "Description": "in accordance with the relevant entities classification of assets, the type, strength and quality of the cryptographic measures required to protect the relevant entities assets, including data at rest and data in transit;", + "Checks": [ + "app_minimum_tls_version_12", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "sqlserver_tde_encrypted_with_cmk", + "sqlserver_tde_encryption_enabled", + "storage_ensure_encryption_with_customer_managed_keys", + "storage_infrastructure_encryption_is_enabled", + "storage_secure_transfer_required_is_enabled", + "vm_ensure_attached_disks_encrypted_with_cmk", + "vm_ensure_unattached_disks_encrypted_with_cmk" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c", + "Description": "the relevant entities approach to key management, including, where appropriate, methods for the following:", + "Checks": [ + "defender_ensure_defender_for_keyvault_is_on", + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_key_rotation_enabled", + "keyvault_logging_enabled", + "keyvault_non_rbac_secret_expiration_set", + "keyvault_private_endpoints", + "keyvault_rbac_enabled", + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "keyvault_recoverable", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "sqlserver_tde_encrypted_with_cmk", + "vm_ensure_attached_disks_encrypted_with_cmk", + "vm_ensure_unattached_disks_encrypted_with_cmk" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.i", + "Description": "generating different keys for cryptographic systems and applications;", + "Checks": [ + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "sqlserver_tde_encrypted_with_cmk", + "vm_ensure_attached_disks_encrypted_with_cmk", + "vm_ensure_unattached_disks_encrypted_with_cmk" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.ii", + "Description": "issuing and obtaining public key certificates;", + "Checks": [ + "app_client_certificates_on" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "app" + } + ] + }, + { + "Id": "9.2.c.iii", + "Description": "distributing keys to intended entities, including how to activate keys when received;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_rbac_key_expiration_set", + "storage_key_rotation_90_days" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.iv", + "Description": "storing keys, including how authorised users obtain access to keys;", + "Checks": [ + "app_function_access_keys_configured", + "defender_ensure_defender_for_keyvault_is_on", + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_key_rotation_enabled", + "keyvault_logging_enabled", + "keyvault_non_rbac_secret_expiration_set", + "keyvault_private_endpoints", + "keyvault_rbac_enabled", + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "keyvault_recoverable", + "sqlserver_tde_encrypted_with_cmk", + "storage_ensure_encryption_with_customer_managed_keys", + "storage_key_rotation_90_days" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.v", + "Description": "changing or updating keys, including rules on when and how to change keys;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_key_rotation_enabled", + "keyvault_logging_enabled", + "keyvault_non_rbac_secret_expiration_set", + "keyvault_private_endpoints", + "keyvault_rbac_enabled", + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "keyvault" + } + ] + }, + { + "Id": "9.2.c.vi", + "Description": "backing up or archiving keys;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_recoverable", + "keyvault_rbac_key_expiration_set" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "keyvault" + } + ] + }, + { + "Id": "9.2.c.vii", + "Description": "logging and auditing of key management-related activities;", + "Checks": [ + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "keyvault_logging_enabled", + "sqlserver_auditing_enabled" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "generic" + } + ] + }, + { + "Id": "9.2.c.xii", + "Description": "setting activation and deactivation dates for keys ensuring that the keys can only be used for the specified period of time according to the organization's rules on key management.", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "keyvault_non_rbac_secret_expiration_set" + ], + "Attributes": [ + { + "Section": "9 CRYPTOGRAPHY (ARTICLE 21(2), POINT (H), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "9.2 Cryptography", + "Service": "keyvault" + } + ] + }, + { + "Id": "11.1.1", + "Description": "For the purpose of Article 21(2), point (i) of Directive (EU) 2022/2555, the relevant entities shall establish, document and implement logical and physical access control policies for the access to their network and information systems, based on business requirements as well as network and information system security requirements.", + "Checks": [ + "app_ensure_auth_is_set_up", + "app_function_ftps_deployment_disabled", + "aisearch_service_not_publicly_accessible", + "aks_network_policy_enabled", + "containerregistry_not_publicly_accessible", + "cosmosdb_account_firewall_use_selected_networks", + "network_bastion_host_exists", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "network_http_internet_access_restricted", + "network_public_ip_shodan", + "network_rdp_internet_access_restricted", + "network_ssh_internet_access_restricted", + "network_udp_internet_access_restricted", + "network_watcher_enabled", + "storage_default_network_access_rule_is_denied" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.1 Access control policy", + "Service": "generic" + } + ] + }, + { + "Id": "11.1.2.c", + "Description": "ensure that access is only granted to users that have been adequately authenticated.", + "Checks": [ + "app_ensure_auth_is_set_up", + "app_function_ftps_deployment_disabled" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.1 Access control policy", + "Service": "app" + } + ] + }, + { + "Id": "11.2.1", + "Description": "The relevant entities shall provide, modify, remove and document access rights to network and information systems in accordance with the access control policy referred to in point 11.1.", + "Checks": [ + "monitor_storage_account_with_activity_logs_is_private", + "storage_default_network_access_rule_is_denied" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "generic" + } + ] + }, + { + "Id": "11.2.2.a", + "Description": "assign and revoke access rights based on the principles of need-to-know, least privilege and separation of duties;", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "entra_policy_guest_users_access_restrictions", + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_user_consent_for_verified_apps", + "entra_users_cannot_create_microsoft_365_groups" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "entra" + } + ] + }, + { + "Id": "11.2.2.d", + "Description": "ensure that access rights appropriately address third-party access, such as visitors, suppliers and service providers, in particular by limiting access rights in scope and in duration;", + "Checks": [ + "monitor_storage_account_with_activity_logs_is_private", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "entra_policy_guest_users_access_restrictions", + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_user_consent_for_verified_apps", + "entra_users_cannot_create_microsoft_365_groups", + "aks_clusters_created_with_private_nodes", + "containerregistry_uses_private_link", + "cosmosdb_account_use_private_endpoints", + "keyvault_private_endpoints", + "monitor_storage_account_with_activity_logs_is_private", + "storage_ensure_private_endpoints_in_storage_accounts" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "generic" + } + ] + }, + { + "Id": "11.2.2.f", + "Description": "apply logging to the management of access rights.", + "Checks": [ + "app_http_logs_enabled", + "defender_auto_provisioning_log_analytics_agent_vms_on", + "keyvault_logging_enabled", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "monitor_storage_account_with_activity_logs_is_private", + "mysql_flexible_server_audit_log_connection_activated", + "mysql_flexible_server_audit_log_enabled", + "network_flow_log_captured_sent", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_checkpoints_on", + "postgresql_flexible_server_log_connections_on", + "postgresql_flexible_server_log_disconnections_on", + "postgresql_flexible_server_log_retention_days_greater_3" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.2 Management of access rights", + "Service": "generic" + } + ] + }, + { + "Id": "11.3.1", + "Description": "The relevant entities shall maintain policies for management of privileged accounts and system administration accounts as part of the access control policy referred to in point 11.1.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "monitor" + } + ] + }, + { + "Id": "11.3.2.a", + "Description": "establish strong identification, authentication such as multi-factor authentication, and authorisation procedures for privileged accounts and system administration accounts;", + "Checks": [ + "entra_conditional_access_policy_require_mfa_for_management_api", + "entra_non_privileged_user_has_mfa", + "entra_privileged_user_has_mfa", + "entra_user_with_vm_access_has_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "entra" + } + ] + }, + { + "Id": "11.3.2.b", + "Description": "set up specific accounts to be used for system administration operations exclusively, such as installation, configuration, management or maintenance;", + "Checks": [ + "entra_global_admin_in_less_than_five_users" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "entra" + } + ] + }, + { + "Id": "11.3.2.c", + "Description": "individualise and restrict system administration privileges to the highest extent possible,", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants", + "entra_policy_guest_invite_only_for_admin_roles", + "entra_policy_guest_users_access_restrictions", + "entra_policy_restricts_user_consent_for_apps", + "entra_policy_user_consent_for_verified_apps", + "entra_users_cannot_create_microsoft_365_groups" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "entra" + } + ] + }, + { + "Id": "11.3.2.d", + "Description": "provide that system administration accounts are only used to connect to system administration systems.", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.3 Privileged accounts and system administration accounts", + "Service": "entra" + } + ] + }, + { + "Id": "11.4.2.b", + "Description": "separate logically such systems from application software not used for system administrative purposes,", + "Checks": [ + "entra_global_admin_in_less_than_five_users", + "entra_policy_default_users_cannot_create_security_groups", + "entra_policy_ensure_default_user_cannot_create_apps", + "entra_policy_ensure_default_user_cannot_create_tenants" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.4 Administration systems", + "Service": "entra" + } + ] + }, + { + "Id": "11.4.2.c", + "Description": "protect access to system administration systems through authentication and encryption.", + "Checks": [ + "entra_trusted_named_locations_exists", + "entra_user_with_vm_access_has_mfa", + "entra_conditional_access_policy_require_mfa_for_management_api", + "entra_privileged_user_has_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.4 Administration systems", + "Service": "entra" + } + ] + }, + { + "Id": "11.5.2.a", + "Description": "set up unique identities for network and information systems and their users;", + "Checks": [ + "app_function_identity_is_configured" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.5 Identification", + "Service": "app" + } + ] + }, + { + "Id": "11.5.2.d", + "Description": "apply logging to the management of identities.", + "Checks": [ + "monitor_alert_create_policy_assignment", + "monitor_alert_create_update_nsg", + "monitor_alert_create_update_public_ip_address_rule", + "monitor_alert_create_update_security_solution", + "monitor_alert_create_update_sqlserver_fr", + "monitor_alert_delete_nsg", + "monitor_alert_delete_policy_assignment", + "monitor_alert_delete_public_ip_address_rule", + "monitor_alert_delete_security_solution", + "monitor_alert_delete_sqlserver_fr" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.5 Identification", + "Service": "monitor" + } + ] + }, + { + "Id": "11.6.1", + "Description": "The relevant entities shall implement secure authentication procedures and technologies based on access restrictions and the policy on access control.", + "Checks": [ + "app_ensure_auth_is_set_up", + "app_function_ftps_deployment_disabled", + "aisearch_service_not_publicly_accessible", + "aks_network_policy_enabled", + "containerregistry_not_publicly_accessible" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "generic" + } + ] + }, + { + "Id": "11.6.2.a", + "Description": "ensure the strength of authentication is appropriate to the classification of the asset to be accessed;", + "Checks": [ + "entra_conditional_access_policy_require_mfa_for_management_api", + "entra_non_privileged_user_has_mfa", + "entra_privileged_user_has_mfa", + "entra_user_with_vm_access_has_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "entra" + } + ] + }, + { + "Id": "11.6.2.c", + "Description": "require the change of authentication credentials initially, at predefined intervals and upon suspicion that the credentials were compromised;", + "Checks": [ + "keyvault_key_rotation_enabled", + "storage_key_rotation_90_days" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.6 Authentication", + "Service": "generic" + } + ] + }, + { + "Id": "11.7.2", + "Description": "The relevant entities shall ensure that the strength of authentication is appropriate for the classification of the asset to be accessed.", + "Checks": [ + "entra_conditional_access_policy_require_mfa_for_management_api", + "entra_non_privileged_user_has_mfa", + "entra_privileged_user_has_mfa", + "entra_user_with_vm_access_has_mfa" + ], + "Attributes": [ + { + "Section": "11 ACCESS CONTROL (ARTICLE 21(2), POINTS (I) AND (J), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "11.7 Multi-factor authentication", + "Service": "generic" + } + ] + }, + { + "Id": "12.1.2.c", + "Description": "align the availability requirements of the assets with the delivery and recovery objectives set out in their business continuity and disaster recovery plans.", + "Checks": [ + "keyvault_recoverable" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.1 Asset classification", + "Service": "keyvault" + } + ] + }, + { + "Id": "12.2.2.a", + "Description": "cover the entire life cycle of the assets, including acquisition, use, storage, transportation and disposal;", + "Checks": [ + "keyvault_key_expiration_set_in_non_rbac", + "keyvault_non_rbac_secret_expiration_set", + "keyvault_rbac_key_expiration_set", + "keyvault_rbac_secret_expiration_set", + "network_flow_log_more_than_90_days", + "postgresql_flexible_server_log_retention_days_greater_3", + "sqlserver_auditing_retention_90_days", + "storage_blob_public_access_level_is_disabled", + "storage_default_network_access_rule_is_denied", + "storage_ensure_azure_services_are_trusted_to_access_is_enabled", + "storage_ensure_encryption_with_customer_managed_keys", + "storage_ensure_minimum_tls_version_12", + "storage_ensure_private_endpoints_in_storage_accounts", + "storage_ensure_soft_delete_is_enabled", + "storage_infrastructure_encryption_is_enabled", + "storage_key_rotation_90_days", + "storage_secure_transfer_required_is_enabled" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "generic" + } + ] + }, + { + "Id": "12.2.2.b", + "Description": "provide rules on the safe use, safe storage, safe transport, and the irretrievable deletion and destruction of the assets;", + "Checks": [ + "storage_ensure_soft_delete_is_enabled", + "keyvault_recoverable", + "storage_secure_transfer_required_is_enabled", + "app_minimum_tls_version_12", + "monitor_storage_account_with_activity_logs_cmk_encrypted", + "sqlserver_tde_encrypted_with_cmk", + "sqlserver_tde_encryption_enabled", + "storage_ensure_encryption_with_customer_managed_keys", + "storage_infrastructure_encryption_is_enabled", + "vm_ensure_attached_disks_encrypted_with_cmk", + "vm_ensure_unattached_disks_encrypted_with_cmk" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "generic" + } + ] + }, + { + "Id": "12.2.2.c", + "Description": "provide that the transfer shall take place in a secure manner, in accordance with the type of asset to be transferred.", + "Checks": [ + "storage_secure_transfer_required_is_enabled", + "app_minimum_tls_version_12", + "mysql_flexible_server_minimum_tls_version_12", + "sqlserver_recommended_minimal_tls_version", + "storage_ensure_minimum_tls_version_12", + "sqlserver_tde_encrypted_with_cmk", + "sqlserver_tde_encryption_enabled" + ], + "Attributes": [ + { + "Section": "12 ASSET MANAGEMENT (ARTICLE 21(2), POINT (I), OF DIRECTIVE (EU) 2022/2555)", + "SubSection": "12.2 Handling of assets", + "Service": "generic" + } + ] + } + ] +} diff --git a/ui/components/icons/compliance/IconCompliance.tsx b/ui/components/icons/compliance/IconCompliance.tsx index 304fe091b4..c73d0d14ee 100644 --- a/ui/components/icons/compliance/IconCompliance.tsx +++ b/ui/components/icons/compliance/IconCompliance.tsx @@ -10,6 +10,7 @@ import HIPAALogo from "./hipaa.svg"; import ISOLogo from "./iso-27001.svg"; import KISALogo from "./kisa.svg"; import MITRELogo from "./mitre-attack.svg"; +import NIS2Logo from "./nis2.svg"; import NISTLogo from "./nist.svg"; import PCILogo from "./pci-dss.svg"; import PROWLERTHREATLogo from "./prowlerThreat.svg"; @@ -68,4 +69,7 @@ export const getComplianceIcon = (complianceTitle: string) => { if (complianceTitle.toLowerCase().includes("prowlerthreatscore")) { return PROWLERTHREATLogo; } + if (complianceTitle.toLowerCase().includes("nis2")) { + return NIS2Logo; + } }; diff --git a/ui/components/icons/compliance/nis2.svg b/ui/components/icons/compliance/nis2.svg new file mode 100644 index 0000000000..a8773aed8f --- /dev/null +++ b/ui/components/icons/compliance/nis2.svg @@ -0,0 +1,28966 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From bc56d48595a9b19e2bcc8362d16483ba77a17a86 Mon Sep 17 00:00:00 2001 From: Harsh Kumar <54257619+iamharshkr@users.noreply.github.com> Date: Wed, 28 May 2025 15:14:01 +0530 Subject: [PATCH 24/24] feat(dashboard): add client-side search functionality to findings table (#7804) Co-authored-by: Harsh Kumar --- dashboard/lib/layouts.py | 28 ++++++++++++++++++++++------ dashboard/pages/overview.py | 11 +++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/dashboard/lib/layouts.py b/dashboard/lib/layouts.py index f1b4408c38..144036f183 100644 --- a/dashboard/lib/layouts.py +++ b/dashboard/lib/layouts.py @@ -90,12 +90,28 @@ def create_layout_overview( ), html.Div( [ - ( - html.Label( - "Table Rows:", - className="text-prowler-stone-900 font-bold text-sm", - style={"margin-right": "10px"}, - ) + html.Label( + "Search:", + className="text-prowler-stone-900 font-bold text-sm", + style={"margin-right": "10px"}, + ), + dcc.Input( + id="search-input", + type="text", + placeholder="Search by check title, service, region...", + debounce=True, + style={ + "padding": "4px 8px", + "border": "1px solid #ccc", + "borderRadius": "4px", + "marginRight": "20px", + "width": "250px", + }, + ), + html.Label( + "Table Rows:", + className="text-prowler-stone-900 font-bold text-sm", + style={"margin-right": "10px"}, ), table_row_dropdown, download_button_csv, diff --git a/dashboard/pages/overview.py b/dashboard/pages/overview.py index 2688281af2..0901604ad9 100644 --- a/dashboard/pages/overview.py +++ b/dashboard/pages/overview.py @@ -518,6 +518,7 @@ else: Input("service-filter", "value"), Input("table-rows", "value"), Input("status-filter", "value"), + Input("search-input", "value"), Input("aws_card", "n_clicks"), Input("azure_card", "n_clicks"), Input("gcp_card", "n_clicks"), @@ -540,6 +541,7 @@ def filter_data( service_values, table_row_values, status_values, + search_value, aws_clicks, azure_clicks, gcp_clicks, @@ -1144,6 +1146,15 @@ def filter_data( } index_count = 0 + if search_value: + search_value = search_value.lower() + filtered_data = filtered_data[ + filtered_data["CHECK_TITLE"].str.lower().str.contains(search_value) + | filtered_data["SERVICE_NAME"].str.lower().str.contains(search_value) + | filtered_data["REGION"].str.lower().str.contains(search_value) + | filtered_data["STATUS"].str.lower().str.contains(search_value) + ] + full_filtered_data = filtered_data.copy() filtered_data = filtered_data.head(table_row_values) # Sort the filtered_data