Use the following checks if you build serviced components .
Check | Description |
---|---|
| Call-level authentication is used at minimum to prevent anonymous access. Serviced component assemblies include: [assembly: ApplicationAccessControl( Authentication = AuthenticationOption.Call)] |
Check | Description |
---|---|
| 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. |
Check | Description |
---|---|
| 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. |
Check | Description |
---|---|
| 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)] |
Check | Description |
---|---|
| User transactions are logged to an event log. The audit record includes original caller identity from SecurityCallContext.OriginalCaller . |
Check | Description |
---|---|
| 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. |
Check | Description |
---|---|
| 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)] |