This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Fresh Hosts register directly with the trusted Cloud API
|
||||
The Cloud API SHALL accept a first Host registration without a configured
|
||||
enrollment token or Authorization header, assign a durable `host_id`, and store
|
||||
only the digest of the Host-generated high-entropy secret.
|
||||
|
||||
#### Scenario: Fresh Host registers without static configuration
|
||||
- **WHEN** a Host Agent with no cached identity sends a valid instance
|
||||
identifier and generated Host secret to the enrollment endpoint
|
||||
- **THEN** the Cloud API creates or returns the durable Host identity and does
|
||||
not require a pre-shared deployment credential
|
||||
|
||||
#### Scenario: Registration is retried by the same Host
|
||||
- **WHEN** the same Host retries registration with its original instance
|
||||
identifier and candidate secret after losing the response
|
||||
- **THEN** the Cloud API returns the existing Host identity without creating a
|
||||
duplicate Host row
|
||||
|
||||
### Requirement: Registered Hosts authenticate all later operational requests
|
||||
The system SHALL require the persisted Host secret for device enrollment,
|
||||
heartbeat, claim, renewal, and result operations after first registration, and
|
||||
SHALL bind each accepted request to its registered `host_id`.
|
||||
|
||||
#### Scenario: Registered Host sends a heartbeat
|
||||
- **WHEN** a Host presents its persisted secret for its own Host identity
|
||||
- **THEN** the Cloud API accepts the heartbeat subject to normal validation
|
||||
|
||||
#### Scenario: Caller attempts a Host operation without its secret
|
||||
- **WHEN** a caller accesses any post-registration Host operation without a
|
||||
valid secret bound to the path Host identity
|
||||
- **THEN** the Cloud API rejects the operation without changing Host state
|
||||
|
||||
### Requirement: Host Agent configuration contains no static Cloud credential
|
||||
The Host Agent SHALL use its cached identity when present and otherwise perform
|
||||
direct registration, without `HOST_AGENT_HOST_ID`, `HOST_AGENT_TOKEN`, or
|
||||
`HOST_AGENT_ENROLLMENT_TOKEN` configuration.
|
||||
|
||||
#### Scenario: Fresh Host starts with only its local state path
|
||||
- **WHEN** a Host Agent starts with no cached Cloud identity and no static Host
|
||||
credential environment values
|
||||
- **THEN** it generates and persists an identity through direct registration
|
||||
before starting heartbeat or assignment polling
|
||||
Reference in New Issue
Block a user