|
|
|
@ -7,100 +7,83 @@ import (
|
|
|
|
|
|
|
|
|
|
const SecretsEncryptCommand = "secrets-encrypt" |
|
|
|
|
|
|
|
|
|
var EncryptFlags = []cli.Flag{ |
|
|
|
|
DataDirFlag, |
|
|
|
|
ServerToken, |
|
|
|
|
cli.StringFlag{ |
|
|
|
|
Name: "server, s", |
|
|
|
|
Usage: "(cluster) Server to connect to", |
|
|
|
|
EnvVar: version.ProgramUpper + "_URL", |
|
|
|
|
Value: "https://127.0.0.1:6443", |
|
|
|
|
Destination: &ServerConfig.ServerURL, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewSecretsEncryptCommand(action func(*cli.Context) error, subcommands []cli.Command) cli.Command { |
|
|
|
|
return cli.Command{ |
|
|
|
|
Name: SecretsEncryptCommand, |
|
|
|
|
Usage: "Control secrets encryption and keys rotation", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: action, |
|
|
|
|
Subcommands: subcommands, |
|
|
|
|
var ( |
|
|
|
|
forceFlag = cli.BoolFlag{ |
|
|
|
|
Name: "f,force", |
|
|
|
|
Usage: "Force this stage.", |
|
|
|
|
Destination: &ServerConfig.EncryptForce, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewSecretsEncryptSubcommands(status, enable, disable, prepare, rotate, reencrypt func(ctx *cli.Context) error) []cli.Command { |
|
|
|
|
return []cli.Command{ |
|
|
|
|
{ |
|
|
|
|
Name: "status", |
|
|
|
|
Usage: "Print current status of secrets encryption", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: status, |
|
|
|
|
Flags: append(EncryptFlags, &cli.StringFlag{ |
|
|
|
|
Name: "output,o", |
|
|
|
|
Usage: "Status format. Default: text. Optional: json", |
|
|
|
|
Destination: &ServerConfig.EncryptOutput, |
|
|
|
|
}), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "enable", |
|
|
|
|
Usage: "Enable secrets encryption", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: enable, |
|
|
|
|
Flags: EncryptFlags, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "disable", |
|
|
|
|
Usage: "Disable secrets encryption", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: disable, |
|
|
|
|
Flags: EncryptFlags, |
|
|
|
|
EncryptFlags = []cli.Flag{ |
|
|
|
|
DataDirFlag, |
|
|
|
|
ServerToken, |
|
|
|
|
cli.StringFlag{ |
|
|
|
|
Name: "server, s", |
|
|
|
|
Usage: "(cluster) Server to connect to", |
|
|
|
|
EnvVar: version.ProgramUpper + "_URL", |
|
|
|
|
Value: "https://127.0.0.1:6443", |
|
|
|
|
Destination: &ServerConfig.ServerURL, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "prepare", |
|
|
|
|
Usage: "Prepare for encryption keys rotation", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: prepare, |
|
|
|
|
Flags: append(EncryptFlags, &cli.BoolFlag{ |
|
|
|
|
Name: "f,force", |
|
|
|
|
Usage: "Force preparation.", |
|
|
|
|
Destination: &ServerConfig.EncryptForce, |
|
|
|
|
}), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "rotate", |
|
|
|
|
Usage: "Rotate secrets encryption keys", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: rotate, |
|
|
|
|
Flags: append(EncryptFlags, &cli.BoolFlag{ |
|
|
|
|
Name: "f,force", |
|
|
|
|
Usage: "Force key rotation.", |
|
|
|
|
Destination: &ServerConfig.EncryptForce, |
|
|
|
|
}), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "reencrypt", |
|
|
|
|
Usage: "Reencrypt all data with new encryption key", |
|
|
|
|
SkipFlagParsing: false, |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: reencrypt, |
|
|
|
|
Flags: append(EncryptFlags, |
|
|
|
|
&cli.BoolFlag{ |
|
|
|
|
Name: "f,force", |
|
|
|
|
Usage: "Force secrets reencryption.", |
|
|
|
|
Destination: &ServerConfig.EncryptForce, |
|
|
|
|
}, |
|
|
|
|
&cli.BoolFlag{ |
|
|
|
|
Name: "skip", |
|
|
|
|
Usage: "Skip removing old key", |
|
|
|
|
Destination: &ServerConfig.EncryptSkip, |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func NewSecretsEncryptCommands(status, enable, disable, prepare, rotate, reencrypt func(ctx *cli.Context) error) cli.Command { |
|
|
|
|
return cli.Command{ |
|
|
|
|
Name: SecretsEncryptCommand, |
|
|
|
|
Usage: "Control secrets encryption and keys rotation", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Subcommands: []cli.Command{ |
|
|
|
|
{ |
|
|
|
|
Name: "status", |
|
|
|
|
Usage: "Print current status of secrets encryption", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: status, |
|
|
|
|
Flags: append(EncryptFlags, &cli.StringFlag{ |
|
|
|
|
Name: "output,o", |
|
|
|
|
Usage: "Status format. Default: text. Optional: json", |
|
|
|
|
Destination: &ServerConfig.EncryptOutput, |
|
|
|
|
}), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "enable", |
|
|
|
|
Usage: "Enable secrets encryption", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: enable, |
|
|
|
|
Flags: EncryptFlags, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "disable", |
|
|
|
|
Usage: "Disable secrets encryption", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: disable, |
|
|
|
|
Flags: EncryptFlags, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "prepare", |
|
|
|
|
Usage: "Prepare for encryption keys rotation", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: prepare, |
|
|
|
|
Flags: append(EncryptFlags, &forceFlag), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "rotate", |
|
|
|
|
Usage: "Rotate secrets encryption keys", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: rotate, |
|
|
|
|
Flags: append(EncryptFlags, &forceFlag), |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Name: "reencrypt", |
|
|
|
|
Usage: "Reencrypt all data with new encryption key", |
|
|
|
|
SkipArgReorder: true, |
|
|
|
|
Action: reencrypt, |
|
|
|
|
Flags: append(EncryptFlags, |
|
|
|
|
&forceFlag, |
|
|
|
|
&cli.BoolFlag{ |
|
|
|
|
Name: "skip", |
|
|
|
|
Usage: "Skip removing old key", |
|
|
|
|
Destination: &ServerConfig.EncryptSkip, |
|
|
|
|
}), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|