Skip to main content

Command Palette

Search for a command to run...

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

Published
3 min read
Cómo Acceder a un Clúster EKS Usando un Usuario de IAM
M

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!

More from this blog

B

Blog de CloudAcademy

80 posts

Acceso Seguro a EKS con IAM para GitHub Actions: Guía Paso a Paso