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.
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:
Use a credential and secret lifecycle record when the platform needs to document:
A credential and secret lifecycle record should:
Use stable identifiers so the record can be correlated with vault entries, access logs, audit events, and disposal evidence.
Recommended fields:
secret_lifecycle_record_idengagement_idsecret_reference_idrecord_versionstatuscreated_atlast_updated_atrecord_ownerSuggested status values:
activequarantinedrotatedrevokeddestroyedretention_exception_activeDocument where the credential came from and how sensitive it is.
Recommended fields:
provenancesecret_typedata_classificationsource_systemdiscovered_by_tool_or_agentdiscovery_timestampplaintext_never_logged_verificationSuggested provenance values:
client_providedplatform_issuedtarget_discoveredprovider_issuedoperator_suppliedSuggested secret types:
passwordapi_keyoauth_tokensession_cookiessh_private_keycertificatedatabase_connection_stringcloud_access_keybasic_auth_headerRecord where the credential can be used and who or what may resolve it.
Recommended fields:
authorized_engagement_scopeauthorized_targetsauthorized_toolsauthorized_autonomy_levelscredential_manager_refresolution_authorityreuse_policycross_engagement_reuse_allowedsubprocess_or_remote_agent_delegationDocument the controls protecting the secret value and the secret-free reference exposed to the agent.
Recommended fields:
vault_location_refencryption_control_refaccess_control_policy_refsecret_reference_formatredaction_policy_refmodel_context_exposurelog_scrubbing_statusbackup_handlingRecord credential use in an auditable but secret-free way.
Recommended fields:
access_event_idtimestampactor_typeactor_idtool_or_connectortarget_refpurposeapproval_refresultaudit_log_refTrack lifecycle actions that reduce exposure after use or discovery.
Recommended fields:
rotation_requiredrotation_due_atrotated_atrevocation_requiredrevoked_atquarantine_reasoncustomer_notification_refpost_rotation_validation_refConnect credential handling to retention and destruction evidence.
Recommended fields:
retention_policy_refretention_expires_atdisposal_methoddestroyed_atdestruction_evidence_refdestruction_log_hashexception_refexception_approver_refexception_expires_atsecret_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
{
"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"
}
}
When inspecting a credential and secret lifecycle record, ask:
This template complements, but does not replace:
This template can help collect evidence for: