You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/spec/draft/terminology.md
+42-37Lines changed: 42 additions & 37 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -99,18 +99,18 @@ of build types](/provenance/v1#index-of-build-types).
99
99
100
100
| Primary Term | Description
101
101
| --- | ---
102
-
| Platform | System that allows tenants to run builds. Technically, it is the transitive closure of software and services that must be trusted to faithfully execute the build. It includes software, hardware, people, and organizations.
102
+
| <spanid="platform">Platform</span> | System that allows tenants to run builds. Technically, it is the transitive closure of software and services that must be trusted to faithfully execute the build. It includes software, hardware, people, and organizations.
103
103
| Admin | A privileged user with administrative access to the platform, potentially allowing them to tamper with builds or the control plane.
104
104
| Tenant | An untrusted user that builds an artifact on the platform. The tenant defines the build steps and external parameters.
105
105
| Control plane | Build platform component that orchestrates each independent build execution and produces provenance. The control plane is managed by an admin and trusted to be outside the tenant's control.
106
106
| Build | Process that converts input sources and dependencies into output artifacts, defined by the tenant and executed within a single build environment on a platform.
107
107
| Steps | The set of actions that comprise a build, defined by the tenant.
108
-
| Build environment | The independent execution context in which the build runs, initialized by the control plane. In the case of a distributed build, this is the collection of all such machines/containers/VMs that run steps.
108
+
| <spanid="build-environment">Build environment</span> | The independent execution context in which the build runs, initialized by the control plane. In the case of a distributed build, this is the collection of all such machines/containers/VMs that run steps.
109
109
| Build caches | An intermediate artifact storage managed by the platform that maps intermediate artifacts to their explicit inputs. A build may share build caches with any subsequent build running on the platform.
110
110
| External parameters | The set of top-level, independent inputs to the build, specified by a tenant and used by the control plane to initialize the build.
111
111
| Dependencies | Artifacts fetched during initialization or execution of the build process, such as configuration files, source artifacts, or build tools.
112
112
| Outputs | Collection of artifacts produced by the build.
113
-
| Provenance | Attestation (metadata) describing how the outputs were produced, including identification of the platform and external parameters.
113
+
| <spanid="provenance">Provenance</span> | Attestation (metadata) describing how the outputs were produced, including identification of the platform and external parameters.
114
114
115
115
<details><summary>Ambiguous terms to avoid</summary>
116
116
@@ -131,46 +131,51 @@ of build types](/provenance/v1#index-of-build-types).
The Build Environment (BuildEnv) track expands upon the [build model](#build-model)
135
-
by explicitily separating the *build image* and *compute platform* from the abstract
136
-
build environment and build platform.
137
-
138
-
A typical build environment will go through the following lifecycle:
139
-
140
-
1.*Build image creation*: A build image producer creates different build
141
-
images through a dedicated build process. For the SLSA BuildEnv track,
142
-
the build image producer outputs provenance describing this process.
143
-
2.*Build environment instantiation*: The hosted build platform calls
144
-
into the *host interface* to create a new instance of a build environment
145
-
from a given build image. The *build agent* begins to wait for an incoming
146
-
build dispatch. For the SLSA BuildEnv track, the host interface in the
147
-
compute platform attests to the integrity of the environment's *initial
148
-
state* during its boot process.
149
-
3.*Build dispatch*: When the tenant dispatches a new build, the hosted
150
-
build platform assigns the build to a created build environment.
151
-
For the SLSA BuildEnv track, the build platform
152
-
attests to the binding between a build environment and *build ID*.
153
-
4.*Build execution*: Finally, the *build agent* within the
154
-
environment executes the tenant's build definition.
155
-
156
-
The BuildEnv track uses the following roles, components, and concepts:
134
+
The Build Environment (BuildEnv) track expands upon the
135
+
[build model](#build-model) by explicitily separating the
136
+
[build image](#build-image) and [compute platform](#compute-platform) from the
137
+
abstract [build environment](#build-environment) and [build platform](#platform).
138
+
Specifically, the BuildEnv track defines the following roles, components, and concepts:
157
139
158
140
| Primary Term | Description
159
141
| --- | ---
160
-
| Build ID | An immutable identifier assigned uniquely to a specific execution of a tenant's build. In practice, the build ID may be an identifier, such as a UUID, associated with the build execution.
161
-
| Build image | The template for a build environment, such as a VM or container image. Individual components of a build image include the root filesystem, pre-installed guest OS and packages, the build executor, and the build agent.
162
-
| Build image producer | The party that creates and distributes build images. In practice, the build image producer may be the hosted build platform or a third party in a bring-your-own (BYO) build image setting.
163
-
| Build agent | A build platform-provided program that interfaces with the build platform's control plane from within a running build environment. The build agent is also responsible for executing the tenant’s build definition, i.e., running the build. In practice, the build agent may be loaded into the build environment after instantiation, and may consist of multiple components. All build agent components must be measured along with the build image.
164
-
| Build dispatch | The process of assigning a tenant's build to a pre-deployed build environment on a hosted build platform.
165
-
| Compute platform | The compute system and infrastructure underlying a build platform, i.e., the host system (hypervisor and/or OS) and hardware. In practice, the compute platform and the build platform may be managed by the same or distinct organizations.
166
-
| Host interface | The component in the compute platform that the hosted build platform uses to request resources for deploying new build environments, i.e., the VMM/hypervisor or container orchestrator.
167
-
| Boot process | In the context of builds, the process of loading and executing the layers of firmware and/or software needed to start up a build environment on the host compute platform.
168
-
| Measurement | The cryptographic hash of some component or system state in the build environment, including software binaries, configuration, or initialized run-time data.
169
-
| Quote | (Virtual) hardware-signed data that contains one or more (virtual) hardware-generated measurements. Quotes may additionally include nonces for replay protection, firmware information, or other platform metadata.
170
-
| Reference value | A specific measurement used as the good known value for a given build environment component or state.
142
+
| <spanid="build-id">Build ID</span> | An immutable identifier assigned uniquely to a specific execution of a tenant's build. In practice, the build ID may be an identifier, such as a UUID, associated with the build execution.
143
+
| <spanid="build-image">Build image</span> | The template for a build environment, such as a VM or container image. Individual components of a build image include the root filesystem, pre-installed guest OS and packages, the build executor, and the build agent.
144
+
| <spanid="build-image-producer">Build image producer</span> | The party that creates and distributes build images. In practice, the build image producer may be the hosted build platform or a third party in a bring-your-own (BYO) build image setting.
145
+
| <spanid="build-agent">Build agent</span> | A build platform-provided program that interfaces with the build platform's control plane from within a running build environment. The build agent is also responsible for executing the tenant’s build definition, i.e., running the build. In practice, the build agent may be loaded into the build environment after instantiation, and may consist of multiple components. All build agent components must be measured along with the build image.
146
+
| <spanid="build-dispatch">Build dispatch</span> | The process of assigning a tenant's build to a pre-deployed build environment on a hosted build platform.
147
+
| <spanid="compute-platform">Compute platform</span> | The compute system and infrastructure underlying a build platform, i.e., the host system (hypervisor and/or OS) and hardware. In practice, the compute platform and the build platform may be managed by the same or distinct organizations.
148
+
| <spanid="host-interface">Host interface</span> | The component in the compute platform that the hosted build platform uses to request resources for deploying new build environments, i.e., the VMM/hypervisor or container orchestrator.
149
+
| <spanid="boot-process">Boot process</span> | In the context of builds, the process of loading and executing the layers of firmware and/or software needed to start up a build environment on the host compute platform.
150
+
| <spanid="measurement">Measurement</span> | The cryptographic hash of some component or system state in the build environment, including software binaries, configuration, or initialized run-time data.
151
+
| <spanid="quote">Quote</span> | (Virtual) hardware-signed data that contains one or more (virtual) hardware-generated measurements. Quotes may additionally include nonces for replay protection, firmware information, or other platform metadata. (Based on the definition in [section 9.5.3.1](https://trustedcomputinggroup.org/wp-content/uploads/TPM-2.0-1.83-Part-1-Architecture.pdf) of the TPM 2.0 spec)
152
+
| <spanid="reference-value">Reference value</span> | A specific measurement used as the good known value for a given build environment component or state.
171
153
172
154
**TODO:** Disambiguate similar terms (e.g., image, build job, build executor/runner)
173
155
156
+
#### Build environment lifecycle
157
+
158
+
A typical build environment will go through the following lifecycle:
159
+
160
+
1.*Build image creation*: A [build image producer](#build-image-producer)
161
+
creates different [build images](#build-image) through a dedicated build
162
+
process. For the SLSA BuildEnv track, the build image producer outputs
163
+
[provenance](#provenance) describing this process.
164
+
2.*Build environment instantiation*: The [hosted build platform](#platform)
165
+
calls into the [host interface](#host-interface) to create a new instance
166
+
of a build environment from a given build image. The
167
+
[build agent](#build-agent) begins to wait for an incoming
168
+
[build dispatch](#build-dispatch).
169
+
For the SLSA BuildEnv track, the host interface in the compute platform
170
+
attests to the integrity of the environment's initial state during its
171
+
[boot process](#boot-process).
172
+
3.*Build dispatch*: When the tenant dispatches a new build, the hosted
173
+
build platform assigns the build to a created build environment.
174
+
For the SLSA BuildEnv track, the build platform attests to the binding
175
+
between a build environment and [build ID](#build-id).
176
+
4.*Build execution*: Finally, the build agent within the environment executes
177
+
the tenant's build definition.
178
+
174
179
### Package model
175
180
176
181
Software is distributed in identifiable units called <dfn>packages</dfn>
0 commit comments