2 Secure Design and Access Control
Learn how secure architecture, identity, authentication, authorization, least privilege, and layered safeguards work together to control access and limit the impact of failures.
Build security into system design
makes protection part of a system’s structure rather than an afterthought. It identifies what must be protected, who or what may access it, and how those decisions will continue to be enforced if components fail or are attacked.
Security is a concern throughout a system’s life cycle, from requirements and architecture through implementation and operation. Design principles guide architectural choices, but do not replace threat analysis, testing, or ongoing review.
Apply secure design principles
Several principles guide how a system should enforce protection:
: Give each user, service, and process only the access needed for its assigned tasks.
: Check whenever a protected resource or action is requested, not just at login or when a session begins.
: If an decision cannot be made, deny the request rather than granting access by default.
Separation and isolation: Divide sensitive functions and limit communication between components so a compromise in one area is less likely to spread.
: Use multiple, complementary safeguards so failure of one control does not expose the entire system.
Simplicity and reviewability: Keep security rules understandable enough to test, audit, and maintain.
These principles inform architecture, including separation, isolation, modularity, and layering. They work alongside—not in place of—threat analysis, testing, and continuing review.
Distinguish , , and
Access control asks which subject may perform which action on which resource, and under what conditions. A subject may be a person, application, or service; a resource may be a database, file, API, or cloud account.
The terms , , and describe distinct parts of an access decision. represents the claimed user, device, or service. verifies that , for example by using a password and a separate factor. decides whether the authenticated subject may perform a particular action on a resource.
Successful does not mean that the subject has unrestricted access. A user may sign in successfully and still be denied access to payroll data or an administrative operation.
Choose and enforce an model
policies can be organized in different ways:
: Assign permissions to job or service roles, then give subjects access through those roles. For example, a support analyst may read support tickets but not change billing settings.
: Make decisions using attributes such as the subject’s role, the resource’s sensitivity, the requested action, or the current context. For example, an employee may view a record only when assigned to its case and using an approved device.
Whatever the model, enforce on every protected request and limit access to the required data and actions. Deny requests that do not match an explicit rule.
Limit permissions in practice
applies to people and non-human identities, including applications, automated jobs, and cloud services. Practical ways to limit unnecessary access include:
Separate ordinary and administrative accounts; use elevated permissions only for tasks that require them.
Scope permissions to specific resources and actions instead of granting broad, account-wide permissions where possible.
Give each workload a dedicated service and permissions rather than sharing a powerful account or embedding credentials in code.
Limit the duration of elevated access by using time-limited elevation when temporary access is needed.
Remove permissions when someone changes roles or leaves, and periodically check for unnecessary or accumulated privileges.
Separate critical duties. For example, have one person approve a sensitive change and another implement it to reduce the risk of error or misuse.
A cloud application that generates reports might need read access to one reporting dataset. It should not receive permission to edit that dataset, administer the cloud account, or read unrelated customer records. If the application is compromised, narrowly scoped permissions limit what an attacker can do.
Layer safeguards across cloud systems
combines safeguards at different points in a system. A cloud application might use strong for administrators, fine-grained in the application, restricted network paths between services, encrypted connections, protected secrets, and audit logs. These controls address different failure modes; none should be treated as a substitute for the others.
Network segmentation can restrict which systems communicate, but network location alone should not establish trust. A zero-trust approach evaluates access to resources based on and rather than assuming that a user or device is trustworthy because it is inside a network perimeter.
Apply access decisions to users and service identities as well as network flows. Log important decisions and administrative actions, protect those logs from unauthorized changes, and test both permitted and denied requests.
Maintain access controls over time
Secure design builds protection into architecture and operations. establishes who or what is requesting access; verifies that ; determines which actions are allowed. limits each subject to necessary permissions, while combines complementary controls to contain failures.
Apply consistently, deny access unless a policy permits it, and review permissions as systems and responsibilities change.