Return to HomePage




Note: See online on MSDN: http://msdn.microsoft.com/library/en-us/dnnetsec/html/CL_SecuEnt.asp

Enterprise Services 1.1 Security Checklist


J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan

Microsoft Corporation

June 2003


Developer Checks

Use the following checks if you build serviced components.

Authentication

* Call-level authentication is used at minimum to prevent anonymous access. Serviced component assemblies include:
[assembly: ApplicationAccessControl(
Authentication = AuthenticationOption.Call)]


Authorization

* Role-based security is enabled. Serviced component assemblies include:
assembly: ApplicationAccessControl(true)
* Component-level access checks are enabled to support component-level, interface-level, and method-level role checks. Serviced component assemblies include:
[assembly: ApplicationAccessControl(AccessChecksLevel=
AccessChecksLevelOption.ApplicationComponent)]
* Component-level access checks are enforced for all serviced components. Classes are annotated with:
ComponentAccessControl(true)
* To support method-level security, the SecurityMethod attribute is used on classes or method implementations, or the SecurityRole attribute is used on method implementations.

Configuration Management

* Server applications are configured to run with least-privileged accounts.
* Server applications only run using the interactive user account during development.
* Object constructor strings do not contain plain text secrets.

Sensitive Data

* In the absence of IPSec encryption, RPC encryption is used to secure sensitive data over the network in the absence of an IPSec infrastructure. Serviced component assemblies that use RPC encryption include:
[assembly: ApplicationAccessControl(
		                Authentication = AuthenticationOption.Privacy)]
	

Auditing and Logging

* User transactions are logged to an event log. The audit record includes original caller identity from SecurityCallContext.OriginalCaller.

Deployment Considerations

* Port ranges are defined if you use dynamic port range allocation OR static endpoint mapping is configured.
* Secrets are not stored in object constructor strings. Secrets such as database connection strings are encrypted prior to storage.
* The server application run-as account is configured as a least-privileged account.

Impersonation

* The impersonation level is configured correctly. For ASP.NET clients, the impersonation level is configured in Machine.config on the <processModel> element.
* For Enterprise Services client applications, the level is configured in the COM+ catalog.
* Serviced component assemblies define the required impersonation level by using the ApplicationAccessControl attribute as shown below:
[assembly: ApplicationAccessControl(
ImpersonationLevel=ImpersonationLevelOption.Identify)]

Administrator Checklist

Check Description
		 Latest COM+ updates and patches are installed. 
		 Object constructor strings do not contain plain text secrets. 
		 COM+ administration components are restricted. 
		 Impersonation level that is set for the application is correct. 
		 Server applications are configured to run with a least-privileged account. 
	
Server applications do not run using the identity of the interactively logged on user.

DTC service is disabled if it is not required.



Return to HomePage
Microsoft Communities