2017-12-20 03:51:07 +02:00
|
|
|
package authz
|
|
|
|
|
|
|
|
import (
|
2018-01-09 15:10:56 -07:00
|
|
|
"context"
|
|
|
|
|
2019-08-19 10:53:15 -07:00
|
|
|
"k8s.io/client-go/transport"
|
|
|
|
|
2017-12-20 03:51:07 +02:00
|
|
|
"github.com/rancher/rke/k8s"
|
2018-01-09 15:10:56 -07:00
|
|
|
"github.com/rancher/rke/log"
|
2017-12-16 05:37:45 +02:00
|
|
|
"github.com/rancher/rke/templates"
|
2017-12-20 03:51:07 +02:00
|
|
|
)
|
|
|
|
|
2019-08-19 10:53:15 -07:00
|
|
|
func ApplyDefaultPodSecurityPolicy(ctx context.Context, kubeConfigPath string, k8sWrapTransport transport.WrapperFunc) error {
|
2018-01-09 15:10:56 -07:00
|
|
|
log.Infof(ctx, "[authz] Applying default PodSecurityPolicy")
|
2018-02-20 13:51:57 +02:00
|
|
|
k8sClient, err := k8s.NewClient(kubeConfigPath, k8sWrapTransport)
|
2017-12-20 03:51:07 +02:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
2017-12-16 05:37:45 +02:00
|
|
|
if err := k8s.UpdatePodSecurityPolicyFromYaml(k8sClient, templates.DefaultPodSecurityPolicy); err != nil {
|
2017-12-20 03:51:07 +02:00
|
|
|
return err
|
|
|
|
}
|
2018-01-09 15:10:56 -07:00
|
|
|
log.Infof(ctx, "[authz] Default PodSecurityPolicy applied successfully")
|
2017-12-20 03:51:07 +02:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-08-19 10:53:15 -07:00
|
|
|
func ApplyDefaultPodSecurityPolicyRole(ctx context.Context, kubeConfigPath, namespace string, k8sWrapTransport transport.WrapperFunc) error {
|
2019-08-02 00:35:56 +02:00
|
|
|
log.Infof(ctx, "[authz] Applying default PodSecurityPolicy Role and RoleBinding in %s", namespace)
|
2018-02-20 13:51:57 +02:00
|
|
|
k8sClient, err := k8s.NewClient(kubeConfigPath, k8sWrapTransport)
|
2017-12-20 03:51:07 +02:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
2019-08-02 00:35:56 +02:00
|
|
|
if err := k8s.UpdateRoleFromYaml(k8sClient, templates.DefaultPodSecurityRole, namespace); err != nil {
|
2017-12-20 03:51:07 +02:00
|
|
|
return err
|
|
|
|
}
|
2019-08-02 00:35:56 +02:00
|
|
|
if err := k8s.UpdateRoleBindingFromYaml(k8sClient, templates.DefaultPodSecurityRoleBinding, namespace); err != nil {
|
2017-12-20 03:51:07 +02:00
|
|
|
return err
|
|
|
|
}
|
2018-01-09 15:10:56 -07:00
|
|
|
log.Infof(ctx, "[authz] Default PodSecurityPolicy Role and RoleBinding applied successfully")
|
2017-12-20 03:51:07 +02:00
|
|
|
return nil
|
|
|
|
}
|