ProficientNowTechRFCs

2. Requirements

RFC-PAM-0001                                                    Section 2
Category: Standards Track                                    Requirements

2. Requirements

← Previous: Introduction | Index | Next: Architecture →


2.1 Problem Restatement

The platform requires a privileged access management system that:

  1. Eliminates standing credentials for infrastructure access
  2. Records all privileged sessions for audit and compliance
  3. Integrates with the platform identity system (RFC-IAM-0001)
  4. Uses Vault as the credential authority (RFC-SECOPS-0001)
  5. Supports just-in-time access with approval workflows
  6. Enables GitOps management of access policies

The system must handle SSH, database, and Kubernetes access through a unified model while maintaining the authorization ceiling established by Azure AD group memberships.

2.2 Design Goals

2.2.1 Primary Goals

IDGoalRationale
G-1Zero direct accessAll privileged access flows through Teleport
G-2Certificate-based authenticationEliminate long-lived SSH keys
G-3Ephemeral database credentialsNo standing database passwords
G-4Comprehensive session recordingComplete audit trail for compliance
G-5Identity-derived authorizationAccess based on Keycloak identity
G-6Just-in-time elevated accessTime-bound grants with approval
G-7GitOps policy managementVersion-controlled access policies

2.2.2 Secondary Goals

IDGoalRationale
G-8Minimal user frictionSecurity that doesn't impede productivity
G-9Self-service where appropriateReduce operational bottlenecks
G-10ExtensibilitySupport future resource types
G-11High availabilityCritical path for incident response

2.3 Non-Goals

The following are explicitly out of scope for this RFC:

Non-GoalRationaleCovered By
Web application SSODifferent access patternRFC-IAM-0001
Service-to-service authenticationMachine identity, not humanRFC-WORKLOAD-IDENTITY
Secret storage and rotationVault mechanicsRFC-SECOPS-0001
Network segmentationComplementary controlRFC-TENANT-SECURITY
Self-service request UIPortal functionalityRFC-DEVELOPER-PLATFORM
CI/CD pipeline credentialsAutomated workloadsRFC-WORKLOAD-IDENTITY
API token managementService identityRFC-WORKLOAD-IDENTITY

2.4 Architectural Invariants

These rules MUST always hold. Violations indicate architecture failure.

2.4.1 Identity Invariants

IDInvariantVerification
INV-1All privileged access MUST be authenticated through KeycloakTeleport OIDC connector is sole auth method
INV-2Teleport roles MUST NOT exceed Azure AD group permissionsRole-to-group mapping respects ceiling
INV-3Local user accounts on Teleport MUST NOT existTeleport user database is empty

INV-1: Keycloak Authentication

Teleport MUST NOT authenticate users through any mechanism other than Keycloak OIDC. This ensures:

  • Single identity source across the platform
  • Azure AD group memberships are authoritative
  • User termination in Azure AD revokes all access

INV-2: Authorization Ceiling

Teleport roles MUST be designed such that a user cannot obtain permissions exceeding what their Azure AD groups permit. The hierarchy is:

Azure AD Groups (immutable ceiling)

    └── Keycloak Groups (≤ Azure AD)

            └── Teleport Roles (≤ Keycloak)

                    └── Resource Access (≤ Teleport)

INV-3: No Local Users

Teleport MUST NOT maintain local user accounts. All users MUST authenticate through Keycloak. This prevents:

  • Shadow identity management
  • Bypass of Azure AD termination
  • Inconsistent access records

2.4.2 Access Control Invariants

IDInvariantVerification
INV-4All privileged sessions MUST flow through TeleportDirect SSH/DB connections blocked
INV-5Direct SSH key authentication MUST be disabled on managed hostsPubkeyAuthentication no or cert-only in sshd_config
INV-6All interactive sessions MUST be recordedRecording enabled, storage verified
INV-7Session recordings MUST be stored in immutable storageWrite-once storage, retention policy

INV-4: Teleport as Single Access Point

All privileged access MUST transit through Teleport. This is enforced through:

  • Network policies blocking direct SSH (port 22) from user networks
  • Database credentials only issued through Teleport
  • Kubernetes API access through Teleport proxy

INV-5: Certificate-Only SSH

Managed hosts MUST reject direct SSH key authentication. Only certificates signed by the Vault SSH CA (via Teleport) are accepted. This ensures:

  • No long-lived SSH keys
  • Automatic credential expiration
  • Audit trail for all sessions

INV-6: Mandatory Recording

All interactive sessions MUST be recorded. This includes:

  • SSH terminal sessions
  • Database query sessions
  • Kubernetes exec sessions
  • RDP sessions

Recording MUST NOT be optional or bypassable.

INV-7: Immutable Audit Storage

Session recordings MUST be stored in append-only/write-once storage. This ensures:

  • Recordings cannot be deleted by users
  • Tampering is detectable
  • Compliance retention requirements are met

2.4.3 Credential Invariants

IDInvariantVerification
INV-8SSH certificates MUST be signed by Vault SSH CACertificate chain verification
INV-9Database credentials MUST be ephemeral (Vault dynamic secrets)No static database passwords
INV-10Credential TTL MUST NOT exceed session durationCredentials expire with session

INV-8: Vault SSH CA Authority

All SSH certificates MUST be signed by Vault's SSH secrets engine. Teleport acts as a certificate request broker, not a CA. This centralizes CA authority in Vault per RFC-SECOPS-0001.

INV-9: Ephemeral Database Credentials

Database access MUST use Vault dynamic secrets. Credentials are:

  • Generated on-demand for each session
  • Unique per user per session
  • Automatically revoked at TTL expiry

Static database passwords MUST NOT be used for human access.

INV-10: Credential-Session Binding

Credentials issued for a session MUST NOT outlive that session. When a session ends:

  • SSH certificates become invalid (short TTL)
  • Database credentials are revoked
  • No credential can be reused

2.4.4 GitOps Invariants

IDInvariantVerification
INV-11Teleport role definitions MUST be stored in GitRoles exist in platform repository
INV-12User-to-role assignments MAY be managed administrativelyOperational flexibility preserved
INV-13Agent enrollment tokens MUST be distributed via ESOTokens sourced from Vault

INV-11: Roles in Git

Teleport role definitions (what permissions exist) MUST be version-controlled in Git. This provides:

  • Audit trail for policy changes
  • Peer review for role modifications
  • Reproducible access configuration

INV-12: Administrative Assignments

User-to-role assignments (who has what role) MAY be managed through administrative interfaces rather than Git. This preserves operational flexibility for:

  • Rapid access changes during incidents
  • Time-sensitive role grants
  • JIT access approvals

INV-13: ESO for Agent Secrets

Teleport agent enrollment tokens and other bootstrap secrets MUST be distributed through External Secrets Operator per RFC-SECOPS-0001 patterns. Tokens MUST NOT be:

  • Hardcoded in manifests
  • Stored in Git
  • Manually distributed

2.5 Success Criteria

2.5.1 Security Criteria

CriterionMeasurement
No standing SSH keysZero authorized_keys entries on managed hosts
No static DB passwordsAll DB access via Vault dynamic credentials
Complete session coverage100% of privileged sessions recorded
Timely revocationAccess revoked within 5 minutes of identity removal

2.5.2 Operational Criteria

CriterionMeasurement
Access availability99.9% uptime for Teleport proxy
Session latency<500ms additional latency for proxied sessions
Recording retrievalSession playback available within 1 minute
JIT approval timeP95 approval response <15 minutes

2.5.3 Compliance Criteria

CriterionMeasurement
Audit completenessAll access events queryable by user, resource, time
Retention complianceRecordings retained per policy (default: 1 year)
Access justificationJIT requests linked to sessions
Approval evidenceApproval chain captured in audit log

Document Navigation


End of Section 2