[Security Solution] Integrations card in automatic migrations (#221493)

## Summary

issue: https://github.com/elastic/security-team/issues/12309

Introduces the integrations card in the SIEM migrations topic, after the
"start rule migration" card.

Requirements:

- The same integrations card UI as the rest of the onboarding topics.
- When no migration is complete, show the same recommended integrations
as the default topic.
- When some migration is complete, show the integrations detected by the
rule migrations (all of them).
- Render a label next to the title showing the number of migration rules
linked to the integration (both prebuilt and custom rules)
  - Sort the integrations list by the number of rules linked.
- As the last integration item in the list, render a card to link the
integration auto-import

### Screenshots

When no migration has been executed yet:

![without
migration](https://github.com/user-attachments/assets/de1ccd87-37b0-43fd-b52e-a044712520b0)

When some migrations have been completed:

![with
migration](https://github.com/user-attachments/assets/0bc520cd-ce35-4299-a242-bbc89a5be061)

Auto import card is appended at the end:

![auto-import
card](https://github.com/user-attachments/assets/577172f9-d348-4764-9f4e-f769a4c4a03b)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Sergi Massaneda 2025-05-28 15:27:59 +02:00 committed by GitHub
parent a83a837e8d
commit b5915de827
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 1516 additions and 572 deletions

View file

@ -1073,6 +1073,16 @@ finalize it.
.set(ELASTIC_HTTP_VERSION_HEADER, '1')
.set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana');
},
/**
* Retrieves the stats of all the integrations for all the rule migrations, including the number of rules associated with the integration
*/
getRuleMigrationIntegrationsStats(kibanaSpace: string = 'default') {
return supertest
.get(routeWithNamespace('/internal/siem_migrations/rules/integrations/stats', kibanaSpace))
.set('kbn-xsrf', 'true')
.set(ELASTIC_HTTP_VERSION_HEADER, '1')
.set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana');
},
/**
* Retrieves all available prebuilt rules (installed and installable)
*/