Kiwior, 22, joins Arsenal for a transfer fee of €25 million ($27 million), according to multiple reports.
"It's great that Jakub is joining us. He's a young versatile defender who has shown huge potential and qualities with Spezia in Serie A, and also at international level with Poland," Arsenal manager Mikel Arteta said in a club statement.
"Jakub is a player who will give us strength and quality to our defensive unit. We welcome Jakub and his family to Arsenal and look forward to working with him."
After joining from Slovakia's MSK Zilina in the summer of 2021, Kiwior has impressed in Italy where he has made 39 appearances in Italy's top division.
He becomes Arsenal's second signing of the January transfer window, following winger Leandro Trossard's arrival from Brighton on Friday.
Arsenal have a five-point lead at the top of the Premier League ahead of Manchester City.