Step-by-step explanation:
A witness would be someone that has experienced something at first hand, having saw something from a different perspective. An ally is someone who is acquainted with you, or someone you could trust. A witness cannot be an ally if you are against their side in some form or way. A witness can be an ally if it is your best friend or someone you trust to prove you innocent.
Basically, a witness is a neutral term that describes someone that saw something. While an ally refers to mutually acceptable.