Skip to content

Commit 39adde8

Browse files
committed
04-remove-synthetic-permissions
1 parent a191e41 commit 39adde8

File tree

11 files changed

+0
-376
lines changed

11 files changed

+0
-376
lines changed

cmd/operator-controller/main.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -695,9 +695,6 @@ func (c *helmReconcilerConfigurator) Configure(ceReconciler *controllers.Cluster
695695
}
696696
tokenGetter := authentication.NewTokenGetter(coreClient, authentication.WithExpirationDuration(1*time.Hour))
697697
clientRestConfigMapper := action.ServiceAccountRestConfigMapper(tokenGetter)
698-
if features.OperatorControllerFeatureGate.Enabled(features.SyntheticPermissions) {
699-
clientRestConfigMapper = action.SyntheticUserRestConfigMapper(clientRestConfigMapper)
700-
}
701698

702699
cfgGetter, err := helmclient.NewActionConfigGetter(c.mgr.GetConfig(), c.mgr.GetRESTMapper(),
703700
helmclient.StorageDriverMapper(action.ChunkedStorageDriverMapper(coreClient, c.mgr.GetAPIReader(), cfg.systemNamespace)),

docs/draft/howto/use-synthetic-permissions.md

Lines changed: 0 additions & 133 deletions
This file was deleted.

hack/demo/resources/synthetic-user-perms/argocd-clusterextension.yaml

Lines changed: 0 additions & 13 deletions
This file was deleted.

hack/demo/resources/synthetic-user-perms/cegroup-admin-binding.yaml

Lines changed: 0 additions & 11 deletions
This file was deleted.

hack/demo/synthetic-user-cluster-admin-demo-script.sh

Lines changed: 0 additions & 30 deletions
This file was deleted.

internal/operator-controller/action/restconfig.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,12 @@ import (
77

88
"k8s.io/apimachinery/pkg/types"
99
"k8s.io/client-go/rest"
10-
"k8s.io/client-go/transport"
1110
"sigs.k8s.io/controller-runtime/pkg/client"
1211

1312
ocv1 "github.com/operator-framework/operator-controller/api/v1"
1413
"github.com/operator-framework/operator-controller/internal/operator-controller/authentication"
1514
)
1615

17-
const syntheticServiceAccountName = "olm.synthetic-user"
18-
19-
// SyntheticUserRestConfigMapper returns an AuthConfigMapper that that impersonates synthetic users and groups for Object o.
20-
// o is expected to be a ClusterExtension. If the service account defined in o is different from 'olm.synthetic-user', the
21-
// defaultAuthMapper will be used
22-
func SyntheticUserRestConfigMapper(defaultAuthMapper func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error)) func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error) {
23-
return func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error) {
24-
cExt, err := validate(o, c)
25-
if err != nil {
26-
return nil, err
27-
}
28-
if cExt.Spec.ServiceAccount.Name != syntheticServiceAccountName {
29-
return defaultAuthMapper(ctx, cExt, c)
30-
}
31-
cc := rest.CopyConfig(c)
32-
cc.Wrap(func(rt http.RoundTripper) http.RoundTripper {
33-
return transport.NewImpersonatingRoundTripper(authentication.SyntheticImpersonationConfig(*cExt), rt)
34-
})
35-
return cc, nil
36-
}
37-
}
38-
3916
// ServiceAccountRestConfigMapper returns an AuthConfigMapper scoped to the service account defined in o, which is expected to
4017
// be a ClusterExtension
4118
func ServiceAccountRestConfigMapper(tokenGetter *authentication.TokenGetter) func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error) {

internal/operator-controller/action/restconfig_test.go

Lines changed: 0 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package action_test
33
import (
44
"context"
55
"errors"
6-
"net/http"
76
"testing"
87

98
"github.com/stretchr/testify/require"
@@ -74,104 +73,3 @@ func Test_ServiceAccountRestConfigMapper(t *testing.T) {
7473
})
7574
}
7675
}
77-
78-
func Test_SyntheticUserRestConfigMapper_Fails(t *testing.T) {
79-
for _, tc := range []struct {
80-
description string
81-
obj client.Object
82-
cfg *rest.Config
83-
expectedError error
84-
}{
85-
{
86-
description: "return error if object is nil",
87-
cfg: &rest.Config{},
88-
expectedError: errors.New("object is nil"),
89-
}, {
90-
description: "return error if cfg is nil",
91-
obj: &ocv1.ClusterExtension{},
92-
expectedError: errors.New("rest config is nil"),
93-
}, {
94-
description: "return error if object is not a ClusterExtension",
95-
obj: &corev1.Secret{},
96-
cfg: &rest.Config{},
97-
expectedError: errors.New("object is not a ClusterExtension"),
98-
},
99-
} {
100-
t.Run(tc.description, func(t *testing.T) {
101-
tokenGetter := &authentication.TokenGetter{}
102-
saMapper := action.ServiceAccountRestConfigMapper(tokenGetter)
103-
actualCfg, err := saMapper(context.Background(), tc.obj, tc.cfg)
104-
if tc.expectedError != nil {
105-
require.Nil(t, actualCfg)
106-
require.EqualError(t, err, tc.expectedError.Error())
107-
} else {
108-
require.NoError(t, err)
109-
transport, err := rest.TransportFor(actualCfg)
110-
require.NoError(t, err)
111-
require.NotNil(t, transport)
112-
tokenInjectionRoundTripper, ok := transport.(*authentication.TokenInjectingRoundTripper)
113-
require.True(t, ok)
114-
require.Equal(t, tokenGetter, tokenInjectionRoundTripper.TokenGetter)
115-
require.Equal(t, types.NamespacedName{Name: "my-service-account", Namespace: "my-namespace"}, tokenInjectionRoundTripper.Key)
116-
}
117-
})
118-
}
119-
}
120-
func Test_SyntheticUserRestConfigMapper_UsesDefaultConfigMapper(t *testing.T) {
121-
isDefaultRequestMapperUsed := false
122-
defaultServiceMapper := func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error) {
123-
isDefaultRequestMapperUsed = true
124-
return c, nil
125-
}
126-
syntheticAuthServiceMapper := action.SyntheticUserRestConfigMapper(defaultServiceMapper)
127-
obj := &ocv1.ClusterExtension{
128-
ObjectMeta: metav1.ObjectMeta{
129-
Name: "my-clusterextension",
130-
},
131-
Spec: ocv1.ClusterExtensionSpec{
132-
ServiceAccount: ocv1.ServiceAccountReference{
133-
Name: "my-service-account",
134-
},
135-
Namespace: "my-namespace",
136-
},
137-
}
138-
actualCfg, err := syntheticAuthServiceMapper(context.Background(), obj, &rest.Config{})
139-
require.NoError(t, err)
140-
require.NotNil(t, actualCfg)
141-
require.True(t, isDefaultRequestMapperUsed)
142-
}
143-
144-
func Test_SyntheticUserRestConfigMapper_UsesSyntheticAuthMapper(t *testing.T) {
145-
syntheticAuthServiceMapper := action.SyntheticUserRestConfigMapper(func(ctx context.Context, o client.Object, c *rest.Config) (*rest.Config, error) {
146-
return c, nil
147-
})
148-
obj := &ocv1.ClusterExtension{
149-
ObjectMeta: metav1.ObjectMeta{
150-
Name: "my-clusterextension",
151-
},
152-
Spec: ocv1.ClusterExtensionSpec{
153-
ServiceAccount: ocv1.ServiceAccountReference{
154-
Name: "olm.synthetic-user",
155-
},
156-
Namespace: "my-namespace",
157-
},
158-
}
159-
actualCfg, err := syntheticAuthServiceMapper(context.Background(), obj, &rest.Config{})
160-
require.NoError(t, err)
161-
require.NotNil(t, actualCfg)
162-
163-
// test that the impersonation headers are appropriately injected into the request
164-
// by wrapping a fake round tripper around the returned configurations transport
165-
// nolint:bodyclose
166-
_, _ = actualCfg.WrapTransport(fakeRoundTripper(func(req *http.Request) (*http.Response, error) {
167-
require.Equal(t, "olm:clusterextension:my-clusterextension", req.Header.Get("Impersonate-User"))
168-
require.Equal(t, "olm:clusterextensions", req.Header.Get("Impersonate-Group"))
169-
return &http.Response{}, nil
170-
})).RoundTrip(&http.Request{})
171-
}
172-
173-
type fakeRoundTripper func(req *http.Request) (*http.Response, error)
174-
175-
func (f fakeRoundTripper) RoundTrip(request *http.Request) (*http.Response, error) {
176-
return f(request)
177-
}

internal/operator-controller/authentication/synthetic.go

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)