Skip to content

Commit c41aeae

Browse files
committed
fix(install): require --render-sensitive when using --template
The hypershift install render --template command still leaks secrets after introducing the --render-sensitive flag. This makes it required to have the flag set to true to acknowledge that the template contains sensitive data. Signed-off-by: Borja Clemente <bclement@redhat.com>
1 parent 36c6daa commit c41aeae

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

cmd/install/install_render.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ func RenderHyperShiftOperator(ctx context.Context, cmdOut io.Writer, opts *Optio
105105
return err
106106
}
107107

108+
if opts.Template && !opts.RenderSensitive {
109+
return fmt.Errorf("--template requires --render-sensitive=true because Template output can embed Secret objects")
110+
}
111+
108112
var crds []crclient.Object
109113
var objects []crclient.Object
110114

cmd/install/install_render_test.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestMultiDocYamlRendering(t *testing.T) {
6565
}
6666

6767
func TestTemplateYamlRendering(t *testing.T) {
68-
template, err := ExecuteTemplateYamlGenerationCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "yaml", "--template"})
68+
template, err := ExecuteTemplateYamlGenerationCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "yaml", "--template", "--render-sensitive"})
6969
if err != nil {
7070
t.Fatal(err)
7171
}
@@ -104,6 +104,17 @@ func ExecuteJsonGenerationCommand(args []string) (map[string]interface{}, error)
104104
return doc, nil
105105
}
106106

107+
func TestWhenTemplateWithoutRenderSensitiveItShouldFail(t *testing.T) {
108+
_, err := ExecuteTestCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "yaml", "--template"})
109+
if err == nil {
110+
t.Fatal("expected error when using --template without --render-sensitive")
111+
}
112+
expectedMsg := "--template requires --render-sensitive=true because Template output can embed Secret objects"
113+
if err.Error() != expectedMsg {
114+
t.Fatalf("expected error message %q, got %q", expectedMsg, err.Error())
115+
}
116+
}
117+
107118
func TestJsonListRendering(t *testing.T) {
108119
doc, err := ExecuteJsonGenerationCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "json"})
109120
if err != nil {
@@ -120,7 +131,7 @@ func TestJsonListRendering(t *testing.T) {
120131
}
121132

122133
func TestJsonTemplateRendering(t *testing.T) {
123-
doc, err := ExecuteJsonGenerationCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "json", "--template"})
134+
doc, err := ExecuteJsonGenerationCommand([]string{"--oidc-storage-provider-s3-bucket-name", "bucket", "--oidc-storage-provider-s3-region", "us-east-1", "--oidc-storage-provider-s3-secret", "secret", "render", "--format", "json", "--template", "--render-sensitive"})
124135
if err != nil {
125136
t.Fatal(err)
126137
}

0 commit comments

Comments
 (0)