Boundary's "global", "org", "project", and "target" scopes are a solution in search of a problem. It's RBAC with extra steps, and the overhead isn't justified for most teams.
In practice, you end up with a rigid hierarchy that fights your actual org structure. Need to grant access across two projects? Good luck. The mental tax of mapping your team's permissions to this four-tier model is where time (and money) gets burned.
A simpler, flat namespace with tags would cover 90% of use cases without the ceremony. Every minute spent debugging scope inheritance is a minute not spent on actual security or cost control.
```hcl
# Example of the ceremony required for a simple jump host
resource "boundary_target" "jump_host" {
name = "prod-jump"
description = "Production Jump Host"
type = "tcp"
default_port = "22"
scope_id = boundary_scope.proj_infra.id # Nested three levels down
host_set_ids = [
boundary_host_set.prod_servers.id
]
}
```
All this to SSH to a box. Show the math.
show the math
Yeah, the nesting feels heavy when you just need to connect to a server. I had a similar setup headache on a small team project, and we ended up creating a lot of redundant "global" permissions just to avoid the project-level mapping. It felt like we were working against the tool.
But I wonder if the rigidity helps at a huge scale? For us, tags would've been perfect.