blob: 66ebfaff87e9e3b2ef8ddec0a2f99e770feac881 [file] [log] [blame]
Serge Bazanski72068da2021-03-16 13:15:45 +01001// Copyright 2020 The Monogon Project Authors.
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17syntax = "proto3";
18option go_package = "source.monogon.dev/metropolis/proto/private";
19package metropolis.proto.private;
20
Serge Bazanskifd6d4eb2023-05-25 14:45:48 +020021import "metropolis/proto/common/common.proto";
22
Serge Bazanski72068da2021-03-16 13:15:45 +010023// SealedConfiguration is all configuration kept in a TPM-sealed (ie.
24// confidential and tamper-resistant) blob within the node's ESP (EFI)
25// partition. It contains everything that the node needs to join an existing
26// cluster after rebooting.
27message SealedConfiguration {
28 // node_unlock_key (NUK) is the node's part of the key required to unlock
29 // the node's data partition(s). It is combined with the Cluster Unlock Key
30 // (CUK) that's stored in etcd to create a key which is then used to mount
31 // the data partition. The NUK and CUK are generated on bootstrap and
32 // registration.
33 bytes node_unlock_key = 1;
Mateusz Zalega2930e992022-04-25 12:52:35 +020034 // join_key is an ED25519 private key generated during registration. The
35 // public part is shared with Curator to authenticate the join procedure.
36 bytes join_key = 2;
37 // cluster_ca is the X509 CA certificate of the cluster set during
38 // registration and used by nodes joining the cluster.
39 bytes cluster_ca = 3;
Serge Bazanskifd6d4eb2023-05-25 14:45:48 +020040 // storage_security is the node storage security that this node has been
41 // created with, and is used to determine the way the local storage (ie.
42 // Metropolis data partition) will be attempted to be mounted on subsequent
43 // node startups.
44 metropolis.proto.common.NodeStorageSecurity storage_security = 4;
Serge Bazanski72068da2021-03-16 13:15:45 +010045}