You need to restrict visibility to the set method of the property (make it protected) and control all access through a set method in which you check security, or check security within the set method of the property.
Instead of checking Context.User to get the user's roles, you can use the PrincipalPermission attribute on all of your setter methods.
Code:
[System.Security.Permissions.PrincipalPermission
(System.Security.Permissions.SecurityAction.Demand, Role = @"AdminRole")]
With this attribute set, ASP.Net will throw an exception if the calling code isn't in the specified role. If you aren't using Windows authentication, you will also need to either use a Roles Provider or manually set Context.User to a new GenericPrincipal object so that ASP.Net can determine what roles a user is in. Sometimes it's useful, sometimes not as much.