Is it okay to eat ham with a rainbow sheen?

Yes, it's fine.

A rainbow sheen/glistening on meat like ham and beef does not indicate spoilage. Hams contain nitrates which reacts with light and air to cause a rainbow-like or glistening greenish pigmentation.