Credential and Secret Lifecycle Record Template

Informative Appendix (non-normative)

This appendix provides an illustrative template for documenting the lifecycle of credentials and secrets used, encountered, or generated during autonomous penetration testing. It helps platform operators, customers, and reviewers inspect credential provisioning, discovery, access, rotation, revocation, retention, disposal, and exception handling consistently. It does not create or modify APTS requirements.

Purpose

APTS-SE-023 requires a complete lifecycle for credentials and secrets used, encountered, or generated during testing. Related requirements cover discovered credential protection, API authentication, sensitive data handling, retention, and destruction proof. A dedicated lifecycle record helps reviewers answer a practical question: for each credential or secret reference, can the platform show where it came from, who or what used it, how it was protected, and when it was rotated or destroyed?

This appendix shows:

Primary Use Cases

Use a credential and secret lifecycle record when the platform needs to document:

Design Principles

A credential and secret lifecycle record should:

1. Record metadata

Use stable identifiers so the record can be correlated with vault entries, access logs, audit events, and disposal evidence.

Recommended fields:

Suggested status values:

2. Provenance and classification

Document where the credential came from and how sensitive it is.

Recommended fields:

Suggested provenance values:

Suggested secret types:

3. Scope and authorization

Record where the credential can be used and who or what may resolve it.

Recommended fields:

4. Protection controls

Document the controls protecting the secret value and the secret-free reference exposed to the agent.

Recommended fields:

5. Access and usage evidence

Record credential use in an auditable but secret-free way.

Recommended fields:

6. Rotation, revocation, and quarantine

Track lifecycle actions that reduce exposure after use or discovery.

Recommended fields:

7. Retention, disposal, and exceptions

Connect credential handling to retention and destruction evidence.

Recommended fields:

Example YAML Template

secret_lifecycle_record_id: cslr-2026-0042
engagement_id: eng-2026-001
secret_reference_id: credref-7f3a2c
record_version: "1.0"
status: rotated
created_at: "2026-05-10T09:15:00Z"
last_updated_at: "2026-05-12T18:30:00Z"
record_owner: credential-governance-owner

provenance_and_classification:
  provenance: target_discovered
  secret_type: api_key
  data_classification: RESTRICTED
  source_system: app.example.com/.env
  discovered_by_tool_or_agent: web-content-inspection-tool
  discovery_timestamp: "2026-05-10T09:15:00Z"
  plaintext_never_logged_verification:
    verification_method: canary-and-artifact-scan
    verification_result: passed
    evidence_ref: artifact-scan-2026-0510-09

scope_and_authorization:
  authorized_engagement_scope: eng-2026-001
  authorized_targets:
    - app.example.com
  authorized_tools:
    - credential-vault-resolver
    - http-validation-client
  authorized_autonomy_levels:
    - L1 Assisted
    - L2 Supervised
  credential_manager_ref: credential-manager-prod#credref-7f3a2c
  resolution_authority:
    - tool-execution-layer
  reuse_policy: no-autonomous-reuse-without-human-approval
  cross_engagement_reuse_allowed: false
  subprocess_or_remote_agent_delegation:
    allowed: false
    approval_ref: null

protection_controls:
  vault_location_ref: restricted-vault#entry-88421
  encryption_control_ref: vault-policy-2026-restricted
  access_control_policy_ref: vault-acl-eng-2026-001
  secret_reference_format: opaque-reference-only
  redaction_policy_ref: redaction-policy-secrets-v3
  model_context_exposure: reference_only
  log_scrubbing_status: enabled-before-tool-result-persistence
  backup_handling: encrypted-backup-with-source-retention-policy

access_and_usage_evidence:
  - access_event_id: vault-access-2026-771
    timestamp: "2026-05-10T09:18:00Z"
    actor_type: tool_execution_layer
    actor_id: http-validation-client
    tool_or_connector: http-validation-client
    target_ref: app.example.com
    purpose: confirm whether discovered key is active without exposing value to agent context
    approval_ref: human-review-approval-2026-117
    result: active-key-confirmed
    audit_log_ref: audit-log-2026-05-10#event-9912

rotation_revocation_and_quarantine:
  rotation_required: true
  rotation_due_at: "2026-05-10T11:15:00Z"
  rotated_at: "2026-05-10T10:04:00Z"
  revocation_required: true
  revoked_at: "2026-05-10T10:04:00Z"
  quarantine_reason: target-discovered-live-api-key
  customer_notification_ref: notification-2026-0510-credentials
  post_rotation_validation_ref: validation-2026-0510-key-inactive

retention_disposal_and_exceptions:
  retention_policy_ref: retention-policy-restricted-credentials-v2
  retention_expires_at: "2026-08-08T00:00:00Z"
  disposal_method: crypto-shred-vault-entry-and-delete-derived-cache
  destroyed_at: null
  destruction_evidence_ref: pending-until-retention-expiry
  destruction_log_hash: null
  exception_ref: null
  exception_approver_ref: null
  exception_expires_at: null

JSON-Equivalent Structure

{
  "secret_lifecycle_record_id": "cslr-2026-0042",
  "engagement_id": "eng-2026-001",
  "secret_reference_id": "credref-7f3a2c",
  "record_version": "1.0",
  "status": "rotated",
  "provenance_and_classification": {
    "provenance": "target_discovered",
    "secret_type": "api_key",
    "data_classification": "RESTRICTED",
    "source_system": "app.example.com/.env",
    "discovered_by_tool_or_agent": "web-content-inspection-tool",
    "plaintext_never_logged_verification": {
      "verification_method": "canary-and-artifact-scan",
      "verification_result": "passed",
      "evidence_ref": "artifact-scan-2026-0510-09"
    }
  },
  "scope_and_authorization": {
    "authorized_engagement_scope": "eng-2026-001",
    "authorized_targets": ["app.example.com"],
    "authorized_tools": ["credential-vault-resolver", "http-validation-client"],
    "credential_manager_ref": "credential-manager-prod#credref-7f3a2c",
    "reuse_policy": "no-autonomous-reuse-without-human-approval",
    "cross_engagement_reuse_allowed": false
  },
  "protection_controls": {
    "vault_location_ref": "restricted-vault#entry-88421",
    "secret_reference_format": "opaque-reference-only",
    "model_context_exposure": "reference_only",
    "log_scrubbing_status": "enabled-before-tool-result-persistence"
  },
  "rotation_revocation_and_quarantine": {
    "rotation_required": true,
    "rotated_at": "2026-05-10T10:04:00Z",
    "revocation_required": true,
    "revoked_at": "2026-05-10T10:04:00Z",
    "customer_notification_ref": "notification-2026-0510-credentials"
  },
  "retention_disposal_and_exceptions": {
    "retention_policy_ref": "retention-policy-restricted-credentials-v2",
    "retention_expires_at": "2026-08-08T00:00:00Z",
    "disposal_method": "crypto-shred-vault-entry-and-delete-derived-cache",
    "destruction_evidence_ref": "pending-until-retention-expiry"
  }
}

Reviewer Questions

When inspecting a credential and secret lifecycle record, ask:

Relationship to Existing APTS Artifacts

This template complements, but does not replace:

This template can help collect evidence for: