Uso de CSI del Proveedor de secretos y configuración (ASCP) de AWS con Pod Identity para Amazon EKS - AWS Systems Manager

Uso de CSI del Proveedor de secretos y configuración (ASCP) de AWS con Pod Identity para Amazon EKS

La integración del Proveedor de secretos y configuración (ASCP) de AWS con el agente de Pod Identity para Amazon Elastic Kubernetes Service proporciona una seguridad mejorada, una configuración simplificada y un rendimiento mejorado para las aplicaciones que se ejecutan en Amazon EKS. Pod Identity simplifica la autenticación de AWS Identity and Access Management (IAM) para Amazon EKS al recuperar parámetros de AWS Systems Manager Parameter Store o secretos de Secrets Manager.

Pod Identity de Amazon EKS agiliza el proceso de configuración de los permisos de IAM para las aplicaciones de Kubernetes, ya que permite que los permisos se configuren directamente a través de las interfaces de Amazon EKS, lo que reduce el número de pasos y elimina la necesidad de cambiar entre los servicios de Amazon EKS e IAM. Pod Identity permite usar un solo rol de IAM en varios clústeres sin actualizar las políticas de confianza y admite etiquetas de sesión de rol para un control de acceso más detallado. Este enfoque no solo simplifica la administración de políticas al permitir la reutilización de políticas de permisos en todos los roles, sino que también mejora la seguridad al permitir el acceso a los recursos de AWS en función de las etiquetas coincidentes.

Funcionamiento

  1. Pod Identity asigna un rol de IAM al pod.

  2. El ASCP usa este rol para autenticarse con Servicios de AWS.

  3. Si está autorizado, el ASCP recupera los parámetros solicitados y hace que estén disponibles para el pod.

Para obtener más información, consulte Descripción del funcionamiento de Pod Identity de Amazon EKS en la Guía del usuario de Amazon EKS.

Requisitos previos

importante

Pod Identity solo es compatible con Amazon EKS en la nube. No es compatible con Amazon EKS Anywhere, Red Hat OpenShift Service en AWS ni con los clústeres de Kubernetes autoadministrados en las instancias de Amazon EC2.

  • Clúster de Amazon EKS (versión 1.24 o posterior)

  • Acceso a AWS CLI y al clúster de Amazon EKS a través de kubectl

  • (Opcional) Acceso a dos Cuentas de AWS para el acceso entre cuentas

Instalación del agente de Pod Identity de Amazon EKS

Para usar Pod Identity con el clúster, debe instalar el complemento del agente de Pod Identity de Amazon EKS.

Instalación del agente de Pod Identity
  • Instale el complemento del agente de Pod Identity en el clúster.

    Sustituya el texto del marcador de posición predeterminado por sus valores:

    eksctl create addon \ --name eks-pod-identity-agent \ --cluster clusterName \ --region region

Configuración del ASCP con Pod Identity

  1. Cree una política de permisos que conceda los permisos ssm:GetParameters y ssm:DescribeParameters a los parámetros a los que el pod necesite acceder.

  2. Cree un rol de IAM que pueda ser asumido por la entidad principal de servicio de Amazon EKS para Pod Identity:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

    Adjunte la política de IAM al rol.

    Sustituya el texto del marcador de posición predeterminado por sus valores:

    aws iam attach-role-policy \ --role-name MY_ROLE \ --policy-arn POLICY_ARN
  3. Cree una asociación de Pod Identity. Para ver un ejemplo, consulte Creación de una asociación de Pod Identity en la Guía del usuario de Amazon EKS.

  4. Cree SecretProviderClass que especifica qué parámetros o secretos se deben montar en el pod:

    kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml

    La diferencia clave en SecretProviderClass entre los roles de IAM para las cuentas de servicio (IRSA) y Pod Identity es el parámetro opcional usePodIdentity. Es un campo opcional que determina el enfoque de autenticación. Si no se especifica, se utilizarán los roles de IAM para IRSA de manera predeterminada.

    • Para usar Pod Identity de EKS, utilice cualquiera de estos valores: "true", "True", "TRUE", "t", "T".

    • Para usar IRSA de forma explícita, establézcalo en cualquiera de estos valores: "false", "False", "FALSE", "f", or "F".

  5. Implemente el pod que monta los parámetros o secretos en /mnt/secrets-store:

    kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
  6. Si utiliza un clúster privado de Amazon EKS, asegúrese de que la VPC en la que se encuentre el clúster tenga un punto de conexión de AWS STS. Para obtener más información sobre la creación de un punto de conexión, consulte Puntos de conexión de VPC de tipo interfaz en la Guía del usuario de AWS Identity and Access Management.

Verificación del montaje del secreto

Para verificar que el parámetro o el secreto se ha montado correctamente, ejecute el siguiente comando.

Sustituya el texto del marcador de posición predeterminado por sus valores:

kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MyParameter
Configuración de Pod Identity de Amazon EKS para acceder a los parámetros en Parameter Store
  1. Cree una política de permisos que conceda los permisos ssm:GetParameters y ssm:DescribeParameters a los parámetros a los que el pod necesite acceder.

  2. Cree un parámetro en Parameter Store, si aún no tiene uno. Para obtener más información, consulta Creación de parámetros de Parameter Store en Systems Manager.

Solución de problemas

Puede ver la mayoría de los errores si describe la implementación del pod.

Ver los mensajes de error del contenedor
  1. Obtenga una lista de nombres de pods con el siguiente comando. Si no está utilizando el espacio de nombres predeterminado, use -n namespace.

    kubectl get pods
  2. Para describir el pod, en el siguiente comando, en pod-id, use el ID de pod de los pods que encontró en el paso anterior. Si no está utilizando el espacio de nombres predeterminado, use -n NAMESPACE.

    kubectl describe pod/pod-id
Ver los errores del ASCP
  • Para encontrar más información en los registros del proveedor, en el siguiente comando, en PODID, utilice el ID del pod csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/pod-id