Cómo Acceder a un Clúster EKS Usando un Usuario de IAM

Apasionado por la tecnología con más de 10 años de experiencia. Actualmente trabajando con tecnologías Cloud y Devops.
☁️ AWS Certified Solutions Architect – Associate ☁️ AWS Certified Security – Specialty
En este artículo, te explicaré cómo configurar un usuario de IAM para acceder de forma segura a un clúster EKS. Este procedimiento es particularmente útil si por ejemplo necesitas que tus pipelines GitHub Actions interactúen con tu clúster EKS.
1. Configuración de Permisos de IAM para el Usuario github-actions
Para que GitHub Actions puedan interactuar con tu clúster EKS, el usuario de IAM debe tener los permisos adecuados.
Permiso para Describir el Clúster EKS:
El usuario de IAM necesita la siguiente política para poder describir el clúster EKS:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "eks:DescribeCluster",
"Resource": "*"
}
]
}
Permisos de ECR:
Además, el usuario necesita acceso completo al Amazon Elastic Container Registry (ECR). Puedes optar por asignar el rol administrado AmazonEC2ContainerRegistryFullAccess.
Sin embargo, si prefieres un enfoque más preciso, puedes asignar los siguientes permisos:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:*"
],
"Resource": "arn:aws:ecr:*:*:repository/test-feature-api"
},
{
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
}
]
}
Estos permisos le permiten al usuario interactuar solo con el repositorio específico en ECR, mejorando la seguridad.
2. Configuración del ConfigMap en EKS
En el clúster EKS, existe un ConfigMap llamado aws-auth en el namespace kube-system. Debes agregar la siguiente configuración para permitir que el usuario de IAM github-actions acceda al clúster.
Agrega lo siguiente en la sección mapUsers del ConfigMap:
mapUsers: |
- userarn: arn:aws:iam::453382700593:user/github-actions
username: github-actions
Esto asocia el usuario de IAM con un usuario dentro del clúster EKS, permitiéndole ejecutar acciones dentro del clúster.
3. Creación de un Rol en EKS
A continuación, debes crear un rol dentro del clúster que otorgue los permisos necesarios. Aquí te muestro un ejemplo de rol:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: test
name: test-role
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
Este rol otorga permisos completos sobre todos los recursos en el namespace test.
4. Creación de un RoleBinding en EKS
El siguiente paso es crear un RoleBinding para vincular el usuario github-actions con el rol que acabas de crear:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: test-roleBinding
namespace: test
subjects:
- kind: User
name: github-actions
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: synconme-role
apiGroup: rbac.authorization.k8s.io
Esto permite que el usuario de IAM github-actions ejecute las acciones permitidas por el rol test-role dentro del namespace.
5. Actualización del Kubeconfig
Finalmente, para permitir que el usuario github-actions acceda al clúster EKS desde GitHub Actions, debes actualizar el kubeconfig con el siguiente comando:
aws eks update-kubeconfig --region region-code --name my-cluster
Este comando configura las credenciales necesarias para que kubectl pueda interactuar con tu clúster EKS.
Configurar el acceso seguro a un clúster EKS usando un usuario de IAM es esencial para integrar GitHub Actions con tu infraestructura en la nube. Siguiendo estos pasos, puedes asegurarte de que tu flujo de trabajo de CI/CD tenga los permisos correctos y minimices los riesgos de seguridad.
¡Ahora estás listo para usar GitHub Actions con tu clúster EKS de manera segura y eficiente!





