Agdlp Best Practice
To follow the agdlp best practice, place user accounts into global role groups first. Then nest those global groups inside domain local groups that hold specific resource permissions. Many IT teams start by granting file or database rights straight to single users. That shortcut creates messy access lists that take hours to audit and fix later. Overbroad groups also let staff read or write sensitive data beyond their actual job. How the agdlp best practice structures directory groups The acro
Best Practice: the complete guide
Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.
To follow the agdlp best practice, place user accounts into global role groups first. Then nest those global groups inside domain local groups that hold specific resource permissions. Many IT teams start by granting file or database rights straight to single users. That shortcut creates messy access lists that take hours to audit and fix later. Overbroad groups also let staff read or write sensitive data beyond their actual job.
How the agdlp best practice structures directory groups
The acronym stands for accounts, global groups, domain local groups, and resource permissions. First, you create an account for each person or service on your team. Second, you group those accounts by job role inside a global group. For example, all backend developers join one global group based on their daily work. Third, you create a domain local group for a single target resource action. That group might allow read rights on a specific production log folder. Fourth, you put the global group inside the domain local group. Last, you attach the read permission directly to the domain local group.
This clear chain keeps your directory clean as your company grows over time. When a new engineer joins, you add their account to the developer global group. They get all needed rights right away without touching any target server rules. When someone changes jobs, you move them to a new global group. You never have to hunt through hundreds of folders to remove old user names.
Common group nesting mistakes to avoid
Teams often break the chain by putting user accounts straight into domain local groups. Others attach permissions directly to global groups to save a few minutes of setup. Both shortcuts ruin the clean split between job roles and resource rules. Once you mix roles and resource rules, group names lose their clear meaning. Admins then fear removing any group because they do not know what might break.
Another common mistake is making a single global group for a whole department. If everyone in engineering shares one group, junior staff get senior database rights. Instead, split global groups by exact job duties and seniority levels. Keep domain local groups narrow so each one controls one clear permission level. Use clear naming rules so any admin can read a group purpose at a glance.
Best Practice: architecture patterns and best practices
Continue reading? Get the full guide.
Free. No spam. Unsubscribe anytime.
What directory group nesting solves and what it misses
Directory group nesting solves the problem of managing who can log into a resource. It gives auditors a clear map of which job roles hold which server rights. It also cuts down the daily work needed to onboard or offboard staff.
Still, directory groups only check identity at the moment a user logs in. Once a session starts, group rules cannot see what commands or queries run next. An engineer in a valid group still holds full power during that open session. Directory groups cannot inspect individual SQL statements or block a risky drop table command. They also cannot mask emails, phone numbers, or card numbers in query results. Static group membership stays active all day, even when no ticket needs production work. Teams need runtime controls to check actions in flight and protect sensitive fields.
Add runtime guardrails and masking beside your databases and APIs
Login rules, role grants, and CI checks govern who connects to your stack. Yet any allowed script, engineer, or AI agent still runs commands with the full scope of its role. For workloads on Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes, SSH, or internal HTTP services, hoop.dev sits beside the service as an open-source proxy, a sidecar for your database or API.
Before a query runs, hoop.dev guardrails check the statement against your rules. An AI Analyzer you configure can score intent or hold risky calls for human review. Next, hoop.dev data masking rewrites sensitive fields in responses, and each verdict is logged per listener. Explore the MIT-licensed project on GitHub.
Frequently asked questions
What does each letter in AGDLP stand for?
The letters stand for accounts, global groups, domain local groups, and permissions. User accounts go into global groups, which nest into domain local groups with permissions.
When should you add universal groups to the chain?
Add universal groups between global and domain local groups when you run multiple domains. Universal groups let you combine global roles across domains before assigning local resource rights.
Why not assign resource permissions directly to global groups?
Assigning permissions to global groups ties a job role to one fixed server setup. Keeping permissions on domain local groups lets you grant access across many teams cleanly.
Related guides
In this post