Implementación de secretos en el núcleo de AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de secretos en el núcleo de AWS IoT Greengrass

Esta característica está disponible para AWS IoT Greengrass Core versión 1.7 y versiones posteriores.

AWS IoT Greengrass le permite autenticarse con servicios y aplicaciones desde dispositivos Greengrass sin contraseñas codificadas de forma rígida, tokens u otros secretos.

AWS Secrets Manager es un servicio que puede usar para almacenar y administrar los secretos de forma segura en la nube. AWS IoT Greengrass amplía Secrets Manager a dispositivos del núcleo Greengrass, de modo que los conectores y las funciones de Lambda puedan utilizar secretos locales para interactuar con los servicios y aplicaciones. Por ejemplo, el conector de notificaciones de Twilio utiliza un token de autenticación almacenado localmente.

Para integrar un secreto en un grupo de Greengrass, cree un recurso de grupo que haga referencia al secreto de Secrets Manager. Este recurso de secretos hace referencia al secreto en la nube por ARN. Para aprender a crear, administrar y utilizar recursos de secretos, consulte Uso de recursos de secretos.

AWS IoT Greengrass cifra los secretos en tránsito y en reposo. Durante la implementación del grupo, AWS IoT Greengrass recupera el secreto desde Secrets Manager y crea una copia cifrada, local en el núcleo de Greengrass. Después de rotar los secretos en la nube en Secrets Manager, vuelva a implementar el grupo para propagar los valores actualizados en el núcleo.

En el siguiente diagrama se muestra el proceso general de implementación de un secreto en el núcleo. Los secretos se cifran en reposo y en tránsito.


            AWS IoT Greengrass recupera un secreto de AWS Secrets Manager y lo implementa como recurso secreto en el dispositivo del núcleo, donde se encuentra disponible para los conectores y las funciones de Lambda.

Al usar AWS IoT Greengrass para almacenar los secretos localmente se obtienen estas ventajas:

  • Se desacoplan del código (sin codificar de forma rígida). Es compatible con las credenciales administradas de manera centralizada y ayuda a proteger la información confidencial para que no se filtre.

  • Disponible para situaciones sin conexión Los conectores y las funciones pueden acceder de manera segura al software y a los servicios locales cuando están desconectados de Internet.

  • Acceso controlado a los secretos. Solo las funciones y los conectores autorizados en el grupo pueden acceder a los secretos. AWS IoT Greengrass utiliza cifrado de clave privada para proteger los secretos. Los secretos se cifran en reposo y en tránsito. Para obtener más información, consulte Cifrado de secretos.

  • Rotación controlada. Después de rotar los secretos en Secrets Manager, vuelva a implementar el grupo de Greengrass para actualizar la copias locales de los secretos. Para obtener más información, consulte Creación y administración de secretos.

    importante

    AWS IoT Greengrass no actualiza automáticamente los valores de los secretos locales después de rotar las versiones en la nube. Para actualizar los valores locales, debe volver a implementar el grupo.

Cifrado de secretos

AWS IoT Greengrass cifra los secretos en reposo y en tránsito.

importante

Asegúrese de que las funciones de Lambda definidas por el usuario gestionen los secretos de forma segura y no registren ningún dato confidencial almacenado en el secreto. Para obtener más información, consulte Mitigar los riesgos de registrar y depurar la función de Lambda en la Guía del usuario de AWS Secrets Manager. Si bien esta documentación se refiere específicamente a las funciones de rotación, la recomendación también se aplica a las funciones de Lambda de Greengrass.

Cifrado en tránsito

AWS IoT Greengrass utiliza Transport Layer Security (TLS) para cifrar toda la comunicación a través de Internet y la red local. De esta forma se protegen los secretos en tránsito, que se produce cuando se recuperan los secretos de Secrets Manager y se implementan en el núcleo. Para ver conjuntos de cifrado TLS compatibles, consulte Compatibilidad con conjuntos de cifrado TLS.

Cifrado en reposo

AWS IoT Greengrass utiliza la clave privada especificada en config.json para cifrado de los secretos que se almacenan en el núcleo. Por este motivo, el almacenamiento seguro de la clave privada es fundamental para proteger secretos locales. En el modelo de responsabilidad compartida de AWS, es responsabilidad del cliente garantizar el almacenamiento seguro de la clave privada en el dispositivo principal.

AWS IoT Greengrass admite dos modos de almacenamiento de claves privadas:

  • Uso de módulos de seguridad de hardware. Para obtener más información, consulte Integración de la seguridad de hardware.

    nota

    Actualmente, solo AWS IoT Greengrass admite el mecanismo de relleno PKCS #1 versión 1.5 para el cifrado y descifrado de secretos locales cuando se utilizan claves privadas basadas en hardware. Si sigue las instrucciones del proveedor para generar manualmente claves privadas basadas en hardware, asegúrese de elegir PKCS #1 versión 1.5. AWS IoT Greengrassno es compatible con el relleno de cifrado asimétrico óptimo (OAEP).

  • Uso de permisos del sistema de archivos (predeterminado).

La clave privada se utiliza para proteger la clave de datos, que se utiliza para cifrar secretos locales. La clave de datos se rota con cada implementación de grupo.

El núcleo de AWS IoT Greengrass es la única entidad que tiene acceso a la clave privada. Los conectores de Greengrass o las funciones de Lambda afiliados a un recurso de secreto obtienen el valor del secreto del núcleo.

Requisitos

Estos son los requisitos para admitir los secretos locales:

  • Debe utilizar Núcleo de AWS IoT Greengrass versión 1.7 o posterior.

  • Para obtener los valores de los secretos locales, las funciones de Lambda definidas por el usuario deben usar el SDK de AWS IoT Greengrass Core versión 1.3.0 o una versión posterior.

  • La clave privada utilizada para el cifrado de secretos locales deben especificarse en el archivo de configuración de Greengrass. De forma predeterminada, AWS IoT Greengrass utiliza la clave privada del núcleo almacenada en el sistema de archivos. Para proporcionar su propia clave privada, consulte Especificación de la clave privada para el cifrado de secretos. Solo se admite el tipo de claves RSA.

    nota

    Actualmente, solo AWS IoT Greengrass admite el mecanismo de relleno PKCS #1 versión 1.5 para el cifrado y descifrado de secretos locales cuando se utilizan claves privadas basadas en hardware. Si sigue las instrucciones del proveedor para generar manualmente claves privadas basadas en hardware, asegúrese de elegir PKCS #1 versión 1.5. AWS IoT Greengrassno es compatible con el relleno de cifrado asimétrico óptimo (OAEP).

  • AWS IoT Greengrass debe tener permiso para obtener los valores de secretos. De este modo, AWS IoT Greengrass puede recuperar los valores durante la implementación del grupo. Si está utilizando el rol de servicio de Greengrass predeterminado, AWS IoT Greengrass ya tendrá acceso a los secretos con nombres que comiencen por greengrass-. Para personalizar el acceso, consulte Permitir que AWS IoT Greengrass obtenga valores de secretos.

    nota

    Le recomendamos que utilice esta convención de nomenclatura para identificar los secretos a los que AWS IoT Greengrass puede acceder, aunque personalice los permisos. La consola utiliza diferentes permisos para leer los secretos, por lo que es posible que puede seleccionar secretos en la consola que AWS IoT Greengrass no tiene permiso para recuperar. El uso de una convención de nomenclatura puede ayudarle a evitar un permiso conflicto, lo que provoca un error de implementación.

Especificación de la clave privada para el cifrado de secretos

En este procedimiento, debe proporcionar la ruta a una clave privada que se utiliza para el cifrado secreto local. Debe ser una clave RSA con una longitud mínima de 2048 bits. Para obtener más información acerca de las claves privadas utilizadas en el AWS IoT Greengrass del núcleo, consulte AWS IoT Greengrass principios básicos de seguridad.

AWS IoT Greengrass admite dos modos de almacenamiento de claves privadas: basado en hardware o basado en el sistema de archivos (valor predeterminado). Para obtener más información, consulte Cifrado de secretos.

Siga este procedimiento solo si desea cambiar la configuración predeterminada, que utiliza la clave privada del núcleo en el sistema de archivos. Estos pasos se han redactado partiendo del supuesto de que creó el grupo y el núcleo tal y como se describe en el módulo 2 del tutorial de introducción.

  1. Abra el archivo config.json situado en el directorio /greengrass-root/config.

    nota

    greengrass-root representa la ruta donde está instalado el software de AWS IoT Greengrass Core en su dispositivo. Normalmente, este es el directorio /greengrass.

  2. En el objeto crypto.principals.SecretsManager de la propiedad privateKeyPath, escriba la ruta de la clave privada:

    • Si su clave privada se almacena en el sistema de archivos, especifique la ruta absoluta a la clave. Por ejemplo:

      "SecretsManager" : { "privateKeyPath" : "file:///somepath/hash.private.key" }
    • Si la clave privada se almacena en un módulo de seguridad de hardware (HSM), especifique la ruta con el esquema de URI RFC 7512 PKCS#11. Por ejemplo:

      "SecretsManager" : { "privateKeyPath" : "pkcs11:object=private-key-label;type=private" }

      Para obtener más información, consulte Configuración de la seguridad del hardware de un núcleo de AWS IoT Greengrass.

      nota

      Actualmente, solo AWS IoT Greengrass admite el mecanismo de relleno PKCS #1 versión 1.5 para el cifrado y descifrado de secretos locales cuando se utilizan claves privadas basadas en hardware. Si sigue las instrucciones del proveedor para generar manualmente claves privadas basadas en hardware, asegúrese de elegir PKCS #1 versión 1.5. AWS IoT Greengrassno es compatible con el relleno de cifrado asimétrico óptimo (OAEP).

Permitir que AWS IoT Greengrass obtenga valores de secretos

En este procedimiento añadirá una política en línea al rol de servicio de Greengrass que permite que AWS IoT Greengrass obtenga los valores de los secretos.

Siga este procedimiento solo si desea conceder a AWS IoT Greengrass permisos personalizados a los secretos o si el rol de servicio de Greengrass no incluye la AWSGreengrassResourceAccessRolePolicy política administrada. AWSGreengrassResourceAccessRolePolicy concede acceso a los secretos con nombres que comiencen por greengrass-.

  1. Ejecute el siguiente comando de la CLI para obtener el ARN del rol de servicio de Greengrass:

    aws greengrass get-service-role-for-account --region region

    El ARN que se devuelve contendrá el nombre del rol.

    { "AssociatedAt": "time-stamp", "RoleArn": "arn:aws:iam::account-id:role/service-role/role-name" }

    En el siguiente paso usará el ARN o el nombre.

  2. Añada una política en línea que permita la acción secretsmanager:GetSecretValue. Para obtener instrucciones, consulte Añadir y eliminar políticas de IAM en la Guía del usuario de IAM.

    Puede conceder acceso detallado enumerando explícitamente los secretos o usando un esquema de nomenclatura *, o bien puede conceder acceso condicional a secretos con control de versiones o etiquetados. Por ejemplo, la siguiente política permite a AWS IoT Greengrass leer solo los secretos especificados.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretA-abc", "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretB-xyz" ] } ] }
    nota

    Si utiliza una clave de AWS KMS administrada por el cliente para cifrar secretos, el rol de servicio de Greengrass también debe permitir la acción kms:Decrypt.

Para obtener más información sobre las políticas de IAM para Secrets Manager, consulte Autenticación y control de acceso para AWS Secrets Manager y Acciones, recursos y claves de contexto que puede utilizar en una política de IAM o política secreta para AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

Véase también