Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
aws-iam-authenticator — Una herramienta para utilizar credenciales de AWS IAM para autenticarse en un clúster de Kubernetes. | Kitploit
Herramientas/GitHubGitHub/kubernetes-sigs/aws-iam-authenticator
Autenticación y AutorizaciónSeguridad de Infraestructura en la NubeSeguridad en la NubeGestión de Identidad y Acceso (IAM)
GitHubkubernetes-sigs/aws-iam-authenticator

aws-iam-authenticator

Una herramienta para utilizar credenciales de AWS IAM para autenticarse en un clúster de Kubernetes.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
2.3k45046hace 1 díaRevisado por Kitploit

AWS IAM Authenticator para Kubernetes

Una herramienta para usar credenciales de AWS IAM para autenticarse en un clúster de Kubernetes. El trabajo inicial en esta herramienta fue impulsado por Heptio. El proyecto recibe contribuciones de múltiples ingenieros de la comunidad y actualmente está mantenido por Heptio e ingenieros de OSS de Amazon EKS.

Tabla de contenidos

  • ¿Por qué quiero esto?
  • ¿Cómo lo uso?
  • Uso con Kops
  • ¿Cómo funciona?
  • ¿Qué es un cluster ID?
  • Especificación de credenciales y uso de perfiles de AWS
  • Autorización de API desde fuera de un clúster
  • Solución de problemas
  • Formato completo de configuración
  • Desarrollo
  • Comunidad, discusión, contribución y soporte

¿Por qué quiero esto?

Si eres un administrador que ejecuta un clúster de Kubernetes en AWS, ya necesitas gestionar credenciales de AWS IAM para aprovisionar y actualizar el clúster. Al usar AWS IAM Authenticator para Kubernetes, evitas tener que gestionar una credencial separada para el acceso a Kubernetes. AWS IAM también proporciona una serie de propiedades útiles, como un registro de auditoría fuera de banda (a través de CloudTrail) y la aplicación de 2FA/MFA.

Si estás creando un instalador de Kubernetes en AWS, AWS IAM Authenticator para Kubernetes puede simplificar tu proceso de arranque. No necesitarás pasar de forma encubierta tu credencial de administrador inicial de manera segura fuera de tu clúster recién instalado. En su lugar, puedes crear un rol dedicado KubernetesAdmin en el momento del aprovisionamiento del clúster y configurar Authenticator para permitir inicios de sesión de administrador del clúster.

¿Cómo lo uso?

Suponiendo que tienes un clúster ejecutándose en AWS y quieres añadir soporte de AWS IAM Authenticator para Kubernetes, necesitas:

  1. Crear un rol de IAM que usarás para identificar a los usuarios.
  2. Ejecutar el servidor Authenticator como un DaemonSet.
  3. Configurar tu servidor de API para comunicarse con Authenticator.
  4. Configurar kubectl para usar tokens de Authenticator.

1. Crear un rol de IAM

Primero, debes crear uno o más roles de IAM que se asignarán a usuarios/grupos dentro de tu clúster de Kubernetes. La forma más sencilla de hacerlo es iniciar sesión en la consola de AWS:

  • Elige la opción "Role for cross-account access" / "Provide access between AWS accounts you own".
  • Pega tu número de ID de cuenta de AWS (disponible en la esquina superior derecha de la consola).
  • Tu rol no necesita que se le adjunte ninguna política adicional.

Esto creará un rol de IAM sin permisos que puede ser asumido por usuarios/roles autorizados en tu cuenta. Anota el Nombre de recurso de Amazon (ARN) de tu rol, que necesitarás más adelante.

También puedes hacer esto en un solo paso usando la AWS CLI en lugar de la consola de AWS:

# get your account ID
ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account')

# define a role trust policy that opens the role to users in your account (limited by IAM policy)
POLICY=$(echo -n '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':root"},"Action":"sts:AssumeRole","Condition":{}}]}')

# create a role named KubernetesAdmin (will print the new role's ARN)
aws iam create-role \
  --role-name KubernetesAdmin \
  --description "Kubernetes administrator role (for AWS IAM Authenticator for Kubernetes)." \
  --assume-role-policy-document "$POLICY" \
  --output text \
  --query 'Role.Arn'

También puedes omitir este paso y usar:

  • Un rol existente (como un rol de acceso entre cuentas).
  • Un usuario de IAM (consulta mapUsers a continuación).
  • Una instancia de EC2 o un rol federado (consulta mapRoles a continuación).

2. Ejecutar el servidor

El servidor está pensado para ejecutarse en cada uno de tus nodos maestros como un DaemonSet con networking de host para que pueda exponer un puerto localhost.

Para ver un ejemplo de configuración de ConfigMap y DaemonSet, consulta deploy/example.yaml. Antes de aplicarlo, actualiza estos valores para tu clúster:

  • Reemplaza los ARN de IAM de marcador de posición (arn:aws:iam::000000000000:...) en config.yaml.
  • Establece clusterID con un valor único para tu clúster.
  • Verifica que las reglas de programación del DaemonSet coincidan con las etiquetas/taints de tus nodos del plano de control.

Luego despliégalo:

kubectl apply -f deploy/example.yaml
kubectl -n kube-system rollout status daemonset/aws-iam-authenticator
kubectl -n kube-system get pods -l k8s-app=aws-iam-authenticator

Una vez que el pod se esté ejecutando en un nodo del plano de control, el aws-iam-authenticator server creará el kubeconfig del webhook en el host en /etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml (o la ruta configurada mediante --generate-kubeconfig).

(Opcional) Pre-generar un certificado, una clave y un kubeconfig

Si estás creando un instalador automatizado, también puedes pre-generar fácilmente los archivos de certificado, clave y kubeconfig del webhook usando aws-iam-authenticator init. Este comando generará los archivos y los colocará en los directorios de salida configurados.

Puedes ejecutar esto en cada nodo maestro antes de iniciar el servidor de API. También podrías generarlos antes de aprovisionar los nodos maestros e instalarlos en las rutas de host adecuadas.

Si no pre-generas los archivos, aws-iam-authenticator server los generará bajo demanda. Esto funciona, pero requiere que reinicies tu servidor de API de Kubernetes después de la instalación.

3. Configurar tu servidor de API para que se comunique con el servidor

La API de Kubernetes se integra con AWS IAM Authenticator for Kubernetes mediante un webhook de autenticación por token. Cuando ejecutas aws-iam-authenticator server, este generará un archivo de configuración de webhook y lo guardará en el sistema de archivos del host. Deberás añadir un único flag adicional a la configuración de tu servidor de API:

--authentication-token-webhook-config-file=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml

En muchos clústeres, el servidor de API se ejecuta como un pod estático. Puedes añadir el flag a /etc/kubernetes/manifests/kube-apiserver.yaml. Asegúrate de que el directorio del host /etc/kubernetes/aws-iam-authenticator/ esté montado en tu pod del servidor de API. También puede que necesites reiniciar el daemon kubelet en tu nodo maestro para que tome la definición actualizada del pod estático:

systemctl restart kubelet.service

4. Crear asignaciones de rol/usuario de IAM a usuario/grupo de kubernetes

El comportamiento predeterminado del servidor es obtener las asignaciones exclusivamente de los campos mapUsers y mapRoles de su archivo de configuración. Consulte Formato de configuración completo a continuación para obtener más detalles.

Usando el flag --backend-mode, puede configurar el servidor para que obtenga las asignaciones de dos backends adicionales: un ConfigMap de estilo EKS (--backend-mode=EKSConfigMap) o recursos personalizados IAMIdentityMapping (--backend-mode=CRD). El backend predeterminado, el archivo de configuración del servidor que está montado por el pod del servidor, corresponde a --backend-mode=MountedFile.

Descargar herramienta