From 711a54235193da7092daa5e540f7822b76cb5b24 Mon Sep 17 00:00:00 2001 From: David Hadas Date: Sat, 21 Sep 2024 13:42:41 -0500 Subject: [PATCH] SecureComms: Add support daemonConfig Support configuring the APF Secure Comms from the CAA side including: - WN public Key - PP private key - Activating Secure Comms - inbouns and outbounds of th PP This is useful for activating Secure Comms from the CAA and without Trustee. It can be used for Testing without producing dedicated podvms which activate Secure Comms and set Inbounds/Outbounds by default. It can also be used for non-Coco peerpods. Signed-off-by: David Hadas --- .../cmd/agent-protocol-forwarder/main.go | 27 ++++- .../cmd/cloud-api-adaptor/main.go | 28 +++-- .../docs/ScPortForwarding.png | Bin 0 -> 158848 bytes src/cloud-api-adaptor/docs/SecureComms.md | 78 ++++++++++++-- .../docs/SecureComms_TLS.png | Bin 0 -> 129444 bytes src/cloud-api-adaptor/entrypoint.sh | 3 + .../pkg/adaptor/cloud/cloud.go | 100 ++++++++++++------ .../pkg/adaptor/cloud/cloud_test.go | 26 ++++- .../pkg/adaptor/cloud/types.go | 4 +- src/cloud-api-adaptor/pkg/adaptor/server.go | 24 +---- .../pkg/adaptor/server_test.go | 3 +- .../pkg/adaptor/shim_test.go | 3 +- .../pkg/forwarder/forwarder.go | 6 ++ .../pkg/securecomms/ppssh/ppsecrets.go | 59 ++++++----- .../pkg/securecomms/ppssh/ppssh.go | 13 +-- .../pkg/securecomms/ppssh/ppssh_test.go | 7 +- .../pkg/securecomms/wnssh/wnssh.go | 84 ++++++++------- .../pkg/securecomms/wnssh/wnssh_test.go | 13 ++- .../test/securecomms/ppssh.go | 7 +- .../test/securecomms/wnssh.go | 6 +- 20 files changed, 329 insertions(+), 162 deletions(-) create mode 100644 src/cloud-api-adaptor/docs/ScPortForwarding.png create mode 100644 src/cloud-api-adaptor/docs/SecureComms_TLS.png diff --git a/src/cloud-api-adaptor/cmd/agent-protocol-forwarder/main.go b/src/cloud-api-adaptor/cmd/agent-protocol-forwarder/main.go index 47178c7b8..9f26fc6e9 100644 --- a/src/cloud-api-adaptor/cmd/agent-protocol-forwarder/main.go +++ b/src/cloud-api-adaptor/cmd/agent-protocol-forwarder/main.go @@ -93,7 +93,9 @@ func (cfg *Config) Setup() (cmd.Starter, error) { return nil, err } - if secureComms { + if secureComms || cfg.daemonConfig.SecureComms { + var inbounds, outbounds []string + ppssh.Singleton() host, port, err := net.SplitHostPort(cfg.listenAddr) if err != nil { @@ -103,15 +105,32 @@ func (cfg *Config) Setup() (cmd.Starter, error) { logger.Printf("Address %s is changed to 127.0.0.1:%s since secure-comms is enabled.", cfg.listenAddr, port) cfg.listenAddr = "127.0.0.1:" + port } - inbounds := append([]string{"BOTH_PHASES:KBS:8080"}, strings.Split(secureCommsInbounds, ",")...) - outbounds := append([]string{"KUBERNETES_PHASE:KATAAGENT:" + port}, strings.Split(secureCommsOutbounds, ",")...) // Create a Client that will approach the api-server-rest service at the podns // To obtain secrets from KBS, we approach the api-server-rest service which then approaches the CDH asking for a secret resource // the CDH than contact the KBS (possibly after approaching Attestation Agent for a token) and the KBS serves the requested key // The communication between the CDH (and Attestation Agent) and the KBS is performed via an SSH tunnel named "KBS" apic := apic.NewApiClient(API_SERVER_REST_PORT, cfg.podNamespace) - services = append(services, ppssh.NewSshServer(inbounds, outbounds, ppssh.GetSecret(apic.GetKey), sshutil.SSHPORT)) + + ppSecrets := ppssh.NewPpSecrets(ppssh.GetSecret(apic.GetKey)) + + if secureComms { + // CoCo + ppSecrets.AddKey(ppssh.WN_PUBLIC_KEY) + ppSecrets.AddKey(ppssh.PP_PRIVATE_KEY) + } else { + // non-CoCo + ppSecrets.SetKey(ppssh.WN_PUBLIC_KEY, cfg.daemonConfig.WnPublicKey) + ppSecrets.SetKey(ppssh.PP_PRIVATE_KEY, cfg.daemonConfig.PpPrivateKey) + } + + inbounds = append([]string{"BOTH_PHASES:KBS:8080"}, strings.Split(secureCommsInbounds, ",")...) + inbounds = append(inbounds, strings.Split(cfg.daemonConfig.SecureCommsInbounds, ",")...) + + outbounds = append([]string{"KUBERNETES_PHASE:KATAAGENT:" + port}, strings.Split(secureCommsOutbounds, ",")...) + outbounds = append(outbounds, strings.Split(cfg.daemonConfig.SecureCommsOutbounds, ",")...) + + services = append(services, ppssh.NewSshServer(inbounds, outbounds, ppSecrets, sshutil.SSHPORT)) } else { if !disableTLS { cfg.tlsConfig = &tlsConfig diff --git a/src/cloud-api-adaptor/cmd/cloud-api-adaptor/main.go b/src/cloud-api-adaptor/cmd/cloud-api-adaptor/main.go index 6bdbadd63..9a33c6394 100644 --- a/src/cloud-api-adaptor/cmd/cloud-api-adaptor/main.go +++ b/src/cloud-api-adaptor/cmd/cloud-api-adaptor/main.go @@ -12,6 +12,7 @@ import ( "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/cmd" "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/pkg/adaptor" + "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/pkg/adaptor/cloud" "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/pkg/adaptor/proxy" daemon "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/pkg/forwarder" "github.com/confidential-containers/cloud-api-adaptor/src/cloud-api-adaptor/pkg/podnetwork/tunneler/vxlan" @@ -28,7 +29,7 @@ const ( ) type daemonConfig struct { - serverConfig adaptor.ServerConfig + serverConfig cloud.ServerConfig networkConfig } @@ -86,12 +87,15 @@ func (cfg *daemonConfig) Setup() (cmd.Starter, error) { } var ( - disableTLS bool - tlsConfig tlsutil.TLSConfig - secureComms bool - secureCommsInbounds string - secureCommsOutbounds string - secureCommsKbsAddr string + disableTLS bool + tlsConfig tlsutil.TLSConfig + secureComms bool + secureCommsNoTrustee bool + secureCommsInbounds string + secureCommsOutbounds string + secureCommsPpInbounds string + secureCommsPpOutbounds string + secureCommsKbsAddr string ) cmd.Parse(programName, os.Args[1:], func(flags *flag.FlagSet) { @@ -112,8 +116,11 @@ func (cfg *daemonConfig) Setup() (cmd.Starter, error) { flags.BoolVar(&tlsConfig.SkipVerify, "tls-skip-verify", false, "Skip TLS certificate verification - use it only for testing") flags.BoolVar(&disableTLS, "disable-tls", false, "Disable TLS encryption - use it only for testing") flags.BoolVar(&secureComms, "secure-comms", false, "Use SSH to secure communication between cluster and peer pods") - flags.StringVar(&secureCommsInbounds, "secure-comms-inbounds", "", "Inbound tags for secure communication tunnels") - flags.StringVar(&secureCommsOutbounds, "secure-comms-outbounds", "", "Outbound tags for secure communication tunnels") + flags.BoolVar(&secureCommsNoTrustee, "secure-comms-no-trustee", false, "Deliver the keys to peer pods using userdata instead of Trustee") + flags.StringVar(&secureCommsInbounds, "secure-comms-inbounds", "", "WN Inbound tags for secure communication tunnels") + flags.StringVar(&secureCommsOutbounds, "secure-comms-outbounds", "", "WN Outbound tags for secure communication tunnels") + flags.StringVar(&secureCommsPpInbounds, "secure-comms-pp-inbounds", "", "PP Inbound tags for secure communication tunnels") + flags.StringVar(&secureCommsPpOutbounds, "secure-comms-pp-outbounds", "", "PP Outbound tags for secure communication tunnels") flags.StringVar(&secureCommsKbsAddr, "secure-comms-kbs", "kbs-service.trustee-operator-system:8080", "Address of a Trustee Service for Secure-Comms") flags.DurationVar(&cfg.serverConfig.ProxyTimeout, "proxy-timeout", proxy.DefaultProxyTimeout, "Maximum timeout in minutes for establishing agent proxy connection") @@ -139,8 +146,11 @@ func (cfg *daemonConfig) Setup() (cmd.Starter, error) { } cfg.serverConfig.SecureComms = true + cfg.serverConfig.SecureCommsTrustee = !secureCommsNoTrustee cfg.serverConfig.SecureCommsInbounds = secureCommsInbounds cfg.serverConfig.SecureCommsOutbounds = secureCommsOutbounds + cfg.serverConfig.SecureCommsPpInbounds = secureCommsPpInbounds + cfg.serverConfig.SecureCommsPpOutbounds = secureCommsPpOutbounds cfg.serverConfig.SecureCommsKbsAddress = secureCommsKbsAddr } else { if !disableTLS { diff --git a/src/cloud-api-adaptor/docs/ScPortForwarding.png b/src/cloud-api-adaptor/docs/ScPortForwarding.png new file mode 100644 index 0000000000000000000000000000000000000000..9178866e4418bcf070964110e4ce515b895a88d7 GIT binary patch literal 158848 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 z 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 JJx$F9|9^JuYFYpQ literal 0 HcmV?d00001 diff --git a/src/cloud-api-adaptor/docs/SecureComms.md b/src/cloud-api-adaptor/docs/SecureComms.md index 85a501b53..5c667e51d 100644 --- a/src/cloud-api-adaptor/docs/SecureComms.md +++ b/src/cloud-api-adaptor/docs/SecureComms.md @@ -2,31 +2,95 @@ Here, we describe how to set up the Secure Communications (`Secure Comms` for short) feature of the `cloud-api-adaptor` (`Adaptor`) and `agent-protocol-forwarder` (`Forwarder`). -The `Secure Comms` feature establishes an SSH channel by the `Adaptor` as an SSH client and the `Forwarder` as an SSH server. All control communications then use this SSH channel between the `Adaptor` and `Forwarder`. Secure Comms use a two-phase approach: +The `Secure Comms` feature establishes an SSH channel by the `Adaptor`, as an SSH client, and the `Forwarder`, as an SSH server. All control communications then use this SSH channel between the `Adaptor` and `Forwarder`. This feature is an alternative to using `TLS encryption` feature between the `Adaptor` and `Forwarder`. + +Both `Secure Comms` and `TLS encryption` supports a method of delivering keys to encrypt the control-plane traffic between the `Adaptor` and the `Forwarder` via user-data during pod VM creation. Delivering the keys via the user-data may allow a malicious entity on the cloud provider side to gain access to the keys and modify any communication between the Worker Nodes and Peer Pods. For this reason, `Secure Comms` also supports an alternate mode where the keys are delivered to the Peer Pod via `Trustee`. The keys are delivered to the Peer Pod after an attestation phase (See diagram below). Delivering the keys via `Trustee` protects the Peer Pod from a malicious entity on the cloud provider side. +We name this mode of operation as `Trustee Mode`. The option of delivering keys via user-data is named as `NoTrustee Mode`. + +

+ +

+ + +To deliver the secrets via `Trustee`, `Secure Comms` under `Trustee Mode` uses a two-phase approach: - Attestation Phase: In this phase, an SSH channel is created to enable the Peer Pod to attest against an attestation service. The attestation traffic is tunneled from the Peer Pod to the CAA and from there sent to a KBS as configured at the CAA. Once attestation is achieved, the Forwarder obtains Peer Pod keys from the KBS. The Peer Pod keys are dynamically added to the KBS by the CAA prior to starting the Peer Pod. - Kubernetes Phase: In this phase, an SSH channel is created to enable the runtime to communicate with the Kata Agent running in the Peer Pod. This phase uses the keys obtained during the Attestation Phase, ensuring that the communication is secured. Additional tunnels can be established via the SSH channel by configuring the Adaptor and Forwarder as described below. ## Secure Comms Architecture -`Secure Comms` secures the communication between the cluster Worker Nodes and Peer Pods. The Worker Nodes are assumed to be protected by a firewall and can be kept unreachable from outside of the cluster of Worker Nodes. To communicate with Peer Pods, an SSH channel is created from the Worker Node allocated to run the Peer Pod and the Peer Pod VM. This SSH channel can then be used for all communication between the Peer Pod and the cluster and any back end services running at the cluster or elsewhere. As shown in the diagram, once the SSH channel is created, clients at the Peer Pod VM side such as `KBC`, `Attestation Agent`, etc. may connect to services offered by the cluster side such as `KBS`, `Attestation Services`, etc. At the same time, clients located at the cluster side such as the `Runtime shim`, may connect to services offered by the Peer Pod VM side such as the `Kata Agent`. +`Secure Comms` uses a Go SSH Lib to secure the communication between the cluster Worker Nodes and Peer Pods. To communicate with the Peer Pods, an SSH channel is created between the `Adaptor` in the Worker Node and the `Forwarder` in the Peer Pod. +The Worker Node is the client part of the channel, and the Peer Pod is the server part of the SSH channel. All communications between the Peer Pod and any services available on the Worker Node side can be configured to use the SSH channel. + +Once an SSH channel is established, a Port Forwarding layer, implemented on top of the Go SSH Lib, is used to secure any port to port communication initiated between the `Adaptor` and `Forwarder` and vice versa (see diagram). A client (1) seeking to communicate to the other side, comunicates with a local Inbound component (2) instead. The local Inbound act as a local server for the client. Once a connection is made to the Inbound, a tunnel (3) is created between the local Inbound and a remote Outbound component (4) via the SSH channel. The remote Outbound than acts as a client on behalf of the real client (1) and connect to the remote server (5) to establish an end to end session between the real client (1) and real server (5). + +

+ +

+Once the SSH channel is created, clients at the Peer Pod side such as `Attestation Agent` connects to the services offered by the cluster side such as `KBS` using the channel. Likewise, clients located at the cluster side such as the `Kata shim`, connects to the services on the Peer Pod side such as the `Kata Agent` using the same channel. + +As shown in the following diagram, using `SecureComms`, each Peer Pod is consequently served using a single communication channel implemented as an SSH channel. This single TCP session is initiated from the Worker Node and terminated at the Peer Pod. It is used for any control communication between the Worker Node and Peer Pod and vice versa. This consolidation of communication between a Worker Node and Peer Pod via a single SSH channel improves the operational aspects of Worker Node and Peer Pod communication, especially when Worker Node and Peer Pod are in different networks. The Worker Node network does not need to open ingress ports to expose services to Peer Pod. For example, when the communication between CDH (in Peer Pod) and the Trustee (in the Worker Node network) is via the SSH channel, the Trustee service port does not need to be open to enable communication with CDH (Peer Pod). +

-SecureComms uses the following sequence of steps: +`SecureComms` in `Trustee Mode` uses the following sequence of steps: - Worker Node creates keys for the Peer Pod and updates Trustee - Worker Node creates the Peer Pod VM - Worker Node establishes an "Attestation Phase" SSH channel with the Peer Pod VM - Peer Pod VM attests and obtain keys from Trustee. The Peer Pod then signal to the Worker Node that the "Attestation Phase" has ended and terminates the "Attestation Phase" SSH channel. -- Worker Node establishes an "Kubernetes Phase" SSH channel with the Peer Pod VM - Both sides verify the identity of the other side using the keys delivered via Trustee. +- Worker Node establishes a "Kubernetes Phase" SSH channel with the Peer Pod VM - Both sides verify the identity of the other side using the keys delivered via Trustee. + +`SecureComms` in `NoTrustee Mode` uses the following sequence of steps: +- Worker Node creates keys for the Peer Pod +- Worker Node creates the Peer Pod VM and deliver the keys via daemonConfig as part of the userdata of the Cloud API. +- Peer Pod VM obtain keys from daemonConfig. +- Worker Node establishes a "Kubernetes Phase" SSH channel with the Peer Pod VM - Both sides verify the identity of the other side using the keys delivered via daemonConfig. -Once the "Kubernetes Phase" SSH channel is established, Secure Comms connects the `Runtime shim` to the `Kata Agent` and may also connect other services required by the Peer Pod VM or by containers running inside the Peer Pod. +Once the "Kubernetes Phase" SSH channel is established, Secure Comms connects the `Kata shim` to the `Kata Agent` and may also connect other services required by the Peer Pod VM or by containers running inside the Peer Pod. See [Secure Comms Architecture Slides](./SecureComms.pdf) for more details. +## Setup for testing and for non-CoCo peerpods with NoTrustee mode + +### Deploy CAA +Use any of the option for installing CAA depending on the cloud driver used. + + +### Activate Secure-Comms feature from CAA side +Make the following parameter changes to the `peer-pods-cm` configMap in the `confidential-containers-system` namespace. +- Activate Secure-Comms from CAA side by setting the `SECURE_COMMS` parameter to `"true"`. +- Deactivate Secure-Comms use of Trustee by setting the `SECURE_COMMS_NO_TRUSTEE` parameter to `"true"`. + +Use `kubectl edit cm peer-pods-cm -n confidential-containers-system` to make such changes in the configMap, for example: +```sh +apiVersion: v1 +data: + ... + SECURE_COMMS: "true" + SECURE_COMMS_NO_TRUSTEE: "true" + ... +``` + +You may also include additional Inbounds and Outbounds configurations to the Adaptor side using the `SECURE_COMMS_INBOUNDS` and `SECURE_COMMS_OUTBOUNDS` config points. +You may also add Inbounds and Outbounds configurations to the Forwarder (I.e. Peer Pod, PP) side using the `SECURE_COMMS_PP_INBOUNDS` and `SECURE_COMMS_PP_OUTBOUNDS` config points. [See more details regarding Inbounds and Outbounds below.](#adding-named-tunnels-to-the-ssh-channel) + +Use `kubectl edit cm peer-pods-cm -n confidential-containers-system` to make such changes in the configMap, for example: +```sh +apiVersion: v1 +data: + ... + SECURE_COMMS: "true" + SECURE_COMMS_NO_TRUSTEE: "true" + SECURE_COMMS_OUTBOUNDS: "KUBERNETES_PHASE:mytunnel:149.81.64.62:7777" + SECURE_COMMS_PP_INBOUNDS: "KUBERNETES_PHASE:mytunnel:podns:6666" + + ... +``` + ## Setup for CoCo with Trustee ### Deploy CAA @@ -160,7 +224,7 @@ Testing securecomms as a standalone can be done by using: cd src/cloud-api-adaptor go run ./test/securecomms/double/main.go ``` -This will create a client and a server and mimic the connection between a CAA client to a PP Server +This will create a client and a server and mimic the connection between a CAA client to a Peer Pod Server Successful connection result in exit code of 0 Alternatively, the client and server can be separately executed in independent terminals using `./test/securecomms/double/wnssh.go` and `./test/securecomms/ppssh/main.go` respectively. @@ -172,6 +236,4 @@ To facilitate end-to-end testing, the libvirt github workflow `e2e_libvirt.yaml` ## Future Plans - Add DeleteResource() support in KBS, KBC, api-server-rest, than cleanup resources added by Secure Comms to KBS whenever a Peer Pod fail to be created or when a Peer Pod is terminated. -- Add support for running the vxlan tunnel traffic via a Secure Comms SSH tunnel -- Add support for non-confidential Peer Pods which do not go via an Attestation Phase. - Add support for KBS identities allowing a Peer Pod to register its own identity in KBS and replace the current Secure Comms mechanism which delivers a private key to the Peer Pod via the KBS diff --git a/src/cloud-api-adaptor/docs/SecureComms_TLS.png b/src/cloud-api-adaptor/docs/SecureComms_TLS.png new file mode 100644 index 0000000000000000000000000000000000000000..6b90ea51e2a4e0ad65a8234b7c270b45f5028897 GIT binary patch literal 129444 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%0D{BU(-Y#M@g17KC{f%HKn8w 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�=PfU=f&tROy(~dyJAHnAorCfQ)+%drCjT0 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�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 0 { - key := fs.keys[0] - logger.Printf("PpSecrets obtaining key %s", key) +func (sec *PpSecrets) Go() { + sleeptime := time.Duration(1) - data, err := fs.getSecret(key) - if err == nil && len(data) > 0 { - logger.Printf("PpSecrets %s success", key) - fs.secrets[key] = data - fs.keys = fs.keys[1:] + for key, keydata := range sec.secrets { + if keydata != nil { continue } - if err != nil { - logger.Printf("PpSecrets %s getSecret err: %v", key, err) - } else { - logger.Printf("PpSecrets %s getSecret returned an empty secret", key) - } + logger.Printf("PpSecrets obtaining key %s", key) + + // loop until we get a valid key + for { + keydata, err := sec.getSecret(key) + if err == nil && len(keydata) > 0 { + logger.Printf("PpSecrets %s success", key) + sec.secrets[key] = keydata + break + } + if err != nil { + logger.Printf("PpSecrets %s getSecret err: %v", key, err) + } else { + logger.Printf("PpSecrets %s getSecret returned an empty secret", key) + } - time.Sleep(sleeptime * time.Second) - sleeptime *= 2 - if sleeptime > 30 { - sleeptime = 30 + time.Sleep(sleeptime * time.Second) + sleeptime *= 2 + if sleeptime > 30 { + sleeptime = 30 + } } } } diff --git a/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh.go b/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh.go index d13a24383..08feb291d 100644 --- a/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh.go +++ b/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh.go @@ -30,7 +30,7 @@ type SshServer struct { outbounds sshproxy.Outbounds wg sync.WaitGroup readyCh chan struct{} - getSecret GetSecret + ppSecrets *PpSecrets sshport string listener net.Listener ctx context.Context @@ -42,9 +42,9 @@ type SshServer struct { // Structure of an inbound tag: "::" // Structure of an outbound tag: ":::" // Phase may be "A" (Attestation), "K" (Kubernetes), or "B" (Both) -func NewSshServer(inbound_strings, outbounds_strings []string, getSecret GetSecret, sshport string) *SshServer { +func NewSshServer(inbound_strings, outbounds_strings []string, ppSecrets *PpSecrets, sshport string) *SshServer { s := &SshServer{ - getSecret: getSecret, + ppSecrets: ppSecrets, sshport: sshport, readyCh: make(chan struct{}), } @@ -119,11 +119,8 @@ func (s *SshServer) attestationPhase() *ssh.ServerConfig { for ctx.Err() == nil { logger.Printf("Attestation phase: getting keys from KBS\n") - ppSecrets := NewPpSecrets(s.getSecret) - ppSecrets.AddKey(WN_PUBLIC_KEY) - ppSecrets.AddKey(PP_PRIVATE_KEY) - ppSecrets.Go() // wait for the keys - config, err := initKubernetesPhaseSshConfig(ppSecrets) + s.ppSecrets.Go() // wait for the keys + config, err := initKubernetesPhaseSshConfig(s.ppSecrets) if err == nil { logger.Printf("Attestation phase: InitKubernetesPhaseSshConfig is ready\n") peer.Upgrade() diff --git a/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh_test.go b/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh_test.go index 467723e92..a38b9f817 100644 --- a/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh_test.go +++ b/src/cloud-api-adaptor/pkg/securecomms/ppssh/ppssh_test.go @@ -183,7 +183,12 @@ func TestPpssh(t *testing.T) { // Forwarder Initialization ctx := context.Background() ctx, cancel := context.WithCancel(ctx) - sshServer := NewSshServer([]string{"BOTH_PHASES:KBS:9002"}, []string{"KUBERNETES_PHASE:ABC:127.0.0.1:7105"}, GetSecret(getKey), sshport) + + ppSecrets := NewPpSecrets(GetSecret(getKey)) + ppSecrets.AddKey(WN_PUBLIC_KEY) + ppSecrets.AddKey(PP_PRIVATE_KEY) + + sshServer := NewSshServer([]string{"BOTH_PHASES:KBS:9002"}, []string{"KUBERNETES_PHASE:ABC:127.0.0.1:7105"}, ppSecrets, sshport) _ = sshServer.Start(ctx) clientSshPeer, conn := getAttestationClient(t, sshport) clientSshPeer.AddTags(inbounds, outbounds) diff --git a/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh.go b/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh.go index d252d609f..d23b54804 100644 --- a/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh.go +++ b/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh.go @@ -25,6 +25,7 @@ type SshClient struct { inboundStrings []string outboundStrings []string sshport string + wnPublicKey []byte } type SshClientInstance struct { @@ -51,7 +52,7 @@ func PpSecretName(sid string) string { // Structure of an inbound tag: "::" // Structure of an outbound tag: ":::" // Phase may be "A" (Attestation), "K" (Kubernetes), or "B" (Both) -func InitSshClient(inbound_strings, outbound_strings []string, kbsAddress string, sshport string) (*SshClient, error) { +func InitSshClient(inbound_strings, outbound_strings []string, secureCommsTrustee bool, kbsAddress string, sshport string) (*SshClient, error) { logger.Printf("Using PP SecureComms: InitSshClient version %s", sshutil.PpSecureCommsVersion) // Read WN Secret @@ -72,22 +73,25 @@ func InitSshClient(inbound_strings, outbound_strings []string, kbsAddress string return nil, fmt.Errorf("unable to parse private key: %v", err) } - kbscPrivateKey, _, err := kubemgr.KubeMgr.ReadSecret(sshutil.KBS_CLIENT_SECRET) - if err != nil { - return nil, fmt.Errorf("failed to read KBS client secret: %w", err) - } + var kc *KbsClient + if secureCommsTrustee { + kbscPrivateKey, _, err := kubemgr.KubeMgr.ReadSecret(sshutil.KBS_CLIENT_SECRET) + if err != nil { + return nil, fmt.Errorf("failed to read KBS client secret: %w", err) + } - kc := InitKbsClient(kbsAddress) - err = kc.SetPemSecret(kbscPrivateKey) - if err != nil { - return nil, fmt.Errorf("KbsClient - %v", err) - } + kc = InitKbsClient(kbsAddress) + err = kc.SetPemSecret(kbscPrivateKey) + if err != nil { + return nil, fmt.Errorf("KbsClient - %v", err) + } - wnSecretPath := "default/sshclient/publicKey" - logger.Printf("Updating KBS with secret for: %s", wnSecretPath) - err = kc.PostResource(wnSecretPath, wnPublicKey) - if err != nil { - return nil, fmt.Errorf("failed to PostResource WN Secret: %v", err) + wnSecretPath := "default/sshclient/publicKey" + logger.Printf("Updating KBS with secret for: %s", wnSecretPath) + err = kc.PostResource(wnSecretPath, wnPublicKey) + if err != nil { + return nil, fmt.Errorf("failed to PostResource WN Secret: %v", err) + } } sshClient := &SshClient{ @@ -96,6 +100,7 @@ func InitSshClient(inbound_strings, outbound_strings []string, kbsAddress string inboundStrings: inbound_strings, outboundStrings: outbound_strings, sshport: sshport, + wnPublicKey: wnPublicKey, } return sshClient, nil @@ -123,9 +128,13 @@ func (ci *SshClientInstance) DisconnectPP(sid string) { kubemgr.KubeMgr.DeleteSecret(PpSecretName(sid)) } -func (c *SshClient) InitPP(ctx context.Context, sid string, ipAddr []netip.Addr) *SshClientInstance { +func (c *SshClient) GetWnPublicKey() []byte { + return c.wnPublicKey +} + +func (c *SshClient) InitPP(ctx context.Context, sid string) (ci *SshClientInstance, ppPrivateKey []byte) { // Create peerPod Secret named peerPodId - var ppPublicKey, ppPrivateKey []byte + var ppPublicKey []byte var err error var kubernetesPhase bool @@ -136,43 +145,39 @@ func (c *SshClient) InitPP(ctx context.Context, sid string, ipAddr []netip.Addr) ppPrivateKey, ppPublicKey, err = kubemgr.KubeMgr.CreateSecret(PpSecretName(sid)) if err != nil { logger.Printf("Failed to create PP secret: %v", err) - return nil + return } } else { // we already have a store secret for this PP kubernetesPhase = true } - // >>> Update the KBS about the SID's Secret !!! <<< - sidSecretPath := fmt.Sprintf("default/pp-%s/privateKey", sid) - logger.Printf("Updating KBS with secret for: %s", sidSecretPath) - err = c.kc.PostResource(sidSecretPath, ppPrivateKey) - if err != nil { - logger.Printf("Failed to PostResource PP Secret: %v", err) - return nil - } + if c.kc != nil { + // >>> Update the KBS about the SID's Secret !!! <<< + sidSecretPath := fmt.Sprintf("default/pp-%s/privateKey", sid) + logger.Printf("Updating KBS with secret for: %s", sidSecretPath) + err = c.kc.PostResource(sidSecretPath, ppPrivateKey) + if err != nil { + logger.Printf("Failed to PostResource PP Secret: %v", err) + return + } + } var ppSshPublicKeyBytes []byte if len(ppPublicKey) > 0 { ppSshPublicKey, _, _, _, err := ssh.ParseAuthorizedKey(ppPublicKey) if err != nil { logger.Printf("Unable to ParseAuthorizedKey serverPublicKey: %v", err) - return nil + return } ppSshPublicKeyBytes = ppSshPublicKey.Marshal() } - ppAddr := make([]string, len(ipAddr)) - for i, ip := range ipAddr { - ppAddr[i] = ip.String() + ":" + c.sshport - } - ctx, cancel := context.WithCancel(ctx) - ci := &SshClientInstance{ + ci = &SshClientInstance{ sid: sid, ppPublicKey: ppSshPublicKeyBytes, - ppAddr: ppAddr, sshClient: c, ctx: ctx, cancel: cancel, @@ -188,10 +193,17 @@ func (c *SshClient) InitPP(ctx context.Context, sid string, ipAddr []netip.Addr) logger.Fatalf("Failed to parse outbound tag %v: %v", c.outboundStrings, err) } - return ci + return } -func (ci *SshClientInstance) Start() error { +func (ci *SshClientInstance) Start(ipAddr []netip.Addr) error { + ppAddr := make([]string, len(ipAddr)) + for i, ip := range ipAddr { + ppAddr[i] = ip.String() + ":" + ci.sshClient.sshport + } + + ci.ppAddr = ppAddr + if !ci.kubernetesPhase { // Attestation phase logger.Println("Attestation phase: starting") diff --git a/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh_test.go b/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh_test.go index cce5d6678..8f9169048 100644 --- a/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh_test.go +++ b/src/cloud-api-adaptor/pkg/securecomms/wnssh/wnssh_test.go @@ -26,7 +26,7 @@ func TestSshProxyReverseKBS(t *testing.T) { test.CreatePKCS8Secret(t) // CAA Initialization - sshClient, err := InitSshClient([]string{"KUBERNETES_PHASE:KATAAGENT:0"}, []string{"BOTH_PHASES:KBS:9001", "KUBERNETES_PHASE:KUBEAPI:26443", "KUBERNETES_PHASE:DNS:8053"}, "127.0.0.1:9001", sshport) + sshClient, err := InitSshClient([]string{"KUBERNETES_PHASE:KATAAGENT:0"}, []string{"BOTH_PHASES:KBS:9001", "KUBERNETES_PHASE:KUBEAPI:26443", "KUBERNETES_PHASE:DNS:8053"}, true, "127.0.0.1:9001", sshport) if err != nil { log.Fatalf("InitSshClient %v", err) } @@ -34,7 +34,7 @@ func TestSshProxyReverseKBS(t *testing.T) { ////////// CAA StartVM ipAddr, _ := netip.ParseAddr("127.0.0.1") // ipAddr of the VM ipAddrs := []netip.Addr{ipAddr} - ci := sshClient.InitPP(context.Background(), "sid", ipAddrs) + ci, _ := sshClient.InitPP(context.Background(), "sid") if ci == nil { log.Fatalf("failed InitiatePeerPodTunnel") } @@ -48,12 +48,17 @@ func TestSshProxyReverseKBS(t *testing.T) { // create a podvm gkc := test.NewGetKeyClient("7030") ctx2, cancel2 := context.WithCancel(context.Background()) - sshServer := ppssh.NewSshServer([]string{"BOTH_PHASES:KBS:7030", "KUBERNETES_PHASE:KUBEAPI:16443", "KUBERNETES_PHASE:DNS:9053"}, []string{"KUBERNETES_PHASE:KATAAGENT:127.0.0.1:7121"}, ppssh.GetSecret(gkc.GetKey), sshport) + + ppSecrets := ppssh.NewPpSecrets(ppssh.GetSecret(gkc.GetKey)) + ppSecrets.AddKey(ppssh.WN_PUBLIC_KEY) + ppSecrets.AddKey(ppssh.PP_PRIVATE_KEY) + + sshServer := ppssh.NewSshServer([]string{"BOTH_PHASES:KBS:7030", "KUBERNETES_PHASE:KUBEAPI:16443", "KUBERNETES_PHASE:DNS:9053"}, []string{"KUBERNETES_PHASE:KATAAGENT:127.0.0.1:7121"}, ppSecrets, sshport) _ = sshServer.Start(ctx2) // Forwarder Initialization - if err := ci.Start(); err != nil { + if err := ci.Start(ipAddrs); err != nil { log.Fatalf("failed ci.Start: %s", err) } diff --git a/src/cloud-api-adaptor/test/securecomms/ppssh.go b/src/cloud-api-adaptor/test/securecomms/ppssh.go index b9a15d82d..337f3f39e 100644 --- a/src/cloud-api-adaptor/test/securecomms/ppssh.go +++ b/src/cloud-api-adaptor/test/securecomms/ppssh.go @@ -20,7 +20,12 @@ func PP() { // Forwarder Initialization ctx := context.Background() ctx, cancel := context.WithCancel(ctx) - sshServer := ppssh.NewSshServer([]string{"BOTH_PHASES:KBS:7000", "KUBERNETES_PHASE:KUBEAPI:16443", "KUBERNETES_PHASE:DNS:9053"}, []string{"KUBERNETES_PHASE:KATAAGENT:127.0.0.1:7131"}, ppssh.GetSecret(getKey), sshutil.SSHPORT) + + ppSecrets := ppssh.NewPpSecrets(ppssh.GetSecret(getKey)) + ppSecrets.AddKey(ppssh.WN_PUBLIC_KEY) + ppSecrets.AddKey(ppssh.PP_PRIVATE_KEY) + + sshServer := ppssh.NewSshServer([]string{"BOTH_PHASES:KBS:7000", "KUBERNETES_PHASE:KUBEAPI:16443", "KUBERNETES_PHASE:DNS:9053"}, []string{"KUBERNETES_PHASE:KATAAGENT:127.0.0.1:7131"}, ppSecrets, sshutil.SSHPORT) _ = sshServer.Start(ctx) time.Sleep(1 * time.Minute) cancel() diff --git a/src/cloud-api-adaptor/test/securecomms/wnssh.go b/src/cloud-api-adaptor/test/securecomms/wnssh.go index 026125e03..d4683f12f 100644 --- a/src/cloud-api-adaptor/test/securecomms/wnssh.go +++ b/src/cloud-api-adaptor/test/securecomms/wnssh.go @@ -21,7 +21,7 @@ func WN() bool { test.HttpServer("26443") // CAA Initialization - sshClient, err := wnssh.InitSshClient([]string{"KUBERNETES_PHASE:KATAAGENT:0"}, []string{"BOTH_PHASES:KBS:9004", "KUBERNETES_PHASE:KUBEAPI:26443", "KUBERNETES_PHASE:DNS:8053"}, "127.0.0.1:9004", sshutil.SSHPORT) + sshClient, err := wnssh.InitSshClient([]string{"KUBERNETES_PHASE:KATAAGENT:0"}, []string{"BOTH_PHASES:KBS:9004", "KUBERNETES_PHASE:KUBEAPI:26443", "KUBERNETES_PHASE:DNS:8053"}, true, "127.0.0.1:9004", sshutil.SSHPORT) if err != nil { log.Fatalf("InitSshClient %v", err) } @@ -30,7 +30,7 @@ func WN() bool { ipAddr, _ := netip.ParseAddr("127.0.0.1") // ipAddr of the VM ipAddrs := []netip.Addr{ipAddr} ctx := context.Background() - ci := sshClient.InitPP(ctx, "sid", ipAddrs) + ci, _ := sshClient.InitPP(ctx, "sid") if ci == nil { log.Fatalf("failed InitiatePeerPodTunnel") } @@ -41,7 +41,7 @@ func WN() bool { log.Fatalf("failed find port") } - if err := ci.Start(); err != nil { + if err := ci.Start(ipAddrs); err != nil { log.Fatalf("failed ci.Start: %s", err) }