How do you modify the color of light hitting a surface?

This effect is usually called iridescence, the more accurate term (I think) is called diffraction grating. The simplest way to do this is to just use a lookup table with a gradient in your material that adjusts the base color depending on the view vector in relation to the light and the surface normal. There are a lot of ways to do that, but I like this example outlined by James Emory here:

This can work well, but you’re limited to the lights you can pass to your material.

Another very detailed tutorial on this was done by Alan Zucconi (it’s written for Unity but you may (probably?) be able to apply it to Unreal.)

Ideally though, I think you’d need to create a new shading model in order to better support more scene lights.