infra/stacks/authentik/tripit-external.tf

23 lines
1.4 KiB
Terraform
Raw Normal View History

# "TripIt External" group — containment anchor for publicly self-enrolled TripIt
# users (ADR-0020 in the tripit repo). Members are admitted to
# tripit.viktorbarzin.me ONLY and denied every other *.viktorbarzin.me
# forward-auth host by the prepended branch in admin-services-restriction.tf.
#
# Created EMPTY and PARENTLESS, on purpose:
# * EMPTY — the no-lockout guarantee. Zero members at apply time => the
# prepended policy branch matches zero existing principals => it cannot
# change anyone's authorization (contrast authentik_group "T3 Users", which
# is created WITH members atomically because THAT gate's safety property is
# the opposite). Membership is assigned at RUNTIME by the tripit-enrollment
# flow's user_write "Create users group" option (UI-managed per the ADR
# management split). Terraform owns only the group's EXISTENCE.
# * PARENTLESS — do NOT make this a child of "Allow Login Users". The sensitive
# OIDC apps gate on "Home Server Admins" / "Headscale Users" / "Wrongmove
# Users" (children of "Allow Login Users") or, for Vault, on "Allow Login
# Users" itself (bound as part of ADR-0020). Keeping External out of that
# tree is what stops these users reaching OIDC apps — mirrors guest.tf, which
# keeps the guest group out of "Allow Login Users" for the same reason.
resource "authentik_group" "tripit_external" {
name = "TripIt External"
}