|
6 | 6 |
|
7 | 7 | log "github.com/sirupsen/logrus"
|
8 | 8 | appsv1 "k8s.io/api/apps/v1"
|
9 |
| - rbacv1 "k8s.io/api/rbac/v1" |
10 | 9 | apierrors "k8s.io/apimachinery/pkg/api/errors"
|
11 | 10 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
12 | 11 | "k8s.io/apimachinery/pkg/labels"
|
@@ -47,7 +46,6 @@ func (a *Operator) checkAPIServiceResources(csv *v1alpha1.ClusterServiceVersion,
|
47 | 46 | })
|
48 | 47 |
|
49 | 48 | errs := []error{}
|
50 |
| - ruleChecker := install.NewCSVRuleChecker(a.lister.RbacV1().RoleLister(), a.lister.RbacV1().RoleBindingLister(), a.lister.RbacV1().ClusterRoleLister(), a.lister.RbacV1().ClusterRoleBindingLister(), csv) |
51 | 49 | for _, desc := range csv.GetOwnedAPIServiceDescriptions() {
|
52 | 50 | apiServiceName := desc.GetName()
|
53 | 51 | logger := logger.WithFields(log.Fields{
|
@@ -164,60 +162,27 @@ func (a *Operator) checkAPIServiceResources(csv *v1alpha1.ClusterServiceVersion,
|
164 | 162 | if serviceAccountName == "" {
|
165 | 163 | serviceAccountName = "default"
|
166 | 164 | }
|
167 |
| - serviceAccount, err := a.lister.CoreV1().ServiceAccountLister().ServiceAccounts(deployment.GetNamespace()).Get(serviceAccountName) |
| 165 | + _, err = a.opClient.KubernetesInterface().CoreV1().ServiceAccounts(deployment.GetNamespace()).Get(context.TODO(), serviceAccountName, metav1.GetOptions{}) |
168 | 166 | if err != nil {
|
169 |
| - logger.WithField("serviceaccount", serviceAccountName).Warnf("could not retrieve ServiceAccount") |
| 167 | + logger.WithError(err).WithField("serviceaccount", serviceAccountName).Warnf("could not retrieve ServiceAccount") |
170 | 168 | errs = append(errs, err)
|
171 |
| - continue |
172 | 169 | }
|
173 | 170 |
|
174 |
| - // Ensure RBAC permissions for the APIService are correct |
175 |
| - rulesMap := map[string][]rbacv1.PolicyRule{ |
176 |
| - // Serving cert Secret Rule |
177 |
| - csv.GetNamespace(): { |
178 |
| - { |
179 |
| - Verbs: []string{"get"}, |
180 |
| - APIGroups: []string{""}, |
181 |
| - Resources: []string{"secrets"}, |
182 |
| - ResourceNames: []string{secret.GetName()}, |
183 |
| - }, |
184 |
| - }, |
185 |
| - install.KubeSystem: {}, |
186 |
| - metav1.NamespaceAll: {}, |
| 171 | + if _, err := a.lister.RbacV1().RoleLister().Roles(secret.GetNamespace()).Get(secret.GetName()); err != nil { |
| 172 | + logger.WithError(err).Warnf("could not retrieve role %s/%s", secret.GetNamespace(), secret.GetName()) |
| 173 | + errs = append(errs, err) |
187 | 174 | }
|
188 |
| - |
189 |
| - // extension-apiserver-authentication-reader |
190 |
| - authReaderRole, err := a.lister.RbacV1().RoleLister().Roles(install.KubeSystem).Get("extension-apiserver-authentication-reader") |
191 |
| - if err != nil { |
192 |
| - logger.Warnf("could not retrieve Role extension-apiserver-authentication-reader") |
| 175 | + if _, err := a.lister.RbacV1().RoleBindingLister().RoleBindings(secret.GetNamespace()).Get(secret.GetName()); err != nil { |
| 176 | + logger.WithError(err).Warnf("could not retrieve role binding %s/%s", secret.GetNamespace(), secret.GetName()) |
193 | 177 | errs = append(errs, err)
|
194 |
| - continue |
195 | 178 | }
|
196 |
| - rulesMap[install.KubeSystem] = append(rulesMap[install.KubeSystem], authReaderRole.Rules...) |
197 |
| - |
198 |
| - // system:auth-delegator |
199 |
| - authDelegatorClusterRole, err := a.lister.RbacV1().ClusterRoleLister().Get("system:auth-delegator") |
200 |
| - if err != nil { |
201 |
| - logger.Warnf("could not retrieve ClusterRole system:auth-delegator") |
| 179 | + if _, err := a.lister.RbacV1().ClusterRoleBindingLister().Get(install.AuthDelegatorClusterRoleBindingName(service.GetName())); err != nil { |
| 180 | + logger.WithError(err).Warnf("could not retrieve auth delegator cluster role binding %s", install.AuthDelegatorClusterRoleBindingName(service.GetName())) |
202 | 181 | errs = append(errs, err)
|
203 |
| - continue |
204 | 182 | }
|
205 |
| - rulesMap[metav1.NamespaceAll] = append(rulesMap[metav1.NamespaceAll], authDelegatorClusterRole.Rules...) |
206 |
| - |
207 |
| - for namespace, rules := range rulesMap { |
208 |
| - for _, rule := range rules { |
209 |
| - satisfied, err := ruleChecker.RuleSatisfied(serviceAccount, namespace, rule) |
210 |
| - if err != nil { |
211 |
| - logger.WithField("rule", fmt.Sprintf("%+v", rule)).Warnf("error checking Rule") |
212 |
| - errs = append(errs, err) |
213 |
| - continue |
214 |
| - } |
215 |
| - if !satisfied { |
216 |
| - logger.WithField("rule", fmt.Sprintf("%+v", rule)).Warnf("Rule not satisfied") |
217 |
| - errs = append(errs, fmt.Errorf("rule %+v not satisfied", rule)) |
218 |
| - continue |
219 |
| - } |
220 |
| - } |
| 183 | + if _, err := a.lister.RbacV1().RoleBindingLister().RoleBindings(install.KubeSystem).Get(install.AuthReaderRolebindingName(service.GetName())); err != nil { |
| 184 | + logger.WithError(err).Warnf("could not retrieve role binding %s/%s", install.KubeSystem, install.AuthReaderRolebindingName(service.GetName())) |
| 185 | + errs = append(errs, err) |
221 | 186 | }
|
222 | 187 | }
|
223 | 188 |
|
|
0 commit comments