ProficientNowTechRFCs

10. Access Requests

RFC-PAM-0001                                                   Section 10
Category: Standards Track                               Access Requests

10. Access Requests

← Previous: Session Management | Index | Next: GitOps Integration →


10.1 Just-in-Time Access Model

10.1.1 Overview

Just-in-time (JIT) access provides elevated permissions only when needed, for a limited duration, with explicit approval. This eliminates standing elevated access.

10.1.2 JIT vs Standing Access

AspectStanding AccessJust-in-Time Access
DurationIndefiniteTime-bound (e.g., 2 hours)
AvailabilityAlways availableOn-demand with approval
AccountabilityAssumed consentExplicit request + approval
Audit trailRole assignment onlyRequest, approval, usage
Risk exposureContinuousOnly during grant period

10.1.3 When JIT is Required

ScenarioJIT RequiredRationale
Production SSHYesHigh-impact environment
Production databaseYesSensitive data access
Root/admin accessYesPrivileged operations
Development accessNo (self-approve)Low risk, high frequency
Staging accessConfigurableMedium risk

10.2 Request Workflow

10.2.1 Request Flow

10.2.2 Request Components

A JIT access request includes:

ComponentDescriptionExample
RequesterWho is requestingjane.doe@example.com
Roles requestedWhat elevated accesssre-oncall
ResourcesSpecific resources (optional)prod-db-01
DurationHow long needed2 hours
ReasonJustificationIncident INC-12345
UrgencyRequest priorityhigh

10.2.3 Request States

StateDescriptionTransitions
PendingAwaiting approval→ Approved, Denied, Expired
ApprovedAccess granted→ Active → Expired
ActiveCurrently using access→ Expired, Revoked
ExpiredTTL reachedTerminal
DeniedRequest rejectedTerminal
RevokedManually revokedTerminal

10.3 Approval Chains

10.3.1 Approval Requirements

Different access levels require different approvals:

Access TypeEnvironmentRequired Approvers
SSHDevelopmentSelf-approve
SSHStagingTeam lead OR SRE
SSHProductionSRE oncall AND Manager
DatabaseNon-prod (readonly)Self-approve
DatabaseProductionDBA oncall
Root accessAnySecurity AND Manager
Kubernetes execNon-prodSelf-approve
Kubernetes execProductionSRE oncall

10.3.2 Approval Logic

OperatorMeaning
ORAny one approver sufficient
ANDAll listed approvers required
Self-approveAutomatically approved

10.3.3 Approver Resolution

Approvers are determined by:

MethodDescription
Role-basedAnyone with approver role
Team-basedTeam lead of requester's team
Oncall-basedCurrent oncall for relevant service
Named individualsSpecific users

10.3.4 Escalation

If approval is not received:

ScenarioAction
No response in 30 minutesEscalate to secondary approvers
No response in 1 hourRequest expires
Urgent requestNotify via PagerDuty

10.4 Time-Bound Access Grants

10.4.1 Grant Properties

Approved requests result in time-bound grants:

PropertyDescriptionConfigurable
Start timeWhen access beginsImmediate or scheduled
DurationHow long access lastsPer request, capped by policy
Max durationMaximum allowedPer role definition
ExtensionCan duration be extendedPer policy

10.4.2 Duration Guidelines

Access TypeTypical DurationMax Duration
Incident response2 hours8 hours
Debugging1 hour4 hours
Maintenance window4 hours8 hours
Emergency/break-glass30 minutes1 hour

10.4.3 Access Lifecycle

10.4.4 Automatic Revocation

At TTL expiry:

  1. Temporary role removed from user
  2. Active sessions may continue (configurable)
  3. New sessions denied
  4. Audit event logged

10.5 Notification Integration

10.5.1 Notification Channels

ChannelUse CaseConfiguration
SlackTeam notificationsWebhook + channel
PagerDutyUrgent escalationIntegration key
EmailFormal notificationSMTP server
Microsoft TeamsEnterprise environmentsWebhook
Custom webhookIntegration flexibilityHTTP endpoint

10.5.2 Notification Events

EventNotified PartiesChannel
Request createdApproversSlack, Email
Request approvedRequesterSlack, Email
Request deniedRequesterSlack, Email
Request expiredRequesterSlack
Access expiring soonUser with accessSlack
Urgent requestOncallPagerDuty

10.5.3 Notification Content

Request notification includes:

FieldDescription
RequesterWho is asking
RolesWhat access is requested
DurationHow long
ReasonWhy (from requester)
Approve linkOne-click approval
Deny linkOne-click denial

10.5.4 Example Slack Notification

🔐 Access Request

User: jane.doe@example.com
Requesting: sre-oncall role
Duration: 2 hours
Reason: Incident INC-12345 - Production database investigation

[Approve] [Deny] [View Details]

10.6 Request Audit Trail

10.6.1 Audited Events

Every JIT action is logged:

EventLogged Data
Request createdRequester, roles, reason, timestamp
Request approvedApprover, timestamp, comments
Request deniedDenier, timestamp, reason
Access grantedStart time, end time, scope
Access usedSessions within grant period
Access expiredEnd timestamp, sessions at expiry
Access revokedRevoker, timestamp, reason

10.6.2 Linking Requests to Sessions

Sessions are linked to the access request that enabled them:

This enables answering: "What did this user do with the access they requested?"

10.6.3 Compliance Evidence

JIT requests provide compliance evidence:

RequirementEvidence
Access was authorizedApproval record
Access was time-limitedGrant duration
Access was justifiedRequest reason
Access was used appropriatelyLinked session recordings

Document Navigation


End of Section 10