Application Security Checklist
The following is a list of best practices for application deployment.
- Configure all channel-level or application-level authentication and authorization.
- All API requests must be sent from authorized systems using key credentials.
Multiple systems (such as web servers, CRM, ESB, Campaign Management) can
connect to an application.
These systems perform their own user level access control; however, in this zone there should be no unauthenticated APIs.
- All communication between client and server services or pods is encrypted
using HTTPS.
Note that the HTTPS certificate and end point can terminate on a web server in Zone 3. The encryption processing load is cheaper to balance among multiple web servers than application servers in Zone 4. Also, unencrypted HTTP communication can be subject to more restrictive Layer 7 routing rules (for example, to only let correctly formed URL and payload requests through to Zone 4).
- Nodes hosting application pods are placed behind a reverse proxy web server
where only approved URL paths are permitted from internet.
Most simple distributed denial-of-service attacks are not sophisticated enough to pass these well-formed URL checks, and it is far safer for malformed requests to be rejected in the outer security zones.
- Use an API management gateway to secure APIs.
API management abstracts the security logic out of the APIs and applies them at the API interface. This allows fine-grain enforcement of rules through authentication (OAuth) and decisions through an Attribute based Authorization engine (XACML).
- User-level authentication and authorization should exist in any web server or mobile back-end (within Zone 2). The Business API Gateway authorizes the connecting service but does not validate user-level permissions.