A shield, as a physical entity, is no different from any other physical entity, e.g. a drone which circles around you (and which in fact, could itself be a type of shield!). So make the shield a separate logical entity (thus allowing it to hold its own components).
Give your shield a couple of components: a Physical/Spatial component to represent it's collision form, and a DamageAffector component which hold a reference to some entity to whom it will apply increased or reduced damage (eg. your player character) every time the entity holding the DamageAffector takes damage. Thus your player is taking damage "by proxy".
Set the shield entity's position to the player's position every tick. (Write a reusable component class that does this: write once, use many times.)
You will need to create the shield entity, eg. on collecting a powerup. I use a generic concept called an Emitter, which is a type of entity component that spawns new entities (usually through the use of an EntityFactory which it references). Where you decide to locate the emitter is up to you -- I would put it on the powerup and have it trigger as the powerup vanishes.