Пользователь только для чтения получает полный доступ - PullRequest
0 голосов
/ 18 февраля 2020

Цель - создать пользователя только для чтения для производственного пространства имен для моего кластера EKS. Тем не менее, я вижу, что пользователь имеет полный доступ. Поскольку я новичок в EKS и Kubernetes, пожалуйста, сообщите мне об ошибке, которую я внес.

Я создал пользователя IAM без какого-либо разрешения. ARN: arn:aws:iam::460764xxxxxx:user/eks-prod-readonly-user. Кроме того, я записал идентификатор ключа доступа и секретный ключ доступа -

aws_access_key_id= AKIAWWxxxxxxxxxxxxx
aws_secret_access_key= lAbtyv3zlbAMPxym8Jktal+xxxxxxxxxxxxxxxxxxxx

Затем я создал производственное пространство имен, роль и привязку роли следующим образом -

ubuntu@ip-172-16-0-252:~$ sudo kubectl create namespace production

ubuntu@ip-172-16-0-252:~$ cat role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: production
  name: prod-viewer-role
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]  
  verbs: ["get", "list", "watch"]

ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f role.yaml

ubuntu@ip-172-16-0-252:~$ cat rolebinding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: prod-viewer-binding
  namespace: production
subjects:
- kind: User
  name: eks-prod-readonly-user
  apiGroup: ""
roleRef:
  kind: Role
  name: prod-viewer-role
  apiGroup: ""

ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f rolebinding.yaml

Затем мы добавили вновь созданного пользователя в aws -auth карту конфигурации и применили изменения -

ubuntu@ip-172-16-0-252:~$ sudo kubectl -n kube-system get configmap aws-auth -o yaml > aws-auth-configmap.yaml
ubuntu@ip-172-16-0-252:~$ vi aws-auth-configmap.yaml

Следующий раздел добавлен в 'mapUsers' -

- userarn: arn:aws:iam::460764xxxxxx:user/eks-prod-readonly-user
      username: eks-prod-readonly-user
      groups:
        - prod-viewer-role

ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f aws-auth-configmap.yaml

Теперь я включаю эти данные пользователя в качестве нового раздела в AWS файл учетных данных (~/.aws/credentials), чтобы этот пользователь мог проходить аутентификацию на сервере API Kubernetes -

[eksprodreadonlyuser]
aws_access_key_id= AKIAWWxxxxxxxxxxxxx
aws_secret_access_key= lAbtyv3zlbAMPxym8Jktal+xxxxxxxxxxxxxxxxxxxx
region=eu-west-2
output=json

Я активирую AWS profile -

ubuntu@ip-172-16-0-252:~$ export AWS_PROFILE="eksprodreadonlyuser"
ubuntu@ip-172-16-0-252:~$ aws sts get-caller-identity

Мы видим правильный ARN пользователя в выходных данных команды get-caller-identity.

При попытке увидеть модули пространства имен по умолчанию это работает. В идеале это не так, поскольку пользователю предоставляется доступ только к производственному пространству имен -

ubuntu@ip-172-16-0-252:~$ sudo kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
test-autoscaler-697b95d8b-5wl5d   1/1     Running   0          7d20h
ubuntu@ip-172-16-0-252:~$

Дайте знать указатели для разрешения. Заранее спасибо!

...