On 08.02.21 14:08, Fabian Grünbichler wrote:
> running outdated VMs without master key support will generate a warning
> but proceed with a backup without encrypted key upload.
> 
> Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
> ---
> 
> Notes:
>     requires libpve-storage-perl with master key support.
> 

needs a rebase

>  PVE/VZDump/QemuServer.pm | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm
> index b5e74d3..e3f785a 100644
> --- a/PVE/VZDump/QemuServer.pm
> +++ b/PVE/VZDump/QemuServer.pm
> @@ -485,6 +485,7 @@ sub archive_pbs {
>      my $repo = PVE::PBSClient::get_repository($scfg);
>      my $password = PVE::Storage::PBSPlugin::pbs_get_password($scfg, 
> $opts->{storage});
>      my $keyfile = 
> PVE::Storage::PBSPlugin::pbs_encryption_key_file_name($scfg, 
> $opts->{storage});
> +    my $master_keyfile = 
> PVE::Storage::PBSPlugin::pbs_master_pubkey_file_name($scfg, $opts->{storage});
>  
>      my $diskcount = scalar(@{$task->{disks}});
>      # proxmox-backup-client can only handle raw files and block devs
> @@ -533,6 +534,12 @@ sub archive_pbs {
>             . "sure you've installed the latest version and the VM has been 
> restarted.\n";
>       }
>  
> +     if (!defined($qemu_support->{"pbs-masterkey"}) && -e $master_keyfile) {
> +         $self->loginfo("WARNING: backup target is configured with master 
> key, but running QEMU version does not support master keys.");
> +         $self->loginfo("Please make sure you've installed the latest 
> version and the VM has been restarted to use master key feature.");
> +         $master_keyfile = undef; # skip rest of master key handling below
> +     }
> +
>       my $fs_frozen = $self->qga_fs_freeze($task, $vmid);
>  
>       my $params = {
> @@ -551,7 +558,13 @@ sub archive_pbs {
>           $self->loginfo("enabling encryption");
>           $params->{keyfile} = $keyfile;
>           $params->{encrypt} = JSON::true;
> +         if (defined($master_keyfile) && -e $master_keyfile) {
> +             $self->loginfo("enabling master key feature");
> +             $params->{"master-keyfile"} = $master_keyfile;
> +         }
>       } else {
> +         $self->loginfo("WARNING: backup target is configured with master 
> key, but this backup is not encrypted - master key settings will be ignored!")
> +             if defined($master_keyfile) && -e $master_keyfile;
>           $params->{encrypt} = JSON::false;
>       }
>  
> 



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to