Enterprise Services (.NET 1.1) Security Checklist
From Guidance Share
Jump to navigationJump to search
- J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan
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
- 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.