Concesión de acceso a los pods a los recursos de AWS en función de las etiquetas - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Concesión de acceso a los pods a los recursos de AWS en función de las etiquetas

El control de acceso basado en atributos (ABAC) concede derechos a los usuarios mediante políticas que combinan atributos. Pod Identity de EKS adjunta etiquetas a las credenciales temporales de cada pod con atributos como el nombre del clúster, el espacio de nombres y el nombre de la cuenta de servicio. Estas etiquetas de sesión de roles permiten a los administradores crear un único rol que funcione en todas las cuentas de servicio al permitir el acceso a los recursos de AWS en función de las etiquetas coincidentes. Al agregar la compatibilidad con las etiquetas de sesión de roles, puede reforzar los límites de seguridad entre los clústeres y las cargas de trabajo dentro de los clústeres, mientras reutilizan los mismos roles y políticas de IAM.

Ejemplo de política con etiquetas

A continuación, se muestra un ejemplo de política de IAM que concede permisos s3:GetObject cuando el objeto correspondiente está etiquetado con el nombre del clúster de EKS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/eks-cluster-name": "${aws:PrincipalTag/eks-cluster-name}" } } } ] }

Activación o desactivación de etiquetas de sesión

EKS Pod Identity agrega un conjunto predefinido de etiquetas de sesión cuando asume el rol. Estas etiquetas de sesión permiten a los administradores crear un único rol que funcione en todos los recursos al permitir el acceso a los recursos de AWS en función de las etiquetas coincidentes.

Activación de las etiquetas de sesión

Las etiquetas de sesión se activan automáticamente con EKS Pod Identity, por lo que no es necesario que haga nada. De forma predeterminada, EKS Pod Identity adjunta un conjunto de etiquetas predefinidas a la sesión. Para hacer referencia a estas etiquetas en las políticas, utilice la sintaxis ${aws:PrincipalTag/ seguida de la clave de etiqueta. Por ejemplo, ${aws:PrincipalTag/kubernetes-namespace}.

  • eks-cluster-arn

  • eks-cluster-name

  • kubernetes-namespace

  • kubernetes-service-account

  • kubernetes-pod-name

  • kubernetes-pod-uid

Desactivación de las etiquetas de sesión

AWS comprime las políticas de sesión insertadas, los ARN de políticas administradas y las etiquetas de sesión en un formato binario empaquetado que tiene un límite separado. Si recibe un error PackedPolicyTooLarge que indica que el formato binario empaquetado ha superado el límite de tamaño, puede desactivar las etiquetas de sesión agregadas por EKS Pod Identity para intentar reducir el tamaño. Para desactivar estas etiquetas de sesión, siga estos pasos:

  1. Abra la consola de Amazon EKS.

  2. En el panel de navegación izquierdo, seleccione Clústeres y, luego, seleccione el nombre del clúster que desea modificar.

  3. Elija la pestaña Acceso.

  4. En Asociaciones de Pod Identity, elija el ID de asociación que desea modificar en ID de asociación y, a continuación, Editar.

  5. En Etiquetas de sesión, elija Desactivar etiquetas de sesión.

  6. Seleccione Save changes (Guardar cambios).

Etiquetas entre cuentas

Todas las etiquetas de sesión que agrega Pod Identity de EKS son transitivas; las claves y los valores de las etiquetas se transfieren a cualquier acción AssumeRole que sus cargas de trabajo utilicen para cambiar los roles a otra cuenta. Puede utilizar estas etiquetas en las políticas de otras cuentas para limitar el acceso en situaciones entre cuentas. Para obtener más información, consulte Encadenar roles con etiquetas de sesión en la Guía del usuario de IAM.

Etiquetas personalizadas

Pod Identity de Amazon EKS no puede agregar etiquetas personalizadas adicionales a la acción AssumeRole que realiza. Sin embargo, las etiquetas que se aplican al rol de IAM siempre están disponibles en el mismo formato: ${aws:PrincipalTag/ seguido de la clave, por ejemplo, ${aws:PrincipalTag/MyCustomTag}.

nota

Las etiquetas agregadas a la sesión mediante la solicitud de sts:AssumeRole tienen prioridad en caso de conflicto. Por ejemplo, supongamos que:

  • Amazon EKS agrega una clave eks-cluster-name y un valor my-cluster a la sesión cuando EKS asume el rol de cliente y

  • Agrega una etiqueta eks-cluster-name al rol de IAM con el valor my-own-cluster.

En este caso, prevalecerá la primera y el valor de la etiqueta eks-cluster-name será my-cluster.