Skip to content

Commit 7689b64

Browse files
authored
More detailed snp operations doc (#7166)
1 parent 5be9901 commit 7689b64

File tree

2 files changed

+100
-11
lines changed

2 files changed

+100
-11
lines changed

doc/operations/platforms/snp.rst

Lines changed: 98 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ How to use the AMD SEV-SNP platform
66

77
CCF must run on an AMD CPU which supports SEV-SNP, such as `Azure confidential containers <https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-containers>`_ or `Azure Kubernetes Service with Confidential Containers <https://learn.microsoft.com/en-us/azure/aks/confidential-containers-overview>`_.
88

9-
To use SNP, in the :ref:`operations/configuration:``enclave``` configuration section, the enclave ``platform`` should be set to ``SNP``.
9+
CCF will use the SEV-SNP platform features automatically on the supported hardware.
1010

1111
Attestation
1212
-----------
@@ -45,7 +45,6 @@ AMD VCEK endorsements must be fetched, preferably from the THIM service, but con
4545

4646
.. tip:: See :ccf_repo:`samples/config/start_config_aks_sev_snp.json` for a sample node configuration for Confidential AKS deployments.
4747

48-
4948
Non-Azure Deployment
5049
~~~~~~~~~~~~~~~~~~~~
5150

@@ -74,17 +73,112 @@ Governance Proposals
7473

7574
The following governance proposals can be issued to add/remove these trusted values, e.g. when upgrading the service (see :doc:`/operations/code_upgrade`):
7675

77-
- ``add_snp_host_data``/``remove_snp_host_data``: To add/remove a trusted security policy, e.g. when adding a new trusted container image as part of the code upgrade procedure.
78-
- ``add_snp_uvm_endorsement``/``add_snp_uvm_endorsement``: To add remove a trusted UVM endorsement (Azure deployment only).
76+
- ``add_snp_host_data``/``remove_snp_host_data``: To add/remove a trusted security policy, e.g. when adding a new trusted container image as part of the code upgrade procedure.
77+
- ``add_snp_uvm_endorsement``/``remove_snp_uvm_endorsement``: To add/remove a trusted UVM endorsement (Azure deployment only).
7978
- ``add_snp_measurement``/``remove_snp_measurement``: To add/remove a trusted measurement.
8079
- ``set_snp_minimum_tcb_version_hex``/``remove_snp_minimum_tcb_version``: To add/remove a minimum trusted TCB version.
8180
- ``set_snp_minimum_tcb_version`` was deprecated in CCF 6.0.9 and replaced by ``set_snp_minimum_tcb_version_hex``.
8281

82+
Code update
83+
~~~~~~~~~~~
84+
85+
Check :doc:`/operations/code_upgrade` first.
86+
87+
* Use ``add_snp_host_data`` and ``add_snp_measurement`` for the new code version.
88+
* After adding new nodes and retiring old ones, use ``remove_snp_host_data`` and ``remove_snp_measurement`` to remove the old values.
89+
90+
Examples:
91+
92+
.. code-block:: json
93+
94+
{
95+
"actions": [
96+
{
97+
"name": "add_snp_host_data",
98+
"args": {
99+
"host_data": "hex-encoded SHA256 digest of the security policy",
100+
"security_policy": "security policy text string"
101+
}
102+
}
103+
]
104+
}
105+
106+
{
107+
"actions": [
108+
{
109+
"name": "add_snp_measurement",
110+
"args": {
111+
"measurement": "5feee30d6d7e1a29f403d70a4198237ddfb13051a2d6976439487c609388ed7f98189887920ab2fa0096903a0c23fca1"
112+
}
113+
}
114+
]
115+
}
116+
117+
{
118+
"actions": [
119+
{
120+
"name": "remove_snp_host_data",
121+
"args": {
122+
"host_data": "hex-encoded SHA256 digest of the security policy"
123+
}
124+
}
125+
]
126+
}
127+
128+
{
129+
"actions": [
130+
{
131+
"name": "remove_snp_measurement",
132+
"args": {
133+
"measurement": "5feee30d6d7e1a29f403d70a4198237ddfb13051a2d6976439487c609388ed7f98189887920ab2fa0096903a0c23fca1"
134+
}
135+
}
136+
]
137+
}
138+
139+
Updating UVM endorsements
140+
~~~~~~~~~~~~~~~~~~~~~~~~~
141+
142+
To update the UVM endorsements, for instance, to rev up the SVN version, use ``add_snp_uvm_endorsement`` and ``remove_snp_uvm_endorsement`` governance actions.
143+
144+
* If performing a platform upgrade, new UVM endorsements should be added to the current network before joining new nodes.
145+
* Every endorsement is uniquely identified by (DID, feed) pair.
146+
147+
Examples:
148+
149+
.. code-block:: json
150+
151+
{
152+
"actions": [
153+
{
154+
"name": "add_snp_uvm_endorsement",
155+
"args": {
156+
"did": "did:x509:0:sha256:I__iuL25oXEVFdTP_aBLx_eT1RPHbCQ_ECBQfYZpt9s::eku:1.3.6.1.4.1.311.76.59.1.2",
157+
"feed": "ContainerPlat-AMD-UVM",
158+
"svn": "101"
159+
}
160+
}
161+
]
162+
}
163+
164+
{
165+
"actions": [
166+
{
167+
"name": "remove_snp_uvm_endorsement",
168+
"args": {
169+
"did": "did:x509:0:sha256:I__iuL25oXEVFdTP_aBLx_eT1RPHbCQ_ECBQfYZpt9s::eku:1.3.6.1.4.1.311.76.59.1.2",
170+
"feed": "ContainerPlat-AMD-UVM"
171+
}
172+
}
173+
]
174+
}
175+
83176
Setting the minimum TCB Version using ``set_snp_minimum_tcb_version_hex``
84177
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85178

86179
The `set_snp_minimum_tcb_version_hex` governance action was introduced in CCF 6.0.9 to simplify the process of setting the minimum TCB version for a specific CPU model. This action allows you to specify the CPUID and the TCB version as hex-strings, which are then parsed and stored in the :ref:`audit/builtin_maps:``nodes.snp.tcb_versions``` table.
87180
To set the minimum TCB version for a specific CPU model, you can use the following governance action:
181+
88182
.. code-block:: json
89183
90184
{

doc/operations/platforms/virtual.rst

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@ Insecure Virtual
66
How to use the Insecure Virtual Platform
77
----------------------------------------
88

9-
The insecure virtual platform can run on any hardware supported by CCF.
9+
The insecure virtual platform is a default fallback option if SEV-SNP is not supported on the machine of choice.
1010

11-
To use virtual, in the :ref:`operations/configuration:``enclave``` configuration section, the enclave ``platform`` should be set to ``Virtual``, and ``type`` to ``Virtual``.
12-
13-
Attestation
14-
-----------
15-
16-
As no attestation is provided by virtual nodes, any CCF node (e.g. a malicious node that would leak the service secret key) is allowed to join an existing CCF service.
11+
There's a "virtual" (fake) attestation provided by nodes, which exists to unify some of the code paths, but has no real security properties.

0 commit comments

Comments
 (0)