computers. Many services also rely on the authentication and authorization
service to be able to distinguish one person from another, particularly where
different levels of access are given based on identity. The failure of some
services, such as DNS, causes cascading failures of all the other services that
rely on them. When building a service, it is important to know the other
services on which it relies.
Machines and software that are part of a service should rely only on hosts
and software that are built to the same standards or higher. A service can be
only as reliable as the weakest link in the chain of services on which it relies.
A service should not gratuitously rely on hosts that are not part of the service.
Access to server machines should be restricted to SAs for reasons of
reliability and security. The more people who are using a machine and the
more things that are running on it, the greater the chance that bad interactions
will happen. Machines that customers use also need to have more things
installed on them so that the customers can access the data they need and use
other network services.
Similarly, a system is only as secure as its weakest link. The security of
client systems is no stronger than the weakest link in the security of the infrastructure.
Someone who can subvert the authentication server can gain
access to clients that rely on it; someone who can subvert the DNS servers
could redirect traffic from the client and potentially gain passwords. If the
security system relies on that subverted DNS, the security system is vulnerable.
Restricting login and other kinds of access to machines in the security
infrastructure reduces these kinds of risk.
A server should be as simple as possible. Simplicity makes machines more
reliable and easier to debug when they do have problems. Servers should have
the minimum that is required for the service they run, only SAs should have
access to them; and the SAs should log in to them only to do maintenance.
Servers are also more sensitive from a security point of view than desktops
are. An intruder who can gain administrative access to a server can typically
do more damage than with administrative access to a desktop machine. The
fewer people who have access and the less that runs on the machine, the lower
the chance that an intruder can gain access, and the greater the chance that
an intruder will be spotted.
An SA has several decisions to make when building a service: from what
vendor to buy the equipment, whether to use one or many servers for a
complex service, and what level of redundancy to build into the service. A
service should be as simple as possible, with as few dependencies as possible,
to increase reliability and make it easier to support and maintain. Another