Concesión de acceso a los usuarios a Kubernetes con un proveedor de OIDC externo - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Concesión de acceso a los usuarios a Kubernetes con un proveedor de OIDC externo

Amazon EKS admite el uso de proveedores de identidad OpenID Connect (OIDC) como método para autenticar usuarios en su clúster. Los proveedores de identidad OIDC se pueden utilizar con o como una alternativa a AWS Identity and Access Management (IAM). Para obtener más información acerca del uso de IAM, consulte Concesión a los usuarios y roles de IAM de acceso a las APIs de Kubernetes. Después de configurar la autenticación de su clúster, puede crear roles y clusterroles de Kubernetes para asignar permisos a los roles y, a continuación, vincular los roles a las identidades con rolebindings y clusterrolebindings de Kubernetes. Para obtener más información, consulte Utilización de la autorización de RBAC en la documentación de Kubernetes.

Consideraciones
  • Puede asociar un proveedor de identidad OIDC al clúster.

  • Kubernetes no proporciona un proveedor de identidad OIDC por sí mismo. Puede utilizar un proveedor de identidad OIDC público existente o ejecutar su propio proveedor de identidad. Para obtener una lista de proveedores certificados, consulte Certificación de OpenID en la página web de OpenID.

  • La URL del emisor del proveedor de identidad OIDC debe ser accesible de manera pública para que Amazon EKS pueda descubrir las claves de firma. Amazon EKS no admite proveedores de identidad OIDC con certificados autofirmados.

  • No es posible desactivar el autenticador de IAM en el clúster, ya que aún es necesario para unir nodos al clúster.

  • Aún debe crearse un clúster de Amazon EKS mediante una entidad principal de IAM de AWS, en lugar de un usuario de proveedor de identidad OIDC. Esto se debe a que el creador del clúster interactúa con las API de Amazon EKS, en lugar de con las API de Kubernetes.

  • Los usuarios autenticados por el proveedor de identidad OIDC aparecen en el registro de auditoría del clúster si los registros de CloudWatch están habilitados para el plano de control. Para obtener más información, consulte Habilitación o deshabilitación de los registros del plano de control.

  • No es posible iniciar sesión en la AWS Management Console con una cuenta de un proveedor de identidad OIDC. Solo puede ver los recursos de Kubernetes en la consola al iniciar sesión en la AWS Management Console con una cuenta de AWS Identity and Access Management.

Asociación de un proveedor de identidad OIDC

Antes de asociar un proveedor de identidad OIDC al clúster, necesita la siguiente información de su proveedor:

URL del emisor

La URL del proveedor de identidad de OIDC que permite al servidor de API descubrir claves de firma públicas para verificar tokens. La URL debe comenzar con https:// y debe corresponder a la afirmación iss en los tokens de ID de OIDC del proveedor. De acuerdo con el estándar de OIDC, los componentes de ruta están permitidos, pero los parámetros de consulta no lo están. Normalmente, la URL consta de solo un nombre de host, como https://server.example.org o https://example.com. Esta URL debe apuntar al siguiente nivel a .well-known/openid-configuration y debe ser de acceso público a través de Internet.

ID de cliente (también conocido como público)

El ID de la aplicación cliente que realiza solicitudes de autenticación al proveedor de identidad de OIDC.

Puede asociar un proveedor de identidad mediante eksctl o la AWS Management Console.

eksctl
Para asociar un proveedor de identidad OIDC al clúster con eksctl
  1. Cree un archivo denominado associate-identity-provider.yaml con el siguiente contenido. Reemplace los example values por los de su propiedad. Los valores de la sección identityProviders se obtienen de su proveedor de identidad OIDC. Los valores solo son necesarios para la configuración de name, type, issuerUrl y clientId en identityProviders.

    --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: your-region-code identityProviders: - name: my-provider type: oidc issuerUrl: https://example.com clientId: kubernetes usernameClaim: email usernamePrefix: my-username-prefix groupsClaim: my-claim groupsPrefix: my-groups-prefix requiredClaims: string: string tags: env: dev
    importante

    No especifique system:, o cualquier parte de esa cadena, para groupsPrefix o usernamePrefix.

  2. Cree el proveedor.

    eksctl associate identityprovider -f associate-identity-provider.yaml
  3. Para utilizar kubectl para trabajar con su clúster y el proveedor de identidad de OIDC, consulte Uso de kubectl en la documentación de Kubernetes.

AWS Management Console
Cómo asociar un proveedor de identidad de OIDC al clúster con la AWS Management Console
  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. Seleccione el clúster y, a continuación, seleccione la pestaña Acceso.

  3. En la sección Proveedores de identidad de OIDC, seleccione Proveedor de identidad de asociado.

  4. En la página Asociar proveedor de identidad OIDC, ingrese o seleccione las siguientes opciones y, a continuación, seleccione Asociar.

    • En Name (Nombre), ingrese un nombre único para el proveedor.

    • En Issuer URL (URL del emisor), ingrese la URL del proveedor. Debe ser posible el acceso a esta URL a través de Internet.

    • En ID de cliente, ingrese el ID de cliente del proveedor de identidad OIDC (también conocido como audiencia).

    • En Username claim (Afirmación de nombre de usuario), ingrese la afirmación que desea utilizar como nombre de usuario.

    • En Groups claim (Afirmación de grupo), ingrese la afirmación que desea utilizar como grupo del usuario.

    • (Opcional) Seleccione Opciones avanzadas, e ingrese o seleccione la siguiente información.

      • Username prefix (Prefijo de nombre de usuario): ingrese un prefijo para anteponer a las afirmaciones de nombre de usuario. El prefijo se antepone a las afirmaciones de nombre de usuario para evitar conflictos con nombres existentes. Si no proporciona un valor y el nombre de usuario es un valor distinto de email, el prefijo se establece de forma predeterminada en el valor de Issuer URL (URL del emisor). Puede utilizar el valor - para desactivar todos los prefijos. No especifique system: o cualquier parte de esa cadena.

      • Groups prefix (Prefijo de grupos): ingrese un prefijo para anteponer a las afirmaciones de grupos. El prefijo se antepone a las afirmaciones de grupo para evitar conflictos con nombres existentes (por ejemplo, system: groups). Por ejemplo, el valor oidc: crea nombres de grupo como oidc:engineering y oidc:infra. No especifique system: o cualquier parte de esa cadena.

      • Required claims (Afirmaciones requeridas): seleccione Add claim (Agregar afirmación) e ingrese uno o más pares de valor de clave que describan las afirmaciones requeridas en el token del ID de cliente. Los pares describen las contestaciones requeridas en el token del ID. Si se establece, se verifica que cada afirmación esté presente en el token del ID con un valor coincidente.

  5. Para utilizar kubectl para trabajar con su clúster y el proveedor de identidad OIDC, consulte Uso de kubectl en la documentación de Kubernetes.

Política de IAM de ejemplo

Si desea evitar que un proveedor de identidad OIDC se asocie a un clúster, cree y asocie la siguiente política de IAM a las cuentas de IAM de sus administradores de Amazon EKS. Para obtener más información, consulte Creación de políticas de IAM y Agregación de permisos de identidad de IAM en la Guía del usuario de IAM y Claves de condición, recursos y acciones de Amazon Elastic Kubernetes Service en la Referencia de autorizaciones de servicio.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2.amazonaws.com:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }

La siguiente política de ejemplo permite la asociación de proveedores de identidad OIDC si el clientID es kubernetes y la issuerUrl es https://cognito-idp.us-west-2amazonaws.com/*.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }

Proveedores de identidad OIDC validados por socios

Amazon EKS mantiene relaciones con una red de socios que ofrecen soporte para proveedores de identidad OIDC compatibles. Consulte la siguiente documentación de socios para obtener información detallada sobre cómo integrar al proveedor de identidades con Amazon EKS.

Socio Producto Documentación

PingIdentity

PingOne para empresas

Instrucciones de instalación

Amazon EKS tiene como objetivo darle una amplia selección de opciones para cubrir todos los casos de uso. Si desarrolla un proveedor de identidades OIDC compatible comercialmente que no aparece aquí, póngase en contacto con nuestro equipo de socios en aws-container-partners@amazon.com para obtener más información.