Rabada took 72 wickets at an average of 19.52 in 12 Tests going back to a series in England last July.
He missed one Test in England because he was banned after reaching a demerit points threshold -- and would have missed the last two Tests against Australia earlier this year if he had not appealed successfully against a verdict that would have brought a two-match ban for reaching a second threshold.
Rabada went on to be man of the series when South Africa beat Australia in a controversial four-match series.
The ban came after a collision with Australian captain Steve Smith. Match referee Jeff Crowe found him guilty of a level two offence and he was docked three demerit points, which triggered an automatic ban. But it was downgraded to a level one offence with one demerit point.
Rabada remains in danger of missing more matches, though, because he has accumulated seven points, one short of a ban. With points remaining on his record for two years, he will not start shedding points until February 2019.
It was Rabada's second Cricketer of the Year award. He also won in 2016. He joined Hashim Amla, Jacques Kallis, Makhaya Ntini and AB de Villiers as two-time winners.
Rabada collected a total of six awards, including Test cricketer of the year, one-day international player of the year and players' player of the year.