Pular para o conteúdo principal

Pessoas — Grupos e Usuários

Entidade Group

apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-payments
annotations:
github.com/team-slug: team-payments # vincula ao time GitHub para SSO
platform.myorg/role: developer
platform.myorg/domains: "payments"
platform.myorg/slack-channel: "#team-payments"
scaffolder.backstage.io/template: create-group
spec:
type: team
profile:
displayName: Team Payments
email: team-payments@myorg.com
parent: engineering
children: []
members: [jane-doe, john-smith]

Entidade User

apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: jane-doe
annotations:
github.com/user-login: jane-doe # vincula login SSO à entidade do catálogo
platform.myorg/role: developer
platform.myorg/environments: "dev,staging"
scaffolder.backstage.io/template: create-user
spec:
profile:
displayName: Jane Doe
email: jane.doe@myorg.com
memberOf: [team-payments]

Papéis da Plataforma

PapelKubernetesArgoCDdev/stagingprodNamespace de plataforma
viewerviewreadonly✅ leitura✅ leitura
developereditdeveloper✅ total❌ bloqueado
leadeditdomain-admin✅ total✅ total
platform-engineeradmindomain-admin✅ total✅ total

O bloqueio de prod do developer é aplicado no nível de RBAC — RoleBindings para namespaces de prod simplesmente não são criados. O ArgoCD aplica via correspondência de padrão de política em nomes de namespace (payments/*-prod-*).

RBAC — Bindings de Grupo (Preferível a Bindings de Usuário)

RoleBindings usam sujeitos de Grupo. Adicionar ou remover um usuário do time GitHub ou do grupo IdP concede ou revoga acesso automaticamente — sem mudanças no Kubernetes:

subjects:
- kind: Group
name: team-payments # GitHub: myorg/team-payments | Okta/Azure AD: team-payments
apiGroup: rbac.authorization.k8s.io

Hierarquia de Grupos (Organograma)

engineering (departamento)
├── team-payments (time) ← template create-group
│ └── squad-gateway (squad)
└── team-platform (time)

Construído a partir de spec.parent e spec.children na entidade Group. A annotation github.com/team-slug habilita filtros de catálogo "De propriedade do meu time".