

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.

# Seguridad en AWS IoT Greengrass
<a name="security"></a>

La seguridad en la nube AWS es la máxima prioridad. Como AWS cliente, usted se beneficia de una arquitectura de centro de datos y red diseñada para cumplir con los requisitos de las organizaciones más sensibles a la seguridad.

La seguridad es una responsabilidad compartida entre usted AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta AWS los servicios en la Nube de AWS. AWS también le proporciona servicios que puede utilizar de forma segura. Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los [AWS programas](https://aws.amazon.com/compliance/programs/) de de . Para obtener más información sobre los programas de cumplimiento aplicables AWS IoT Greengrass, consulte [AWS Servicios incluidos en el ámbito de aplicación por programa de conformidad y AWS servicios incluidos](https://aws.amazon.com/compliance/services-in-scope/) .
+ **Seguridad en la nube**: su responsabilidad viene determinada por el servicio de AWS que utilice. También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables.

Cuando lo usa AWS IoT Greengrass, también es responsable de proteger sus dispositivos, la conexión de red local y las claves privadas.

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza AWS IoT Greengrass. Los siguientes temas muestran cómo configurarlo AWS IoT Greengrass para cumplir sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros AWS servicios que le ayudan a supervisar y proteger sus AWS IoT Greengrass recursos. 

**Topics**
+ [Protección de datos en AWS IoT Greengrass](data-protection.md)
+ [Autenticación y autorización de dispositivos para AWS IoT Greengrass](device-auth.md)
+ [Administración de identidad y acceso para AWS IoT Greengrass](security-iam.md)
+ [Cómo permitir el tráfico del dispositivo a través de un proxy o firewall](allow-device-traffic.md)
+ [Validación de conformidad en AWS IoT Greengrass](compliance-validation.md)
+ [Puntos de conexión de FIPS](FIPS.md)
+ [Resiliencia en AWS IoT Greengrass](disaster-recovery-resiliency.md)
+ [Seguridad de la infraestructura en AWS IoT Greengrass](infrastructure-security.md)
+ [Análisis de configuración y vulnerabilidad en AWS IoT Greengrass](vulnerability-analysis-and-management.md)
+ [Integridad del código en AWS IoT Greengrass V2](code-integrity.md)
+ [AWS IoT Greengrass y puntos finales de VPC de interfaz ()AWS PrivateLink](vpc-interface-endpoints.md)
+ [Mejores prácticas de seguridad para AWS IoT Greengrass](security-best-practices.md)

# Protección de datos en AWS IoT Greengrass
<a name="data-protection"></a>

El modelo de [responsabilidad AWS compartida modelo](https://aws.amazon.com/compliance/shared-responsibility-model/) se aplica a la protección de datos en AWS IoT Greengrass. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global que ejecuta todos los Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS *.

Con fines de protección de datos, le recomendamos que proteja Cuenta de AWS las credenciales y configure los usuarios individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Se utiliza SSL/TLS para comunicarse con AWS los recursos. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure la API y el registro de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre el uso de CloudTrail senderos para capturar AWS actividades, consulte [Cómo trabajar con CloudTrail senderos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del AWS CloudTrail usuario*.
+ Utilice soluciones de AWS cifrado, junto con todos los controles de seguridad predeterminados Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados por FIPS 140-3 para acceder a AWS través de una interfaz de línea de comandos o una API, utilice un punto final FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye cuando trabaja con AWS IoT Greengrass o Servicios de AWS utiliza la consola, la API o AWS CLI AWS SDKs Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

Para obtener más información sobre cómo proteger la información confidencial en AWS IoT Greengrass, consulte[No registre información confidencial](security-best-practices.md#protect-pii).

Para obtener más información sobre la protección de datos, consulte la entrada de blog relativa al [modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el *blog de seguridad de AWS *.

**Topics**
+ [Cifrado de datos](data-encryption.md)
+ [Integración de la seguridad de hardware](hardware-security.md)

# Cifrado de datos
<a name="data-encryption"></a>

AWS IoT Greengrass utiliza el cifrado para proteger los datos mientras están en tránsito (a través de Internet o una red local) y en reposo (almacenados en la Nube de AWS).

Los dispositivos de un AWS IoT Greengrass entorno suelen recopilar datos que se envían a AWS los servicios para su posterior procesamiento. Para obtener más información sobre el cifrado de datos en otros AWS servicios, consulte la documentación de seguridad de ese servicio.

**Topics**
+ [Cifrado en tránsito](encryption-in-transit.md)
+ [Cifrado en reposo](encryption-at-rest.md)
+ [Administración de claves en el dispositivo del núcleo de Greengrass](key-management.md)

# Cifrado en tránsito
<a name="encryption-in-transit"></a>

AWS IoT Greengrass tiene dos modos de comunicación donde los datos están en tránsito:
+ [Datos en tránsito a través de Internet](#data-in-transit-internet). La comunicación entre un núcleo de Greengrass y AWS IoT Greengrass a través de Internet está cifrada.
+ [Datos del dispositivo central](#data-in-transit-locally). La comunicación entre componentes en el dispositivo del núcleo de Greengrass no está cifrada.

## Datos en tránsito a través de Internet
<a name="data-in-transit-internet"></a>

AWS IoT Greengrass utiliza seguridad de la capa de transporte (TLS) para cifrar toda la comunicación a través de Internet. Todos los datos enviados a la Nube de AWS se envían a través de una conexión TLS utilizando protocolos MQTT o HTTPS, por lo que es seguro de forma predeterminada. AWS IoT Greengrass utiliza el modelo de seguridad de transporte de AWS IoT. Para obtener más información, consulte [Seguridad de transporte](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html) en la *Guía del desarrollador de AWS IoT Core*.

## Datos del dispositivo central
<a name="data-in-transit-locally"></a>

AWS IoT Greengrass no cifra los datos intercambiados localmente en el dispositivo del núcleo de Greengrass porque los datos no salen del dispositivo. Esto incluye la comunicación entre componentes definidos por el usuario, el SDK del dispositivo de AWS IoT y componentes públicos, como el administrador de flujos.

# Cifrado en reposo
<a name="encryption-at-rest"></a>

AWS IoT Greengrass almacena los datos:
+ [Datos en reposo en la Nube de AWS](#data-at-rest-cloud). Estos datos están cifrados.
+ [Datos en reposo en el núcleo de Greengrass](#data-at-rest-device). Estos datos no están cifrados (excepto las copias locales de sus secretos).

## Datos en reposo en la Nube de AWS
<a name="data-at-rest-cloud"></a>

AWS IoT Greengrass cifra los datos de los clientes almacenados en la Nube de AWS. Estos datos están protegidos mediante claves de AWS KMS administradas por AWS IoT Greengrass.

## Datos en reposo en el núcleo de Greengrass
<a name="data-at-rest-device"></a>

AWS IoT Greengrass se basa en permisos de archivos Unix y cifrado de disco completo (si está habilitado) para proteger los datos en reposo en el núcleo. Tiene la responsabilidad de proteger el sistema de archivos y el dispositivo.

Sin embargo, AWS IoT Greengrass cifra las copias locales de sus secretos recuperados de AWS Secrets Manager. Para obtener más información, consulte el componente [administrador de secretos](secret-manager-component.md).

# Administración de claves en el dispositivo del núcleo de Greengrass
<a name="key-management"></a>

Es responsabilidad del cliente garantizar el almacenamiento seguro de claves criptográficas (públicas y privadas) en el dispositivo del núcleo de Greengrass. AWS IoT Greengrass utiliza claves públicas y privadas para la siguiente situación:
+ La clave de cliente de IoT se utiliza con el certificado IoT para autenticar el protocolo de enlace Transport Layer Security (TLS) cuando un núcleo de Greengrass se conecta a AWS IoT Core. Para obtener más información, consulte [Autenticación y autorización de dispositivos para AWS IoT Greengrass](device-auth.md).
**nota**  
La clave y el certificado también se conocen como clave privada del núcleo y el certificado de dispositivo del núcleo.

Un dispositivo principal de Greengrass admite el almacenamiento de claves privadas mediante permisos del sistema de archivos o en un [módulo de seguridad de hardware](hardware-security.md). Si utiliza claves privadas basadas en el sistema de archivos, es responsable de su almacenamiento seguro en el dispositivo del núcleo.

# Integración de la seguridad de hardware
<a name="hardware-security"></a>

**nota**  
Esta función está disponible para la versión 2.5.3 y versiones posteriores del componente núcleo de [Greengrass](greengrass-nucleus-component.md). AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows. 

Puede configurar el software AWS IoT Greengrass Core para que utilice un módulo de seguridad de hardware (HSM) a través de la interfaz [PKCS \$111](https://en.wikipedia.org/wiki/PKCS_11). Esta característica le permite almacenar de forma segura los certificados y claves privadas del dispositivo para que no queden expuestos ni duplicados en el software. Puede almacenar la clave privada y el certificado en un módulo de hardware, como un HSM o un módulo de plataforma segura (TPM).

El software AWS IoT Greengrass Core utiliza una clave privada y un certificado X.509 para autenticar las conexiones a los servicios y. AWS IoT AWS IoT Greengrass El [componente administrador de secretos](secret-manager-component.md) utiliza esta clave privada para cifrar y descifrar de forma segura los secretos que se implementan en un dispositivo principal de Greengrass. Al configurar un dispositivo principal para usar un HSM, estos componentes utilizan la clave privada y el certificado que se almacenan en el HSM.

El [componente agente MQTT de Moquette](mqtt-broker-moquette-component.md) también almacena una clave privada para su certificado de servidor MQTT local. Este componente almacena la clave privada en el sistema de archivos del dispositivo, en la carpeta de trabajo del componente. Actualmente, AWS IoT Greengrass no admite el almacenamiento de esta clave privada o certificado en un HSM.

**sugerencia**  
Busque los dispositivos que admiten esta característica en el [Catálogo de dispositivos de socios de AWS](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1).

**Topics**
+ [Requisitos](#hardware-security-requirements)
+ [Prácticas recomendadas de seguridad de hardware](#hardware-security-best-practices)
+ [AWS IoT Greengrass Instale el software principal con seguridad de hardware](#install-with-hardware-security)
+ [Configuración de la seguridad del hardware en un dispositivo principal existente](#enable-hardware-security)
+ [Uso del hardware sin compatibilidad con PKCS\$111](#hardware-without-pkcs11)
+ [Véase también](#hardware-security-see-also)

## Requisitos
<a name="hardware-security-requirements"></a>

Debe cumplir con los siguientes requisitos para usar un HSM en un dispositivo principal de Greengrass:
+ [Núcleo de Greengrass](greengrass-nucleus-component.md) versión 2.5.3 o posterior instalado en el dispositivo principal. Puede elegir una versión compatible al instalar el software AWS IoT Greengrass Core en un dispositivo principal.
+ El [componente del proveedor PKCS\$111](pkcs11-provider-component.md) instalado en el dispositivo principal. Puede descargar e instalar este componente al instalar el software AWS IoT Greengrass principal en un dispositivo principal.
+ <a name="hardware-security-module-requirements-key"></a>Un módulo de seguridad de hardware que admite el esquema de firmas [PKCS\$11 versión 1.5](https://tools.ietf.org/html/rfc2313) y claves RSA con un tamaño de clave RSA-2048 (o mayor) o claves ECC.
**nota**  <a name="hardware-security-module-requirements-key-notes"></a>
Para utilizar un módulo de seguridad de hardware con claves ECC, debe utilizar la versión del [núcleo de Greengrass](greengrass-nucleus-component.md) 2.5.6 o posterior.  
Para usar un módulo de seguridad de hardware y el [administrador de secretos](secret-manager-component.md), debe usar un módulo de seguridad de hardware con claves RSA.
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a>Una biblioteca de proveedores de PKCS \$111 que el software AWS IoT Greengrass principal puede cargar en tiempo de ejecución (mediante libdl) para invocar las funciones de PKCS \$111. La biblioteca de proveedores PKCS\$111 debe implementar las siguientes operaciones de la API de PKCS\$111:
  + `C_Initialize`
  + `C_Finalize`
  + `C_GetSlotList`
  + `C_GetSlotInfo`
  + `C_GetTokenInfo`
  + `C_OpenSession`
  + `C_GetSessionInfo`
  + `C_CloseSession`
  + `C_Login`
  + `C_Logout`
  + `C_GetAttributeValue`
  + `C_FindObjectsInit`
  + `C_FindObjects`
  + `C_FindObjectsFinal`
  + `C_DecryptInit`
  + `C_Decrypt`
  + `C_DecryptUpdate`
  + `C_DecryptFinal`
  + `C_SignInit`
  + `C_Sign`
  + `C_SignUpdate`
  + `C_SignFinal`
  + `C_GetMechanismList`
  + `C_GetMechanismInfo`
  + `C_GetInfo`
  + `C_GetFunctionList`
+ <a name="hardware-security-module-requirements-slot-label"></a>El módulo de hardware debe resolverlo la etiqueta de ranura, tal y como se define en la especificación de PKCS\$111.
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>Debe almacenar la clave privada y el certificado en el HSM, en la misma ranura, y deben usar la misma etiqueta de objeto e ID de objeto, si el HSM admite el objeto. IDs
+ <a name="hardware-security-module-requirements-object-label"></a>El certificado y la clave privada debe poder resolverla con etiquetas de objeto.
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>La clave privada debe tener los siguientes permisos:
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>(Opcional) Para usar el [componente administrador de secretos](secret-manager-component.md), debe usar la versión 2.1.0 o posterior y la clave privada debe tener los siguientes permisos:
  + `unwrap`
  + `wrap`

## Prácticas recomendadas de seguridad de hardware
<a name="hardware-security-best-practices"></a>

Tenga en cuenta las siguientes prácticas recomendadas al configurar la seguridad del hardware en los dispositivos principales de Greengrass.
+ Genere claves privadas directamente en el HSM utilizando el generador de números aleatorios de hardware interno. Este enfoque es más seguro que importar una clave privada que se genere en otro lugar, ya que la clave privada permanece dentro del HSM.
+ Configure las claves privadas para que sean inmutables y prohíba la exportación.
+ Utilice la herramienta de aprovisionamiento que el proveedor de hardware de HSM recomiende para generar una solicitud de firma de certificado (CSR) con la clave privada protegida por hardware y, a continuación, utilice la consola o la API para generar un certificado de cliente. AWS IoT 

**nota**  
La práctica recomendada de seguridad para la rotación de claves no se aplica cuando las claves privadas se generan en un HSM.

## AWS IoT Greengrass Instale el software principal con seguridad de hardware
<a name="install-with-hardware-security"></a>

Al instalar el software AWS IoT Greengrass Core, puede configurarlo para que utilice una clave privada que genere en un HSM. Este enfoque sigue las [prácticas recomendadas de seguridad](#hardware-security-best-practices) para generar la clave privada en el HSM, de modo que la clave privada permanezca dentro del HSM.

Para instalar el software AWS IoT Greengrass Core con seguridad de hardware, haga lo siguiente:

1. Genere una clave privada en los HSM.

1. Cree una solicitud de firma de certificado (CSR) de la clave privada.

1. Cree un certificado de cliente a partir de la CSR. Puede crear un certificado firmado por AWS IoT o por otra autoridad de certificación (CA) raíz. Para obtener más información sobre cómo usar otra CA raíz, consulte [Crear sus propios certificados de cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) en la *Guía para desarrolladores de AWS IoT Core *.

1. Descargue el AWS IoT certificado e impórtelo al HSM.

1. Instale el software AWS IoT Greengrass principal desde un archivo de configuración que especifique el uso del componente proveedor PKCS \$111 y la clave privada y el certificado en el HSM.

Puede elegir una de las siguientes opciones de instalación para instalar el software AWS IoT Greengrass principal con seguridad de hardware:
+ **Instalación manual**

  Elija esta opción para crear manualmente los AWS recursos necesarios y configurar la seguridad del hardware. Para obtener más información, consulte [Instale el software AWS IoT Greengrass principal con aprovisionamiento manual de recursos](manual-installation.md).
+ **Instalación con aprovisionamiento personalizado**

  Elija esta opción para desarrollar una aplicación Java personalizada que cree automáticamente los AWS recursos necesarios y configure la seguridad del hardware. Para obtener más información, consulte [Instale el software AWS IoT Greengrass principal con aprovisionamiento de recursos personalizado](custom-provisioning.md).

Actualmente, AWS IoT Greengrass no admite la instalación del software AWS IoT Greengrass principal con seguridad de hardware cuando se [instala con el aprovisionamiento automático de recursos o el aprovisionamiento](quick-installation.md) de [AWS IoT flotas](fleet-provisioning.md).

## Configuración de la seguridad del hardware en un dispositivo principal existente
<a name="enable-hardware-security"></a>

Puede importar la clave privada y el certificado de un dispositivo principal a un HSM para configurar la seguridad del hardware.

**Consideraciones**  
Debe tener acceso raíz al sistema de archivos del dispositivo principal.
En este procedimiento, se apaga el software AWS IoT Greengrass principal para que el dispositivo principal quede desconectado y no esté disponible mientras se configura la seguridad del hardware.

Para configurar la seguridad del hardware en un dispositivo principal existente, haga lo siguiente:

1. Inicialice el HSM.

1. Implemente el [componente del proveedor PKCS\$111](pkcs11-provider-component.md) en el dispositivo principal.

1. Detenga el software AWS IoT Greengrass principal.

1. Importe la clave privada y el certificado del dispositivo principal al HSM.

1. Actualice el archivo de configuración del software AWS IoT Greengrass principal para usar la clave privada y el certificado del HSM.

1. Inicie el software AWS IoT Greengrass principal.

### Paso 1: Inicializar el módulo de seguridad de hardware
<a name="enable-hardware-security-initialize-hsm"></a>

Complete el siguiente paso para inicializar el HSM en su dispositivo principal.

**Cómo inicializar el módulo de seguridad de hardware**
+ Inicialice un token PKCS\$111 en el HSM y guarde el ID de la ranura y el PIN de usuario correspondientes al token. Consulte la documentación de su HSM para obtener información sobre cómo inicializar un token. El ID de ranura y el PIN de usuario se utilizan más adelante al implementar y configurar el componente del proveedor PKCS\$111.

### Paso 2: Implementar el componente del proveedor PKCS\$111
<a name="enable-hardware-security-deploy-pkcs11-provider"></a>

Complete los siguientes pasos para implementar y configurar el [componente del proveedor PKCS\$111](pkcs11-provider-component.md). Puede implementar el componente en uno o más dispositivos principales.

#### Cómo implementar el componente del proveedor PKCS\$111 (consola)
<a name="deploy-pkcs11-provider-component-console"></a>

1. En el menú de navegación de la [consola de AWS IoT Greengrass](https://console.aws.amazon.com/greengrass), elija **Componentes**.

1. En la página **Componentes**, elija la pestaña **Componentes públicos** y, luego, elija **aws.greengrass.crypto.Pkcs11Provider**.

1. En la página **aws.greengrass.crypto.Pkcs11Provider**, elija **Implementar**.

1. <a name="deploy-component-choose-deployment-step"></a>En **Agregar a la implementación**, elija una implementación existente para revisarla o cree una nueva y, a continuación, elija **Siguiente**.

1. <a name="deploy-component-choose-target-step"></a>Si opta por crear una nueva implementación, elija el dispositivo principal o el grupo de objetos de destino para la implementación. En la página **Especificar el destino**, en **Destino de la implementación**, elija un dispositivo principal o un grupo de objetos y, a continuación, elija **Siguiente**.

1. En la página **Seleccionar componentes**, en **Componentes públicos**, seleccione **aws.greengrass.crypto.Pkcs11Provider** y, a continuación, elija **Siguiente**.

1. En la página **Configurar componentes**, seleccione **aws.greengrass.crypto.Pkcs11Provider** y haga lo siguiente:

   1. Seleccione **Configurar componente**.

   1. En el cuadro **Configurar aws.greengrass.crypto.Pkcs11Provider**, en **Actualización de configuración**, en **Configuración para combinar**, ingrese la siguiente actualización de configuración. Actualice los siguientes parámetros de configuración con los valores de los dispositivos principales de destino. Especifique el ID de ranura y el PIN de usuario en los que inicializó anteriormente el token PKCS\$111. Más adelante, importará la clave privada y el certificado a esta ranura del HSM.<a name="pkcs11-provider-component-configuration-parameters"></a>  
`name`  
Un nombre para la configuración de PKCS\$111.  
`library`  
La ruta absoluta del archivo a la biblioteca de la implementación del PKCS \$111 que el software AWS IoT Greengrass Core puede cargar con libdl.  
`slot`  
El ID de la ranura que contiene la clave privada y el certificado del dispositivo. Este valor es diferente del índice o la etiqueta de la ranura.  
`userPin`  
El PIN del usuario que se utiliza para acceder a la ranura.

      ```
      {
        "name": "softhsm_pkcs11",
        "library": "/usr/lib/softhsm/libsofthsm2.so",
        "slot": 1,
        "userPin": "1234"
      }
      ```

   1. Elija **Confirmar** para cerrar el cuadro y, a continuación, elija **Siguiente**.

1. <a name="deploy-component-configure-advanced-settings-step"></a>En la página **Configurar ajustes avanzados**, mantenga los ajustes de configuración predeterminados y seleccione **Siguiente**.

1. <a name="deploy-component-review-and-deploy-step"></a>En la página **Revisar**, elija **Implementar**.

   La implementación puede tardar hasta un minuto para completarse.

#### Cómo implementar el componente del proveedor PKCS\$111 (AWS CLI)
<a name="deploy-pkcs11-provider-component-cli"></a>

Para implementar el componente del proveedor PKCS\$111, cree un documento de implementación que incluya `aws.greengrass.crypto.Pkcs11Provider` en el objeto `components` y especifique la actualización de configuración del componente. Siga las instrucciones en [Crear implementaciones](create-deployments.md) para crear una implementación nueva o revisar una implementación existente.

El siguiente ejemplo de documento de implementación parcial especifica la implementación y la configuración del componente del proveedor PKCS\$111. Actualice los siguientes parámetros de configuración con los valores de los dispositivos principales de destino. Guarde el ID de ranura y el PIN de usuario para usarlos más adelante cuando importe la clave privada y el certificado al HSM.<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
Un nombre para la configuración de PKCS\$111.

`library`  
La ruta absoluta del archivo a la biblioteca de la implementación de PKCS \$111 que el software AWS IoT Greengrass Core puede cargar con libdl.

`slot`  
El ID de la ranura que contiene la clave privada y el certificado del dispositivo. Este valor es diferente del índice o la etiqueta de la ranura.

`userPin`  
El PIN del usuario que se utiliza para acceder a la ranura.

```
{
  "name": "softhsm_pkcs11",
  "library": "/usr/lib/softhsm/libsofthsm2.so",
  "slot": 1,
  "userPin": "1234"
}
```

```
{
  ...,
  "components": {
    ...,
    "aws.greengrass.crypto.Pkcs11Provider": {
      "componentVersion": "2.0.0",
      "configurationUpdate": {
        "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}"
      }
    }
  }
}
```

La implementación puede tardar varios minutos en completarse. Puede usar el AWS IoT Greengrass servicio para comprobar el estado de la implementación. Puede consultar los registros del software AWS IoT Greengrass principal para comprobar que el componente del proveedor PKCS \$111 se implementa correctamente. Para obtener más información, consulte los siguientes temas:
+ [Comprobación del estado de la implementación](check-deployment-status.md)
+ [Supervisión de los registros de AWS IoT Greengrass](monitor-logs.md)

Si la implementación falla, puede solucionar el problema de la implementación en cada dispositivo principal. Para obtener más información, consulte [Solución de problemas AWS IoT Greengrass V2](troubleshooting.md).

### Paso 3: Actualizar la configuración en el dispositivo principal
<a name="enable-hardware-security-configure-core-device"></a>

El software AWS IoT Greengrass Core utiliza un archivo de configuración que especifica cómo funciona el dispositivo. Este archivo de configuración incluye dónde encontrar la clave privada y el certificado que el dispositivo utiliza para conectarse a la Nube de AWS. Complete los siguientes pasos para importar la clave privada y el certificado del dispositivo principal al HSM y actualice el archivo de configuración para usar el HSM.

**Cómo actualizar la configuración del dispositivo principal para utilizar la seguridad del hardware**

1. Detenga el software AWS IoT Greengrass principal. Si [configuró el software AWS IoT Greengrass Core como un servicio del sistema](configure-greengrass-core-v2.md#configure-system-service) con systemd, puede ejecutar el siguiente comando para detener el software.

   ```
   sudo systemctl stop greengrass.service
   ```

1. Busque los archivos de clave privada y certificado del dispositivo principal.
   + Si instaló el software AWS IoT Greengrass Core con el [aprovisionamiento automático](quick-installation.md) o el [aprovisionamiento de flota](fleet-provisioning.md), la clave privada está en `/greengrass/v2/privKey.key` y el certificado está en. `/greengrass/v2/thingCert.crt`
   + Si instaló el software AWS IoT Greengrass Core con el [aprovisionamiento manual](manual-installation.md), la clave privada existe de forma `/greengrass/v2/private.pem.key` predeterminada y el certificado existe de forma predeterminada. `/greengrass/v2/device.pem.crt`

   También puede comprobar las propiedades `system.privateKeyPath` y `system.certificateFilePath` en `/greengrass/v2/config/effectiveConfig.yaml` para encontrar la ubicación de estos archivos.

1. Importe la clave privada y el certificado al HSM. Consulte la documentación de su HSM para obtener información sobre cómo importar claves privadas y certificados hacia él. Importe la clave privada y el certificado con el ID de ranura y el PIN de usuario en los que inicializó anteriormente el token PKCS\$111. Debe usar la misma etiqueta de objeto e ID de objeto para la clave privada y el certificado. Guarde la etiqueta de objeto que especifique al importar cada archivo. Esta etiqueta se utiliza más adelante cuando se actualiza la configuración del software AWS IoT Greengrass principal para utilizar la clave privada y el certificado en el HSM.

1. Actualice la configuración AWS IoT Greengrass principal para usar la clave privada y el certificado en el HSM. Para actualizar la configuración, modifique el archivo de configuración AWS IoT Greengrass principal y ejecute el software AWS IoT Greengrass principal con el archivo de configuración actualizado para aplicar la nueva configuración.

   Haga lo siguiente:

   1. Cree una copia de seguridad del archivo de configuración AWS IoT Greengrass principal. Puede utilizar esta copia de seguridad para restaurar el dispositivo principal si tiene problemas al configurar la seguridad del hardware.

      ```
      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
      ```

   1. Abra el archivo de configuración de AWS IoT Greengrass Core en un editor de texto. Por ejemplo, puede ejecutar el comando siguiente para usar GNU nano para editar el archivo. Reemplace `/greengrass/v2` con la ruta a la carpeta raíz de Greengrass.

      ```
      sudo nano /greengrass/v2/config/effectiveConfig.yaml
      ```

   1. Reemplace el valor de `system.privateKeyPath` por el URI PKCS\$111 para la clave privada del HSM. *iotdevicekey*Sustitúyala por la etiqueta del objeto en la que importaste anteriormente la clave privada y el certificado.

      ```
      pkcs11:object=iotdevicekey;type=private
      ```

   1. Reemplace el valor de `system.certificateFilePath` por el URI PKCS\$111 del certificado en el HSM. *iotdevicekey*Sustitúyala por la etiqueta de objeto en la que importaste anteriormente la clave privada y el certificado.

      ```
      pkcs11:object=iotdevicekey;type=cert
      ```

   Una vez finalizados estos pasos, la `system` propiedad del archivo de configuración AWS IoT Greengrass principal debería tener un aspecto similar al del ejemplo siguiente.

   ```
   system:
     certificateFilePath: "pkcs11:object=iotdevicekey;type=cert"
     privateKeyPath: "pkcs11:object=iotdevicekey;type=private"
     rootCaPath: "/greengrass/v2/rootCA.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   ```

1. Aplique la configuración en el archivo `effectiveConfig.yaml` actualizado. Ejecute `Greengrass.jar` con el parámetro `--init-config` en el que desee aplicar la configuración en `effectiveConfig.yaml`. Reemplace `/greengrass/v2` con la ruta a la carpeta raíz de Greengrass.

   ```
   sudo java -Droot="/greengrass/v2" \
     -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \
     --start false \
     --init-config /greengrass/v2/config/effectiveConfig.yaml
   ```

1. Inicie el software AWS IoT Greengrass Core. Si [configuró el software AWS IoT Greengrass Core como un servicio del sistema](configure-greengrass-core-v2.md#configure-system-service) con systemd, puede ejecutar el siguiente comando para iniciar el software.

   ```
   sudo systemctl start greengrass.service
   ```

   Para obtener más información, consulte [Ejecute el software AWS IoT Greengrass principal](run-greengrass-core-v2.md).

1. Compruebe los registros del software AWS IoT Greengrass principal para comprobar que el software se inicia y se conecta al Nube de AWS. El software AWS IoT Greengrass principal utiliza la clave privada y el certificado para conectarse a los AWS IoT Greengrass servicios AWS IoT y.

   ```
   sudo tail -f /greengrass/v2/logs/greengrass.log
   ```

   Los siguientes mensajes de registro a nivel de información indican que el software AWS IoT Greengrass principal se ha conectado correctamente a los servicios AWS IoT and AWS IoT Greengrass .

   ```
   2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
   ```

1. (Opcional) Tras comprobar que el software AWS IoT Greengrass principal funciona con la clave privada y el certificado del HSM, elimine la clave privada y los archivos de certificado del sistema de archivos del dispositivo. Ejecute el siguiente comando y reemplace las rutas de los archivos por las rutas a los archivos de clave privada y certificado.

   ```
   sudo rm /greengrass/v2/privKey.key
   sudo rm /greengrass/v2/thingCert.crt
   ```

## Uso del hardware sin compatibilidad con PKCS\$111
<a name="hardware-without-pkcs11"></a>

La biblioteca de PKCS\$111 suele ser proporcionada por el proveedor de hardware o es de código abierto. Por ejemplo, con un hardware que cumpla con los estándares (como el TPM1 .2), podría ser posible utilizar el software de código abierto existente. Si el hardware no tiene la correspondiente implementación de la biblioteca PKCS\$111, o bien si desea escribir un proveedor de PKCS\$111 personalizado, póngase en contacto con su representante de Enterprise Support de Amazon Web Services para plantearle cualquier pregunta relacionada con la integración.

## Véase también
<a name="hardware-security-see-also"></a>
+ [PKCS\$111 Cryptographic Token Interface Usage Guide Version 2.4.0](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html)
+ [RFC 7512](https://tools.ietf.org/html/rfc7512)
+ [PKCS \$11: Cifrado RSA versión 1.5](https://tools.ietf.org/html/rfc2313)

# Autenticación y autorización de dispositivos para AWS IoT Greengrass
<a name="device-auth"></a>

Los dispositivos de AWS IoT Greengrass los entornos utilizan certificados X.509 para la autenticación y AWS IoT políticas de autorización. Los certificados y las políticas permiten que los dispositivos se conecten de forma segura entre sí, con AWS IoT Core y AWS IoT Greengrass.

Los certificados X.509 son certificados digitales que utilizan el estándar de infraestructura de clave pública X.509 para asociar una clave pública a una identidad contenida en un certificado. Una entidad de confianza conocida como entidad de certificación (CA) emite los certificados X.509. La CA administra uno o varios certificados especiales llamados certificados de CA, que utiliza para generar certificados X.509. Solo la entidad de certificación tiene acceso a los certificados de entidad de certificación.

AWS IoT las políticas definen el conjunto de operaciones permitidas para AWS IoT los dispositivos. En concreto, permiten y deniegan el acceso y las operaciones del plano de AWS IoT Greengrass datos, como la publicación de mensajes MQTT y la recuperación de imágenes ocultas de los dispositivos. AWS IoT Core 

Todos los dispositivos requieren una entrada en el AWS IoT Core registro y un certificado X.509 activado con una política adjunta. AWS IoT Los dispositivos se dividen en dos categorías:
+ **Dispositivos principales de Greengrass**

  Los dispositivos principales de Greengrass utilizan certificados y AWS IoT políticas para conectarse AWS IoT Core y. AWS IoT Greengrass Los certificados y las políticas también permiten AWS IoT Greengrass implementar componentes y configuraciones en los dispositivos principales.
+ **Dispositivos de cliente**

  Los dispositivos cliente de MQTT utilizan certificados y políticas para conectarse al AWS IoT Greengrass servicio AWS IoT Core y al mismo. Esto permite a los dispositivos cliente utilizar la detección AWS IoT Greengrass en la nube para buscar y conectarse a un dispositivo principal de Greengrass. Un dispositivo de cliente utiliza el mismo certificado para conectarse al servicio en la nube de AWS IoT Core y a los dispositivos principales. Los dispositivos de cliente también utilizan información de detección para la autenticación mutua con el dispositivo principal. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).

## Certificados X.509
<a name="x509-certificates"></a>

La comunicación entre los dispositivos principales y los dispositivos cliente y entre los dispositivos AWS IoT Core y/o AWS IoT Greengrass debe estar autenticada. Esta autenticación mutua se basa en certificados de dispositivo X.509 registrados y claves criptográficas.

En un AWS IoT Greengrass entorno, los dispositivos utilizan certificados con claves públicas y privadas para las siguientes conexiones de Transport Layer Security (TLS):
+ El componente de AWS IoT cliente del dispositivo principal de Greengrass que se conecta a Internet AWS IoT Core y a AWS IoT Greengrass través de ella.
+ Dispositivos cliente que se conectan a AWS IoT Greengrass través de Internet para descubrir los dispositivos principales.
+ El componente agente MQTT en el núcleo de Greengrass que se conecta a los dispositivos de Greengrass en el grupo a través de la red local.

AWS IoT Greengrass los dispositivos principales almacenan los certificados en la carpeta raíz de Greengrass.

### Certificados de entidad de certificación (CA)
<a name="ca-certificates"></a>

Los dispositivos principales y los dispositivos cliente de Greengrass descargan un certificado de CA raíz que se utiliza para la autenticación con los servicios AWS IoT Core y AWS IoT Greengrass . Le recomendamos que utilice un certificado de entidad de certificación raíz de Amazon Trust Services (ATS), como [Amazon Root CA 1](https://www.amazontrust.com/repository/AmazonRootCA1.pem). Para obtener más información, consulte [Certificados de CA para autenticación de servidor](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html#server-authentication-certs) en la *Guía del desarrollador de AWS IoT Core *.

Los dispositivos de cliente también descargan un certificado de CA del dispositivo principal de Greengrass. Este certificado se utiliza para validar el certificado del servidor MQTT en el dispositivo principal durante la autenticación mutua.

### Rotación de certificados en el agente MQTT local
<a name="mqtt-certificate-expiration"></a>

Al [habilitar la compatibilidad con dispositivos de cliente](interact-with-local-iot-devices.md), los dispositivos principales de Greengrass generan un certificado de servidor MQTT local que los dispositivos de cliente utilizan para la autenticación mutua. Este certificado está firmado por el certificado de CA del dispositivo principal, que el dispositivo principal almacena en la AWS IoT Greengrass nube. Los dispositivos de cliente recuperan el certificado de CA del dispositivo principal cuando descubren el dispositivo principal. Utilizan el certificado de CA del dispositivo principal para verificar el certificado del servidor MQTT del dispositivo principal cuando se conectan al dispositivo principal. El certificado de CA del dispositivo principal caduca a los 5 años.

El certificado del servidor MQTT caduca cada 7 días de forma predeterminada y puede configurar esta duración entre 2 y 10 días. Este período limitado se basa en las prácticas recomendadas de seguridad. Esta rotación ayuda a mitigar la amenaza de que un atacante robe el certificado del servidor MQTT y la clave privada para hacerse pasar por el dispositivo principal de Greengrass.

El dispositivo principal de Greengrass rota el certificado del servidor MQTT 24 horas antes de que caduque. El dispositivo principal de Greengrass genera un nuevo certificado y reinicia el agente MQTT local. En este momento, se desconectan todos los dispositivos de cliente conectados al dispositivo principal de Greengrass. Los dispositivos de cliente se pueden volver a conectar al dispositivo principal de Greengrass después de un breve periodo.

## AWS IoT políticas para las operaciones del plano de datos
<a name="iot-policies"></a>

Utilice AWS IoT políticas para autorizar el acceso a los planos de AWS IoT Greengrass datos AWS IoT Core y a los mismos. El plano de datos AWS IoT Core proporciona operaciones para dispositivos, usuarios y aplicaciones. Estas operaciones incluyen la posibilidad de conectarse a los temas AWS IoT Core y suscribirse a ellos. El plano AWS IoT Greengrass de datos proporciona operaciones para los dispositivos Greengrass. Para obtener más información, consulte [AWS IoT Greengrass V2 acciones políticas](#greengrass-policy-actions). Estas operaciones incluyen la capacidad de resolver las dependencias de los componentes y descargar artefactos de componentes públicos.

Una AWS IoT política es un documento JSON similar a una política de [IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json) Contiene una o varias instrucciones de política que especifican las siguientes propiedades:
+ `Effect`. El modo de acceso, que puede ser `Allow` o `Deny`.
+ `Action`. La lista de acciones permitidas o denegadas por la política.
+ `Resource`. La lista de recursos en los que se permite o deniega la acción.

AWS IoT las políticas `*` se admiten como caracteres comodín y tratan los caracteres comodín (`+`y`#`) de MQTT como cadenas literales. *Para obtener más información sobre el `*` comodín, consulte [Uso del comodín en un recurso ARNs en la Guía](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) del usuario.AWS Identity and Access Management *

Para obtener más información, consulte [Políticas de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html) y [Acciones de política de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) en la *Guía del desarrollador de AWS IoT Core *.

**importante**  
<a name="thing-policy-variable-not-supported"></a>[Las variables de política de objetos](https://docs.aws.amazon.com/iot/latest/developerguide/thing-policy-variables.html) (`iot:Connection.Thing.*`) no son compatibles con las políticas de AWS IoT para dispositivos principales ni operaciones del plano de datos de Greengrass. En su lugar, puede utilizar un comodín que haga coincidir varios dispositivos con nombres similares. Por ejemplo, puede especificar `MyGreengrassDevice*` para que coincida con `MyGreengrassDevice1`, `MyGreengrassDevice2`, etc. 

**nota**  
AWS IoT Core permite adjuntar AWS IoT políticas a grupos de cosas para definir los permisos para grupos de dispositivos. Las políticas de grupos de cosas no permiten el acceso a las operaciones del plano de AWS IoT Greengrass datos. Para permitir que una cosa acceda a una operación del plano de AWS IoT Greengrass datos, añada el permiso a una AWS IoT política que adjunte al certificado de la cosa.

### AWS IoT Greengrass V2 acciones políticas
<a name="greengrass-policy-actions"></a>

AWS IoT Greengrass V2 define las siguientes acciones políticas que los dispositivos principales y los dispositivos cliente de Greengrass pueden usar en AWS IoT las políticas. Para especificar un recurso para una acción de política, debe utilizar el nombre de recurso de Amazon (ARN) del recurso.Acciones del dispositivo principal

`greengrass:GetComponentVersionArtifact`  <a name="greengrass-get-component-version-artifact-action"></a>
Conceda permiso para obtener la URL prefirmada para descargar un artefacto de componente público o un artefacto de componente de Lambda.  
Este permiso se evalúa cuando un dispositivo principal recibe una implementación que especifica un componente público o de Lambda que tiene artefactos. Si el dispositivo principal ya tiene el artefacto, no lo volverá a descargar.  
Tipo de recurso: `componentVersion`  
Formato del ARN de recurso: `arn:aws:greengrass:region:account-id:components:component-name:versions:component-version`

`greengrass:ResolveComponentCandidates`  <a name="greengrass-resolve-component-candidates-action"></a>
Conceda permiso para enumerar los componentes que cumplen los requisitos de componente, versión y plataforma de una implementación. Si los requisitos entran en conflicto o no existen componentes que los cumplan, esta operación devuelve un error y la implementación no se realiza correctamente en el dispositivo.  
Este permiso se evalúa cuando un dispositivo principal recibe una implementación que especifica los componentes.  
Tipo de recurso: ninguno  
Formato del ARN de recurso: `*`

`greengrass:GetDeploymentConfiguration`  <a name="greengrass-get-deployment-configuration-action"></a>
Conceda permiso para obtener una URL prefirmada para descargar un documento de implementación de gran tamaño.  
Este permiso se evalúa cuando un dispositivo principal recibe una implementación que especifica un documento de implementación de más de 7 KB (si la implementación se dirige a un objeto) o 31 KB (si la implementación está dirigida a un grupo de objetos). El documento de implementación incluye configuraciones de componentes, políticas de implementación y metadatos de implementación. Para obtener más información, consulte [Implemente AWS IoT Greengrass componentes en los dispositivos](manage-deployments.md).  
Esta característica está disponible para la versión 2.3.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).  
Tipo de recurso: ninguno  
Formato del ARN de recurso: `*`

`greengrass:ListThingGroupsForCoreDevice`  <a name="greengrass-list-thing-groups-for-core-device-action"></a>
Concede permiso para obtener la jerarquía de grupos de objetos de un dispositivo principal.  
Este permiso se comprueba cuando un dispositivo principal recibe una implementación desde AWS IoT Greengrass. El dispositivo principal utiliza esta acción para identificar si se ha eliminado de un grupo de objetos desde la última implementación. Si el dispositivo principal se eliminó de un grupo de objetos y ese grupo de objetos es el objetivo de una implementación en el dispositivo principal, el dispositivo principal elimina los componentes instalados por esa implementación.  
Esta característica la utilizan la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).  
Tipo de recurso: `thing` (dispositivo principal)  
Formato del ARN de recurso: `arn:aws:iot:region:account-id:thing/core-device-thing-name`

`greengrass:VerifyClientDeviceIdentity`  <a name="greengrass-verify-client-device-identity-action"></a>
Otorga permiso para verificar la identidad de un dispositivo de cliente que se conecta a un dispositivo principal.  
Este permiso se evalúa cuando un dispositivo principal ejecuta el [componente de autenticación del dispositivo de cliente](client-device-auth-component.md) y recibe una conexión MQTT desde un dispositivo de cliente. El dispositivo de cliente presenta su certificado de dispositivo AWS IoT . A continuación, el dispositivo principal envía el certificado del dispositivo al servicio en la nube de AWS IoT Greengrass para verificar la identidad del dispositivo de cliente. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
Tipo de recurso: ninguno  
Formato del ARN de recurso: `*`

`greengrass:VerifyClientDeviceIoTCertificateAssociation`  <a name="greengrass-verify-client-device-iot-certificate-association-action"></a>
Otorga permiso para comprobar si un dispositivo de cliente está asociado a un certificado AWS IoT .  
Este permiso se evalúa cuando un dispositivo principal ejecuta el [componente de autenticación del dispositivo de cliente](client-device-auth-component.md) y autoriza a un dispositivo de cliente a conectarse a través de MQTT. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
Para que un dispositivo principal utilice esta operación, la [función de servicio Greengrass](greengrass-service-role.md) debe estar asociada a usted Cuenta de AWS y permitir el `iot:DescribeCertificate` permiso.
Tipo de recurso: `thing` (dispositivo de cliente)  
Formato del ARN de recurso: `arn:aws:iot:region:account-id:thing/client-device-thing-name`

`greengrass:PutCertificateAuthorities`  <a name="greengrass-put-certificate-authorities-action"></a>
Otorga permiso para cargar certificados de la autoridad de certificación (CA) que los dispositivos de cliente pueden descargar para verificar el dispositivo principal.  
Este permiso se evalúa cuando un dispositivo principal instala y ejecuta el [componente de autenticación del dispositivo de cliente](client-device-auth-component.md). Este componente crea una autoridad de certificados local y utiliza esta operación para cargar sus certificados de CA. Los dispositivos de cliente descargan estos certificados de CA cuando utilizan la operación [Discover](#greengrass-discover-action) para encontrar los dispositivos principales a los que pueden conectarse. Cuando los dispositivos de cliente se conectan a un agente MQTT en un dispositivo principal, utilizan estos certificados de CA para verificar la identidad del dispositivo principal. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
Tipo de recurso: ninguno  
Formato de ARN: `*`

`greengrass:GetConnectivityInfo`  <a name="greengrass-get-connectivity-info-action"></a>
Concede permiso para obtener información de conectividad para un dispositivo principal. Esta información describe cómo los dispositivos de cliente se pueden conectar al dispositivo principal.  
Este permiso se evalúa cuando un dispositivo principal instala y ejecuta el [componente de autenticación del dispositivo de cliente](client-device-auth-component.md). Este componente utiliza la información de conectividad para generar certificados de CA válidos para cargarlos en el servicio AWS IoT Greengrass en la nube junto con la [PutCertificateAuthories](#greengrass-put-certificate-authorities-action)operación. Los dispositivos de cliente utilizan estos certificados de CA para verificar la identidad del dispositivo principal. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
También puede utilizar esta operación en el plano de AWS IoT Greengrass control para ver la información de conectividad de un dispositivo principal. Para obtener más información, consulta [GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/getconnectivityinfo-get.html) en la *AWS IoT Greengrass V1 Referencia de la API de *.  
Tipo de recurso: `thing` (dispositivo principal)  
Formato del ARN de recurso: `arn:aws:iot:region:account-id:thing/core-device-thing-name`

`greengrass:UpdateConnectivityInfo`  <a name="greengrass-update-connectivity-info-action"></a>
Concede permiso para actualizar la información de conectividad de un dispositivo principal. Esta información describe cómo los dispositivos de cliente se pueden conectar al dispositivo principal.  
Este permiso se evalúa cuando un dispositivo principal ejecuta el [componente detector de IP](ip-detector-component.md). Este componente identifica la información que los dispositivos de cliente necesitan para conectarse al dispositivo principal de la red local. A continuación, este componente utiliza esta operación para cargar la información de conectividad en el servicio AWS IoT Greengrass en la nube, de modo que los dispositivos cliente puedan recuperar esta información con la operación [Discover](#greengrass-discover-action). Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
También puede utilizar esta operación en el plano de AWS IoT Greengrass control para actualizar manualmente la información de conectividad de un dispositivo principal. Para obtener más información, consulta [UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html) en la *AWS IoT Greengrass V1 Referencia de la API de *.  
Tipo de recurso: `thing` (dispositivo principal)  
Formato del ARN de recurso: `arn:aws:iot:region:account-id:thing/core-device-thing-name`Acciones del dispositivo de cliente

`greengrass:Discover`  <a name="greengrass-discover-action"></a>
Concede permiso para descubrir la información de conectividad de los dispositivos principales a los que se puede conectar un dispositivo de cliente. Esta información describe cómo el dispositivo de cliente se puede conectar a los dispositivos principales. Un dispositivo cliente solo puede detectar los dispositivos principales a los que esté asociado mediante esta [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html)operación. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).  
Tipo de recurso: `thing` (dispositivo de cliente)  
Formato del ARN de recurso: `arn:aws:iot:region:account-id:thing/client-device-thing-name`

## Actualice la AWS IoT política de un dispositivo principal
<a name="update-core-device-iot-policy"></a>

Puedes usar las AWS IoT consolas AWS IoT Greengrass y la AWS IoT API para ver y actualizar la AWS IoT política de un dispositivo principal.

**nota**  
Si has utilizado el [instalador de software AWS IoT Greengrass principal para aprovisionar recursos](quick-installation.md), tu dispositivo principal tiene una AWS IoT política que permite el acceso a todas AWS IoT Greengrass las acciones (`greengrass:*`). Puede seguir estos pasos para restringir el acceso únicamente a las acciones que utiliza un dispositivo principal.

### Revisa y actualiza la AWS IoT política de un dispositivo principal (consola)
<a name="update-core-device-iot-policy-console"></a>

1. <a name="update-iot-policy-console-open-greengrass-console"></a>En el menú de navegación de la [consola de AWS IoT Greengrass](https://console.aws.amazon.com/greengrass), elija **Dispositivos principales**.

1. <a name="update-iot-policy-console-choose-core-device"></a>En la página **Dispositivos principales**, elija el dispositivo principal que desea actualizar.

1. <a name="update-iot-policy-console-choose-core-device-thing"></a>En la página de detalles del dispositivo principal, elija el enlace al **Objeto** del dispositivo principal. Este enlace abre la página de detalles del objeto en la consola de AWS IoT .

1. <a name="update-iot-policy-console-choose-thing-security"></a>En la página de detalles del objeto, elija **Certificados**.

1. <a name="update-iot-policy-console-choose-thing-certificate"></a>En la pestaña **Certificados**, elija el certificado activo del objeto.

1. <a name="update-iot-policy-console-choose-certificate-policies"></a>En la página de detalles del certificado, elija **Políticas**.

1. <a name="update-iot-policy-console-choose-policy"></a>En la pestaña **Políticas**, selecciona la AWS IoT política que deseas revisar y actualizar. Puede agregar los permisos necesarios a cualquier política que esté asociada al certificado activo del dispositivo principal.
**nota**  <a name="quick-installation-iot-policies-note"></a>
Si ha utilizado el [instalador de software AWS IoT Greengrass principal para aprovisionar recursos](quick-installation.md), tiene dos AWS IoT políticas. Le recomendamos que elija la política denominada **GreengrassV2IoTThingPolicy**, si existe. Los dispositivos principales que cree con el instalador rápido usan este nombre de política de forma predeterminada. Si agrega permisos a esta política, también los otorga a otros dispositivos principales que usan esta política.

1. <a name="update-iot-policy-console-edit-policy"></a>En la descripción general de la política, elija **Editar la versión activa**.

1. Revise la política y agregue, elimine o edite los permisos según sea necesario.

1. <a name="update-iot-policy-console-set-as-active-version"></a>Para establecer una nueva versión de la política como la versión activa, en **Estado de la versión de la política**, seleccione **Establecer la versión editada como la versión activa de esta política**.

1. <a name="update-iot-policy-console-save-policy"></a>Seleccione **Guardar como versión nueva**.

### Revise y actualice la AWS IoT política de un dispositivo principal (AWS CLI)
<a name="update-core-device-iot-policy-cli"></a>

1. <a name="update-iot-policy-cli-list-thing-principals"></a>Enumere los principios del AWS IoT dispositivo principal. Las entidades principales del objeto pueden ser certificados de dispositivo X.509 u otros identificadores. Ejecute el siguiente comando y *MyGreengrassCore* sustitúyalo por el nombre del dispositivo principal.

   ```
   aws iot list-thing-principals --thing-name MyGreengrassCore
   ```

   La operación devuelve una respuesta que enumera las entidades principales del objeto del dispositivo principal.

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:123456789012:cert/certificateId"
       ]
   }
   ```

1. <a name="update-iot-policy-cli-identify-active-certificate"></a>Identifique el certificado activo del dispositivo principal. Ejecute el siguiente comando y *certificateId* sustitúyalo por el ID de cada certificado del paso anterior hasta que encuentre el certificado activo. El ID del certificado es la cadena hexadecimal que se encuentra al final del ARN del certificado. El argumento `--query` especifica que solo se muestre el estado del certificado.

   ```
   aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'
   ```

   La operación devuelve el estado del certificado en forma de cadena. Por ejemplo, si el certificado está activo, la operación muestra `"ACTIVE"`.

1. <a name="update-iot-policy-cli-list-certificate-policies"></a>Enumere las AWS IoT políticas que se adjuntan al certificado. Ejecute el siguiente comando y reemplace ARN del certificado por el ARN del certificado.

   ```
   aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId
   ```

   La operación devuelve una respuesta en la que se enumeran AWS IoT las políticas adjuntas al certificado.

   ```
   {
       "policies": [
           {
               "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias"
           },
           {
               "policyName": "GreengrassV2IoTThingPolicy",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy"
           }
       ]
   }
   ```

1. <a name="update-iot-policy-cli-choose-policy"></a>Elija la política que desee ver y actualizar.
**nota**  <a name="quick-installation-iot-policies-note"></a>
Si utilizó el [instalador de software AWS IoT Greengrass principal para aprovisionar recursos](quick-installation.md), tiene dos AWS IoT políticas. Le recomendamos que elija la política denominada **GreengrassV2IoTThingPolicy**, si existe. Los dispositivos principales que cree con el instalador rápido usan este nombre de política de forma predeterminada. Si agrega permisos a esta política, también los otorga a otros dispositivos principales que usan esta política.

1. <a name="update-iot-policy-cli-get-policy-document"></a>Obtenga el documento de la política. Ejecute el siguiente comando y *GreengrassV2IoTThingPolicy* sustitúyalo por el nombre de la política.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy
   ```

   La operación devuelve una respuesta que contiene el documento de política y otra información sobre la política. El documento de política es un objeto JSON serializado como una cadena. 

   ```
   {
       "policyName": "GreengrassV2IoTThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
                   \\"iot:Connect\\",\
                   \\"iot:Publish\\",\
                   \\"iot:Subscribe\\",\
                   \\"iot:Receive\\",\
                   \\"greengrass:*\\"\
   ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "defaultVersionId": "1",
       "creationDate": "2021-02-05T16:03:14.098000-08:00",
       "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00",
       "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f"
   }
   ```

1. <a name="update-iot-policy-cli-create-policy-document-file"></a>Use un conversor en línea u otra herramienta para convertir la cadena del documento de la política en un objeto JSON y, a continuación, guárdela en un archivo denominado `iot-policy.json`.

   Por ejemplo, si tiene instalada la herramienta [jq](https://stedolan.github.io/jq/), puede ejecutar el siguiente comando para obtener el documento de la política, convertirlo en un objeto JSON y guardar el documento de la política como un objeto JSON.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
   ```

1. Revise el documento de política y agregue, elimine o edite los permisos según sea necesario.

   <a name="nano-command-intro-existing-file"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano para abrir el archivo.

   ```
   nano iot-policy.json
   ```

   Cuando haya terminado, el documento de política podría tener un aspecto similar a la [AWS IoT política mínima para los dispositivos principales](#greengrass-core-minimal-iot-policy).

1. <a name="update-iot-policy-cli-create-policy-version"></a>Guarde los cambios como una nueva versión de la política. Ejecute el siguiente comando y *GreengrassV2IoTThingPolicy* sustitúyalo por el nombre de la política.

   ```
   aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default
   ```

   Si se realiza correctamente, la operación devuelve una respuesta similar a la del siguiente ejemplo.

   ```
   {
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
   \\t\\t\\"iot:Connect\\",\
   \\t\\t\\"iot:Publish\\",\
   \\t\\t\\"iot:Subscribe\\",\
   \\t\\t\\"iot:Receive\\",\
   \\t\\t\\"greengrass:*\\"\
         ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "policyVersionId": "2",
       "isDefaultVersion": true
   }
   ```

## AWS IoT Política mínima para los dispositivos AWS IoT Greengrass V2 principales
<a name="greengrass-core-minimal-iot-policy"></a>

**importante**  
Las versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md) requieren permisos adicionales en la política mínima AWS IoT . Es posible que tenga que [actualizar las políticas de AWS IoT de sus dispositivos principales](#update-core-device-iot-policy) para conceder permisos adicionales.  
Los dispositivos principales que ejecutan la versión 2.5.0 y versiones posteriores del núcleo de Greengrass utilizan el permiso `greengrass:ListThingGroupsForCoreDevice` para desinstalar componentes al eliminar un dispositivo principal de un grupo de objetos.
Los dispositivos principales que ejecutan la versión 2.3.0 y versiones posteriores del núcleo de Greengrass utilizan el permiso `greengrass:GetDeploymentConfiguration` para admitir documentos de configuración de implementación de gran tamaño.

La siguiente política de ejemplo incluye un conjunto mínimo de acciones necesario para respaldar la funcionalidad básica de Greengrass para su dispositivo del núcleo.
+ La política de `Connect` incluye un comodín `*` después del nombre del objeto del dispositivo principal (por ejemplo, `core-device-thing-name*`). El dispositivo principal utiliza el mismo certificado de dispositivo para realizar múltiples suscripciones simultáneas AWS IoT Core, pero es posible que el ID de cliente de una conexión no coincida exactamente con el nombre del dispositivo principal. Después de las primeras 50 suscripciones, el dispositivo principal utiliza `core-device-thing-name#number` como ID de cliente, donde incrementa `number` por cada 50 suscripciones adicionales. Por ejemplo, cuando un dispositivo principal denominado `MyCoreDevice` crea 150 suscripciones simultáneas, utiliza el siguiente cliente: IDs
  + Suscripciones del 1 al 50: `MyCoreDevice`
  + Suscripciones del 51 al 100: `MyCoreDevice#2`
  + Suscripciones 101 a 150: `MyCoreDevice#3`

  El comodín permite que el dispositivo principal se conecte cuando utiliza estos clientes IDs que tienen un sufijo.
+ La política muestra los temas de MQTT y los filtros de tema en los que el dispositivo del núcleo puede publicar mensajes, suscribirse y recibir mensajes, incluidos temas utilizados para estado de sombra. Para permitir el intercambio de mensajes entre AWS IoT Core los componentes de Greengrass y los dispositivos cliente, especifique los temas y los filtros de temas que desee permitir. Para obtener más información, consulte [Ejemplos de política de publicación/suscripción](https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html) en la *Guía del desarrollador de AWS IoT Core *.
+ La política concede permiso para publicar datos de telemetría en el siguiente tema.

  ```
  $aws/things/core-device-thing-name/greengrass/health/json
  ```

  Puede eliminar este permiso en los dispositivos principales en los que se deshabilita la telemetría. Para obtener más información, consulte [Recopile datos de telemetría del estado del sistema de los dispositivos principales AWS IoT Greengrass](telemetry.md).
+ La política concede permiso para asumir una función de IAM mediante un alias de AWS IoT función. El dispositivo principal utiliza esta función, denominada función de intercambio de fichas, para adquirir AWS credenciales que puede utilizar para autenticar las solicitudes. AWS Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

  Al instalar el software AWS IoT Greengrass principal, se crea y se adjunta una segunda AWS IoT política que incluye solo este permiso. Si incluye este permiso en la AWS IoT política principal de su dispositivo principal, puede separar y eliminar la otra AWS IoT política.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/core-device-thing-name*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive",
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name/greengrass/health/json",
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name/greengrassv2/health/json",
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name/jobs/*",
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name/shadow/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/core-device-thing-name/jobs/*",
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/core-device-thing-name/shadow/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:AssumeRoleWithCertificate",
            "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/token-exchange-role-alias-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:GetComponentVersionArtifact",
                "greengrass:ResolveComponentCandidates",
                "greengrass:GetDeploymentConfiguration",
                "greengrass:ListThingGroupsForCoreDevice"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## AWS IoT Política mínima de compatibilidad con los dispositivos cliente
<a name="client-device-support-minimal-iot-policy"></a>

El siguiente ejemplo de política incluye el conjunto mínimo de acciones necesarias para permitir la interacción con los dispositivos de cliente en un dispositivo principal. Para ser compatible con los dispositivos cliente, un dispositivo principal debe tener los permisos de esta AWS IoT política además de la [AWS IoT política mínima para su funcionamiento básico](#greengrass-core-minimal-iot-policy).
+ La política permite que el dispositivo principal actualice su propia información de conectividad. Este permiso (`greengrass:UpdateConnectivityInfo`) solo es necesario si se implementa el [componente del detector de IP](ip-detector-component.md) en el dispositivo principal.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name-gci/shadow/get"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/core-device-thing-name-gci/shadow/update/delta",
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/core-device-thing-name-gci/shadow/get/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name-gci/shadow/update/delta",
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/core-device-thing-name-gci/shadow/get/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:PutCertificateAuthorities",
                "greengrass:VerifyClientDeviceIdentity"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:VerifyClientDeviceIoTCertificateAssociation"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:thing/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:GetConnectivityInfo",
                "greengrass:UpdateConnectivityInfo"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:thing/core-device-thing-name"
            ]
        }
    ]
}
```

------

## AWS IoT Política mínima para los dispositivos cliente
<a name="client-device-minimal-iot-policy"></a>

El siguiente ejemplo de política incluye el conjunto mínimo de acciones necesarias para que un dispositivo de cliente detecte los dispositivos principales a los que se conecta y se comunica a través de MQTT. La AWS IoT política del dispositivo cliente debe incluir la `greengrass:Discover` acción que permita al dispositivo descubrir la información de conectividad de sus dispositivos principales Greengrass asociados. En la sección `Resource`, especifique el nombre de recurso de Amazon (ARN) del dispositivo de cliente, no el ARN del dispositivo principal de Greengrass.
+ La política permite la comunicación en todos los temas de MQTT. Para seguir las prácticas recomendadas de seguridad, restrinja los permisos `iot:Publish`, `iot:Subscribe` y `iot:Receive` al conjunto mínimo de temas que un dispositivo de cliente requiera para su caso de uso.
+ La política permite que el dispositivo descubra los dispositivos principales para AWS IoT todo tipo de dispositivos. Para seguir las mejores prácticas de seguridad, restrinja el `greengrass:Discover` permiso al dispositivo cliente o AWS IoT a un comodín que coincida con un conjunto de AWS IoT elementos.
**importante**  
<a name="thing-policy-variable-not-supported"></a>[Las variables de política de objetos](https://docs.aws.amazon.com/iot/latest/developerguide/thing-policy-variables.html) (`iot:Connection.Thing.*`) no son compatibles con las políticas de AWS IoT para dispositivos principales ni operaciones del plano de datos de Greengrass. En su lugar, puede utilizar un comodín que haga coincidir varios dispositivos con nombres similares. Por ejemplo, puede especificar `MyGreengrassDevice*` para que coincida con `MyGreengrassDevice1`, `MyGreengrassDevice2`, etc. 
+ La AWS IoT política de un dispositivo cliente no suele requerir permisos ni `iot:DeleteThingShadow` acciones `iot:GetThingShadow``iot:UpdateThingShadow`, ya que el dispositivo principal de Greengrass gestiona las operaciones de sincronización oculta para los dispositivos cliente. Para permitir que el dispositivo principal gestione las sombras de los dispositivos cliente, compruebe que la AWS IoT política del dispositivo principal permita estas acciones y que la `Resource` sección incluya ARNs los dispositivos cliente.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:Discover"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:thing/*"
            ]
        }
    ]
}
```

------

# Administración de identidad y acceso para AWS IoT Greengrass
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) es una herramienta Servicio de AWS que ayuda al administrador a controlar de forma segura el acceso a los AWS recursos. Los administradores de IAM controlan quién puede *autenticarse (iniciar* sesión) y quién puede *autorizarse* (tener permisos) para usar los recursos. AWS IoT Greengrass La IAM es una Servicio de AWS opción que puede utilizar sin coste adicional.

**nota**  
En este tema se describen conceptos y características de IAM. Para obtener información sobre las funciones de IAM compatibles con AWS IoT Greengrass, consulte. [Cómo AWS IoT Greengrass funciona con IAM](security_iam_service-with-iam.md)

## Público
<a name="security_iam_audience"></a>

La forma de utilizar AWS Identity and Access Management (IAM) varía en función de la función que desempeñe:
+ **Usuario del servicio:** solicite permisos al administrador si no puede acceder a las características (consulte [Solución de problemas de identidad y acceso para AWS IoT Greengrass](security_iam_troubleshoot.md)).
+ **Administrador del servicio:** determine el acceso de los usuarios y envíe las solicitudes de permiso (consulte [Cómo AWS IoT Greengrass funciona con IAM](security_iam_service-with-iam.md)).
+ **Administrador de IAM**: escribe las políticas para administrar el acceso (consulte [Ejemplos de políticas basadas en la identidad para AWS IoT Greengrass](security_iam_id-based-policy-examples.md)).

## Autenticación con identidades
<a name="security_iam_authentication"></a>

La autenticación es la forma en que inicias sesión AWS con tus credenciales de identidad. Debe autenticarse como usuario de Usuario raíz de la cuenta de AWS IAM o asumir una función de IAM.

Puede iniciar sesión como una identidad federada con las credenciales de una fuente de identidad, como AWS IAM Identity Center (IAM Identity Center), la autenticación de inicio de sesión único o las credenciales. Google/Facebook Para obtener más información sobre el inicio de sesión, consulte [Cómo iniciar sesión en la Cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In *.

Para el acceso programático, AWS proporciona un SDK y una CLI para firmar criptográficamente las solicitudes. Para obtener más información, consulte [AWS Signature Version 4 para solicitudes de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) en la *Guía del usuario de IAM*.

### Cuenta de AWS usuario root
<a name="security_iam_authentication-rootuser"></a>

 Al crear un Cuenta de AWS, se comienza con una identidad de inicio de sesión denominada *usuario Cuenta de AWS raíz* que tiene acceso completo a todos Servicios de AWS los recursos. Se recomiendaencarecidamente que no utilice el usuario raíz para las tareas diarias. Para ver la lista completa de las tareas que requieren credenciales de usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) en la *Guía del usuario de IAM*. 

### Usuarios y grupos de IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* es una identidad con permisos específicos para una sola persona o aplicación. Recomendamos el uso de credenciales temporales en lugar de usuarios de IAM con credenciales de larga duración. Para obtener más información, consulte [Exigir a los usuarios humanos que utilicen la federación con un proveedor de identidad para acceder AWS mediante credenciales temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) en la Guía del *usuario de IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica un conjunto de usuarios de IAM y facilita la administración de los permisos para grupos grandes de usuarios. Para obtener más información, consulte [Casos de uso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) en la *Guía del usuario de IAM*.

### Roles de IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[Rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* es una identidad con permisos específicos que proporciona credenciales temporales. Puede asumir un rol [cambiando de un rol de usuario a uno de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o llamando a una AWS CLI operación de AWS API. Para obtener más información, consulte [Métodos para asumir un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) en la *Guía del usuario de IAM*.

Los roles de IAM son útiles para el acceso de usuario federado, los permisos de usuario de IAM temporales, el acceso entre cuentas, el acceso entre servicios y las aplicaciones que se ejecutan en Amazon EC2. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

## Administración del acceso con políticas
<a name="security_iam_access-manage"></a>

 AWS Para controlar el acceso, puede crear políticas y adjuntarlas a AWS identidades o recursos. Una política define los permisos cuando están asociados a una identidad o un recurso. AWS evalúa estas políticas cuando un director hace una solicitud. La mayoría de las políticas se almacenan AWS como documentos JSON. Para obtener más información sobre los documentos de políticas de JSON, consulte [Información general de políticas de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) en la *Guía del usuario de IAM*.

Mediante las políticas, los administradores especifican quién tiene acceso a qué, definiendo qué **entidad principal** puede realizar **acciones** sobre qué **recursos** y en qué **condiciones**.

De forma predeterminada, los usuarios y los roles no tienen permisos. Un administrador de IAM crea políticas de IAM y las agrega a roles, que los usuarios pueden asumir posteriormente. Las políticas de IAM definen permisos independientemente del método que se utilice para realizar la operación.

### Políticas basadas en identidades
<a name="security_iam_access-manage-id-based-policies"></a>

Las políticas basadas en identidad son documentos de política de permisos JSON que asocia a una identidad (usuario, grupo o rol). Estas políticas controlan qué acciones pueden realizar las identidades, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en la identidad, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Las políticas basadas en identidad pueden ser *políticas insertadas* (incrustadas directamente en una sola identidad) o *políticas administradas* (políticas independientes asociadas a varias identidades). Para obtener información sobre cómo elegir entre políticas administradas e insertadas, consulte [Selección entre políticas administradas y políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) en la *Guía del usuario de IAM*.

### Políticas basadas en recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Las políticas basadas en recursos son documentos de políticas JSON que se asocian a un recurso. Los ejemplos incluyen las *Políticas de confianza de roles* de IAM y las *Políticas de bucket* de Amazon S3. En los servicios que admiten políticas basadas en recursos, los administradores de servicios pueden utilizarlos para controlar el acceso a un recurso específico. Debe [especificar una entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) en una política basada en recursos.

Las políticas basadas en recursos son políticas insertadas que se encuentran en ese servicio. No puedes usar políticas AWS gestionadas de IAM en una política basada en recursos.

### Listas de control de acceso () ACLs
<a name="security_iam_access-manage-acl"></a>

Las listas de control de acceso (ACLs) controlan qué responsables (miembros de la cuenta, usuarios o roles) tienen permisos para acceder a un recurso. ACLs son similares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticas JSON.

Amazon S3 y Amazon VPC son ejemplos de servicios compatibles. AWS WAF ACLs Para obtener más información ACLs, consulte la [descripción general de la lista de control de acceso (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) en la *Guía para desarrolladores de Amazon Simple Storage Service*.

### Otros tipos de políticas
<a name="security_iam_access-manage-other-policies"></a>

AWS admite tipos de políticas adicionales que pueden establecer los permisos máximos otorgados por los tipos de políticas más comunes:
+ **Límites de permisos:** establecen los permisos máximos que una política basada en identidad puede conceder a una entidad de IAM. Para obtener más información, consulte [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) en la *Guía del usuario de IAM*.
+ **Políticas de control de servicios (SCPs)**: especifican los permisos máximos para una organización o unidad organizativa en AWS Organizations. Para obtener más información, consulte [Políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) en la *Guía del usuario de AWS Organizations *.
+ **Políticas de control de recursos (RCPs)**: establece los permisos máximos disponibles para los recursos de tus cuentas. Para obtener más información, consulte [Políticas de control de recursos (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del AWS Organizations usuario*.
+ **Políticas de sesión:** políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal para un rol o un usuario federado. Para obtener más información, consulte [Políticas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) en la *Guía del usuario de IAM*.

### Varios tipos de políticas
<a name="security_iam_access-manage-multiple-policies"></a>

Cuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicados de entender. Para saber cómo se AWS determina si se debe permitir una solicitud cuando se trata de varios tipos de políticas, consulte la [lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) en la *Guía del usuario de IAM*.

## Véase también
<a name="security_iam_service-see-also"></a>
+ [Cómo AWS IoT Greengrass funciona con IAM](security_iam_service-with-iam.md)
+ [Ejemplos de políticas basadas en la identidad para AWS IoT Greengrass](security_iam_id-based-policy-examples.md)
+ [Solución de problemas de identidad y acceso para AWS IoT Greengrass](security_iam_troubleshoot.md)

# Cómo AWS IoT Greengrass funciona con IAM
<a name="security_iam_service-with-iam"></a>

Antes de usar IAM para administrar el acceso AWS IoT Greengrass, debe comprender las funciones de IAM que puede utilizar. AWS IoT Greengrass


| Característica de IAM | ¿Compatible con Greengrass? | 
| --- | --- | 
| [Políticas basadas en identidad con permisos de nivel de recursos](#security_iam_service-with-iam-id-based-policies) | Sí | 
| [Políticas basadas en recursos](#security_iam_service-with-iam-resource-based-policies) | No | 
| [Listas de control de acceso () ACLs](#security_iam_service-with-iam-acls) | No | 
| [Autorización basada en etiquetas](#security_iam_service-with-iam-tags) | Sí | 
| [Credenciales temporales](#security_iam_service-with-iam-roles-tempcreds) | Sí | 
| [Roles vinculados al servicio](#security_iam_service-with-iam-roles-service-linked) | No | 
| [Roles de servicio](#security_iam_service-with-iam-roles-service-linked) | Sí | 

Para obtener una visión general de cómo funcionan otros AWS servicios con IAM, consulte [AWS los servicios que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la Guía del usuario de *IAM*.

## Políticas basadas en la identidad para AWS IoT Greengrass
<a name="security_iam_service-with-iam-id-based-policies"></a>

Con las políticas de IAM basadas en la identidad, puede especificar las acciones y los recursos permitidos o denegados y las condiciones en las que se permiten o deniegan las acciones. AWS IoT Greengrass admite acciones, recursos y claves de condición específicos. Para obtener más información acerca de los elementos que utiliza en una política, consulte [Referencia de los elementos de las políticas de JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*.

### Acciones
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Action` de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Incluya acciones en una política para conceder permisos y así llevar a cabo la operación asociada.

Acciones políticas para AWS IoT Greengrass usar el `greengrass:` prefijo antes de la acción. Por ejemplo, para permitir que alguien utilice la operación de la `ListCoreDevices` API para enumerar sus dispositivos principales Cuenta de AWS, debes incluir la `greengrass:ListCoreDevices` acción en su política. Las declaraciones de política deben incluir un `NotAction` elemento `Action` o. AWS IoT Greengrass define su propio conjunto de acciones que describen las tareas que puede realizar con este servicio.

Para especificar varias acciones en una misma instrucción, inclúyalas entre corchetes (`[` `]`) y sepárelas por comas, tal y como se indica a continuación:

```
"Action": [
  "greengrass:action1",
  "greengrass:action2",
  "greengrass:action3"
]
```

Puede utilizar comodines (`*`) para especificar varias acciones. Por ejemplo, para especificar todas las acciones que comiencen con la palabra `List`, incluya la siguiente acción:

```
"Action": "greengrass:List*"
```

**nota**  
Se recomienda evitar el uso de comodines para especificar todas las acciones disponibles para un servicio. Como práctica recomendada, debe conceder permisos de mínimo privilegio y acotar el alcance de los permisos en una política. Para obtener más información, consulte [Conceda los mínimos permisos posibles](security-best-practices.md#least-privilege).

Para ver la lista completa de AWS IoT Greengrass acciones, consulte [las acciones definidas por AWS IoT Greengrass](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsiotgreengrass.html#awsiotgreengrass-actions-as-permissions) en la *Guía del usuario de IAM*.

### Recursos
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Resource` de la política JSON especifica el objeto u objetos a los que se aplica la acción. Como práctica recomendada, especifique un recurso utilizando el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). En el caso de las acciones que no admiten permisos por recurso, utilice un carácter comodín (\$1) para indicar que la instrucción se aplica a todos los recursos.

```
"Resource": "*"
```

La siguiente tabla contiene el AWS IoT Greengrass recurso ARNs que se puede utilizar como `Resource` elemento de una declaración de política. Para ver un mapeo de los permisos a nivel de recursos admitidos para AWS IoT Greengrass las acciones, consulte las [acciones definidas por AWS IoT Greengrass](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsiotgreengrass.html#awsiotgreengrass-actions-as-permissions) en la Guía del usuario de *IAM*.

Algunas AWS IoT Greengrass acciones (por ejemplo, algunas operaciones de lista) no se pueden realizar en un recurso específico. En dichos casos, debe utilizar solo el carácter comodín.

```
"Resource": "*"
```

Para especificar varios recursos ARNs en una sentencia, enumérelos entre corchetes (`[``]`) y sepárelos con comas, de la siguiente manera:

```
"Resource": [
  "resource-arn1",
  "resource-arn2",
  "resource-arn3"
]
```

Para obtener más información sobre los formatos ARN, consulte Nombres de [recursos de Amazon (ARNs) y espacios de nombres AWS de servicios](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) en. *Referencia general de Amazon Web Services*

### Claves de condición
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Condition` especifica cuándo se ejecutan las instrucciones en función de criterios definidos. Puede crear expresiones condicionales que utilizan [operadores de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tales como igual o menor que, para que la condición de la política coincida con los valores de la solicitud. Para ver todas las claves de condición AWS globales, consulte las claves de [contexto de condición AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

### Ejemplos
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Para ver ejemplos de políticas AWS IoT Greengrass basadas en la identidad, consulte. [Ejemplos de políticas basadas en la identidad para AWS IoT Greengrass](security_iam_id-based-policy-examples.md)

## Políticas basadas en recursos para AWS IoT Greengrass
<a name="security_iam_service-with-iam-resource-based-policies"></a>

AWS IoT Greengrass no admite políticas basadas en [recursos](security-iam.md#security_iam_access-manage-resource-based-policies).

## Listas de control de acceso () ACLs
<a name="security_iam_service-with-iam-acls"></a>

AWS IoT Greengrass no admite [ACLs](security-iam.md#security_iam_access-manage-acl).

## Autorización basada en AWS IoT Greengrass etiquetas
<a name="security_iam_service-with-iam-tags"></a>

Puede adjuntar etiquetas a AWS IoT Greengrass los recursos compatibles o pasarlas en una solicitud AWS IoT Greengrass. Para controlar el acceso utilizando etiquetas, debe proporcionar información de las etiquetas en el [elemento de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de una política utilizando las claves de condición `aws:ResourceTag/${TagKey}`, `aws:RequestTag/${TagKey}` o `aws:TagKeys`. Para obtener más información, consulte [Etiquete sus AWS IoT Greengrass Version 2 recursos](tag-resources.md).

## Funciones de IAM para AWS IoT Greengrass
<a name="security_iam_service-with-iam-roles"></a>

Un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) es una entidad de la Cuenta de AWS que dispone de permisos específicos.

### Usar credenciales temporales con AWS IoT Greengrass
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

Las credenciales temporales se utilizan para iniciar sesión con federación, adoptar un rol de IAM o adoptar un rol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen mediante una llamada a operaciones de la API de AWS STS , como [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) o [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html).

En el núcleo de Greengrass, las credenciales temporales para el [rol de dispositivo](device-service-role.md) están disponibles para los componentes de Greengrass. Si sus componentes usan el AWS SDK, no necesita agregar lógica para obtener las credenciales, ya que el AWS SDK lo hace por usted.

### Roles vinculados a servicios
<a name="security_iam_service-with-iam-roles-service-linked"></a>

AWS IoT Greengrass no admite funciones [vinculadas a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role).

### Roles de servicio
<a name="security_iam_service-with-iam-roles-service"></a>

Esta característica permite que un servicio asuma un [rol de servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role) en su nombre. Este rol permite que el servicio obtenga acceso a los recursos de otros servicios para completar una acción en su nombre. Los roles de servicio aparecen en su cuenta de IAM y son propiedad de la cuenta. Esto significa que un administrador de IAM puede cambiar los permisos de este rol. Sin embargo, hacerlo podría deteriorar la funcionalidad del servicio.

AWS IoT Greengrass los dispositivos principales utilizan una función de servicio para permitir que los componentes de Greengrass y las funciones de Lambda accedan a algunos de sus AWS recursos en su nombre. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

AWS IoT Greengrass utiliza un rol de servicio para acceder a algunos de sus AWS recursos en su nombre. Para obtener más información, consulte [Rol de servicio de Greengrass](greengrass-service-role.md).

# Ejemplos de políticas basadas en la identidad para AWS IoT Greengrass
<a name="security_iam_id-based-policy-examples"></a>

De forma predeterminada, los usuarios y los roles de IAM no tienen permiso para crear, ver ni modificar recursos de AWS IoT Greengrass . Tampoco pueden realizar tareas con la API Consola de administración de AWS AWS CLI, o AWS . Un administrador de IAM debe crear políticas de IAM que concedan permisos a los usuarios y a los roles para realizar operaciones de la API concretas en los recursos especificados que necesiten. El administrador debe asociar esas políticas a los usuarios o grupos de IAM que necesiten esos permisos.

## Prácticas recomendadas sobre las políticas
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Las políticas basadas en la identidad determinan si alguien puede crear AWS IoT Greengrass recursos de tu cuenta, acceder a ellos o eliminarlos. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:
+ **Comience con las políticas AWS administradas y avance hacia los permisos con privilegios mínimos: para empezar a conceder permisos** a sus usuarios y cargas de trabajo, utilice las *políticas AWS administradas* que otorgan permisos para muchos casos de uso comunes. Están disponibles en su. Cuenta de AWS Le recomendamos que reduzca aún más los permisos definiendo políticas administradas por el AWS cliente que sean específicas para sus casos de uso. Con el fin de obtener más información, consulte las [políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o las [políticas administradas por AWS para funciones de tarea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía de usuario de IAM*.
+ **Aplique permisos de privilegio mínimo**: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como *permisos de privilegios mínimos*. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*.
+ **Utilice condiciones en las políticas de IAM para restringir aún más el acceso**: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder el acceso a las acciones del servicio si se utilizan a través de una acción específica Servicio de AWS, por ejemplo CloudFormation. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.
+ **Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos**: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte [Validación de políticas con el Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) en la *Guía del usuario de IAM*.
+ **Requerir autenticación multifactor (MFA**): si tiene un escenario que requiere usuarios de IAM o un usuario raíz en Cuenta de AWS su cuenta, active la MFA para mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte [Acceso seguro a la API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) en la *Guía del usuario de IAM*.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Ejemplos de políticas
<a name="security_iam_id-based-policy-examples-list"></a>

En el ejemplo siguiente, las políticas definidas por el cliente conceden permisos para situaciones comunes.

**Topics**
+ [Cómo permitir a los usuarios consultar sus propios permisos](#security_iam_id-based-policy-examples-view-own-permissions)

Para obtener más información acerca de cómo crear una política basada en identidad de IAM con estos documentos de políticas de JSON de ejemplo, consulte [Creación de políticas en la pestaña JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) en la *Guía del usuario de IAM*.

### Cómo permitir a los usuarios consultar sus propios permisos
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para completar esta acción en la consola o mediante programación mediante la API o. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Autorizar a los dispositivos principales a interactuar con AWS los servicios
<a name="device-service-role"></a>

AWS IoT Greengrass los dispositivos principales utilizan el proveedor de AWS IoT Core credenciales para autorizar las llamadas a AWS los servicios. El proveedor de AWS IoT Core credenciales permite a los dispositivos utilizar sus certificados X.509 como identidad única del dispositivo para autenticar las solicitudes. AWS Esto elimina la necesidad de almacenar un identificador de clave de AWS acceso y una clave de acceso secreta en los dispositivos AWS IoT Greengrass principales. Para obtener más información, consulte [Autorizar llamadas directas a AWS los servicios](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) en la *Guía para AWS IoT Core desarrolladores*.

Al ejecutar el software AWS IoT Greengrass principal, puede optar por aprovisionar los AWS recursos que requiere el dispositivo principal. Esto incluye la función AWS Identity and Access Management (IAM) que asume su dispositivo principal a través del proveedor de AWS IoT Core credenciales. Utilice el `--provision true` argumento para configurar una función y políticas que permitan al dispositivo principal obtener AWS credenciales temporales. Este argumento también configura un alias de AWS IoT rol que apunta a este rol de IAM. Puede especificar el nombre del rol de IAM y el alias del rol que se van a AWS IoT utilizar. Si especifica `--provision true` sin estos otros parámetros de nombre, el dispositivo principal de Greengrass crea y utiliza los siguientes recursos predeterminados:
+ Rol de IAM: `GreengrassV2TokenExchangeRole`

  Este rol tiene una política denominada `GreengrassV2TokenExchangeRoleAccess` y una relación de confianza que permite a `credentials.iot.amazonaws.com` asumir el rol. La política incluye los permisos mínimos para el dispositivo principal.
**importante**  
Esta política no incluye el acceso a los archivos en los buckets de S3. Debe agregar permisos al rol para permitir que los dispositivos principales recuperen los artefactos de los componentes de los buckets de S3. Para obtener más información, consulte [Cómo permitir el acceso a los buckets de S3 para los artefactos del componente](#device-service-role-access-s3-bucket).
+ AWS IoT alias del rol: `GreengrassV2TokenExchangeRoleAlias`

  Este alias del rol hace referencia al rol de IAM.

Para obtener más información, consulte [Paso 3: Instalar el software AWS IoT Greengrass principal](install-greengrass-v2.md).

También puede establecer el alias del rol para un dispositivo principal existente. Para ello, configure el parámetro de configuración `iotRoleAlias` del [componente del núcleo de Greengrass](greengrass-nucleus-component.md).

Puede adquirir AWS credenciales temporales para este rol de IAM a fin de realizar AWS operaciones en sus componentes personalizados. Para obtener más información, consulte [Interacción con servicios de AWS](interact-with-aws-services.md).

**Topics**
+ [Permisos de rol de servicio para dispositivos principales](#device-service-role-permissions)
+ [Cómo permitir el acceso a los buckets de S3 para los artefactos del componente](#device-service-role-access-s3-bucket)

## Permisos de rol de servicio para dispositivos principales
<a name="device-service-role-permissions"></a>

El rol permite que el siguiente servicio asuma el rol:
+ `credentials.iot.amazonaws.com`

Si utilizas el software AWS IoT Greengrass Core para crear este rol, este utilizará la siguiente política de permisos para permitir que los dispositivos principales se conecten y envíen registros a AWS ellos. El nombre de la política se establece de forma predeterminada en el nombre del rol de IAM que termina en `Access`. Por ejemplo, si usa el nombre de rol de IAM predeterminado, el nombre de esta política es `GreengrassV2TokenExchangeRoleAccess`.

------
#### [ Greengrass nucleus v2.5.0 and later ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------
#### [ v2.4.x ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:DescribeCertificate",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------
#### [ Earlier than v2.4.0 ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:DescribeCertificate",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "iot:Connect",
        "iot:Publish",
        "iot:Subscribe",
        "iot:Receive",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------

## Cómo permitir el acceso a los buckets de S3 para los artefactos del componente
<a name="device-service-role-access-s3-bucket"></a>

El rol de dispositivo principal predeterminado no permite que los dispositivos principales accedan a los buckets de S3. Para implementar componentes que tienen artefactos en buckets de S3, debe agregar el permiso `s3:GetObject` que permita a los dispositivos principales descargar artefactos del componente. Puede agregar una nueva política al rol de dispositivo principal para conceder este permiso.

**Adición de una política que permita el acceso a los artefactos del componente en Amazon S3**

1. Cree un archivo llamado `component-artifact-policy.json` y copie el siguiente JSON en el archivo. Esta política permite el acceso a todos los archivos en un bucket de S3. Reemplace amzn-s3-demo-bucket por el nombre del bucket de S3 para permitir el acceso del dispositivo principal.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
     ]
   }
   ```

------

1. Ejecute el siguiente comando para crear la política del documento de política en `component-artifact-policy.json`.

------
#### [ Linux or Unix ]

   ```
   aws iam create-policy \
     --policy-name MyGreengrassV2ComponentArtifactPolicy \
     --policy-document file://component-artifact-policy.json
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam create-policy ^
     --policy-name MyGreengrassV2ComponentArtifactPolicy ^
     --policy-document file://component-artifact-policy.json
   ```

------
#### [ PowerShell ]

   ```
   aws iam create-policy `
     --policy-name MyGreengrassV2ComponentArtifactPolicy `
     --policy-document file://component-artifact-policy.json
   ```

------

   Copie la política del nombre de recurso de Amazon (ARN) de la política de los metadatos de salida. Utilice este ARN para asociar la política al rol del dispositivo principal en el siguiente paso.

1. Ejecute el siguiente comando para asociar la política al rol del dispositivo principal. *GreengrassV2TokenExchangeRole*Sustitúyalo por el nombre del rol que especificó al ejecutar el software AWS IoT Greengrass Core. Luego, sustituya el ARN de la política por el ARN del paso anterior.

------
#### [ Linux or Unix ]

   ```
   aws iam attach-role-policy \
     --role-name GreengrassV2TokenExchangeRole \
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam attach-role-policy ^
     --role-name GreengrassV2TokenExchangeRole ^
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------
#### [ PowerShell ]

   ```
   aws iam attach-role-policy `
     --role-name GreengrassV2TokenExchangeRole `
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------

   Si el comando no tiene ningún resultado, se ha realizado correctamente y su dispositivo principal puede acceder a los artefactos que cargue en este bucket de S3.

# Política de IAM mínima para que el instalador aprovisione recursos
<a name="provision-minimal-iam-policy"></a>

Al instalar el software AWS IoT Greengrass Core, puede aprovisionar AWS los recursos necesarios, como una AWS IoT cosa y una función de IAM para su dispositivo. También puede implementar herramientas de desarrollo local en el dispositivo. El instalador necesita AWS credenciales para poder realizar estas acciones en su ordenador Cuenta de AWS. Para obtener más información, consulte [Instalación del software AWS IoT Greengrass Core](install-greengrass-core-v2.md).

El siguiente ejemplo de política incluye el conjunto mínimo de acciones que el instalador necesita para aprovisionar estos recursos. Estos permisos son necesarios si se especifica el argumento `--provision` del instalador. *account-id*Sustitúyala por tu Cuenta de AWS ID y *GreengrassV2TokenExchangeRole* sustitúyela por el nombre de la función de intercambio de fichas que especifiques con el [argumento del `--tes-role-name` instalador](configure-installer.md).

**nota**  
La declaración de la política `DeployDevTools` solo es necesaria si se especifica el argumento del instalador `--deploy-dev-tools`.

------
#### [ Greengrass nucleus v2.5.0 and later ]

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateTokenExchangeRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:GetPolicy",
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
                "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
                "arn:aws:iam::aws:policy/GreengrassV2TokenExchangeRoleAccess"
            ]
        },
        {
            "Sid": "CreateIoTResources",
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateKeysAndCertificate",
                "iot:CreatePolicy",
                "iot:CreateRoleAlias",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:DescribeEndpoint",
                "iot:DescribeRoleAlias",
                "iot:DescribeThingGroup",
                "iot:GetPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeployDevTools",
            "Effect": "Allow",
            "Action": [
                "greengrass:CreateDeployment",
                "iot:CancelJob",
                "iot:CreateJob",
                "iot:DeleteThingShadow",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:GetThingShadow",
                "iot:UpdateJob",
                "iot:UpdateThingShadow"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ Earlier than v2.5.0 ]

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateTokenExchangeRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:GetPolicy",
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": [
            "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
    "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
                "arn:aws:iam::aws:policy/GreengrassV2TokenExchangeRoleAccess"
            ]
        },
        {
            "Sid": "CreateIoTResources",
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateKeysAndCertificate",
                "iot:CreatePolicy",
                "iot:CreateRoleAlias",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:DescribeEndpoint",
                "iot:DescribeRoleAlias",
                "iot:DescribeThingGroup",
                "iot:GetPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeployDevTools",
            "Effect": "Allow",
            "Action": [
                "greengrass:CreateDeployment",
                "iot:CancelJob",
                "iot:CreateJob",
                "iot:DeleteThingShadow",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:GetThingShadow",
                "iot:UpdateJob",
                "iot:UpdateThingShadow"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------

# Rol de servicio de Greengrass
<a name="greengrass-service-role"></a>

<a name="greengrass-service-role-intro"></a>La función de servicio de Greengrass es una función de servicio AWS Identity and Access Management (IAM) que autoriza el acceso AWS IoT Greengrass a los recursos de los AWS servicios en su nombre. Esta función permite verificar la identidad de AWS IoT Greengrass los dispositivos cliente y administrar la información de conectividad principal de los dispositivos.

**nota**  
AWS IoT Greengrass V1 también utiliza esta función para realizar tareas esenciales. Para obtener más información, consulte [Rol de servicio de Greengrass](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html) en la *Guía para desarrolladores de AWS IoT Greengrass V1 *.

Para permitir el acceso AWS IoT Greengrass a sus recursos, la función de servicio de Greengrass debe estar asociada a la suya Cuenta de AWS y especificarse AWS IoT Greengrass como entidad de confianza. El rol debe incluir la política [AWSGreengrassResourceAccessRolePolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy)administrada o una política personalizada que defina permisos equivalentes para las AWS IoT Greengrass funciones que utilice. AWS mantiene esta política, que define el conjunto de permisos que se AWS IoT Greengrass utilizan para acceder a AWS los recursos. Para obtener más información, consulte [AWS política gestionada: AWSGreengrass ResourceAccessRolePolicy](security-iam-aws-managed-policies.md#aws-managed-policies-AWSGreengrassResourceAccessRolePolicy).

Puedes reutilizar la misma función de servicio de Greengrass en todas partes Regiones de AWS, pero debes asociarla a tu cuenta en todos los Región de AWS lugares donde la utilices. AWS IoT Greengrass Si la función de servicio no está configurada en la versión actual Región de AWS, los dispositivos principales no pueden verificar los dispositivos cliente ni actualizar la información de conectividad.

En las siguientes secciones se describe cómo crear y administrar el rol de servicio de Greengrass con o. Consola de administración de AWS AWS CLI

**Topics**
+ [Administración del rol de servicio de Greengrass (consola)](#manage-greengrass-service-role-console)
+ [Administración del rol de servicio de Greengrass (CLI)](#manage-service-role-cli)
+ [Véase también](#service-role-see-also)

**nota**  
Además del rol de servicio que autoriza el acceso de nivel de servicio, puede asignar un *rol de intercambio de tokens* a los dispositivos principales de Greengrass. La función de intercambio de fichas es una función de IAM independiente que controla la forma en que los componentes de Greengrass y las funciones de Lambda del dispositivo principal pueden acceder a los servicios. AWS Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

## Administración del rol de servicio de Greengrass (consola)
<a name="manage-greengrass-service-role-console"></a>

La AWS IoT consola facilita la administración de su función de servicio de Greengrass. Por ejemplo, al configurar la detección de dispositivos de cliente para un dispositivo principal, la consola comprueba si su Cuenta de AWS está asociada a un rol de servicio de Greengrass en la Región de AWS actual. De lo contrario, la consola puede crear y configurar un rol de servicio por usted. Para obtener más información, consulte [Creación del rol de servicio de Greengrass (consola)](#create-greengrass-service-role-console).

Puede utilizar la consola de para las siguientes tareas de administración de roles:

**Topics**
+ [Buscar el rol de servicio de Greengrass (consola)](#get-greengrass-service-role-console)
+ [Creación del rol de servicio de Greengrass (consola)](#create-greengrass-service-role-console)
+ [Cambiar el rol de servicio de Greengrass (consola)](#update-greengrass-service-role-console)
+ [Desasociar el rol de servicio de Greengrass (consola)](#remove-greengrass-service-role-console)

**nota**  
El usuario que ha iniciado sesión en la consola debe tener permisos para ver, crear o cambiar el rol de servicio.

### Buscar el rol de servicio de Greengrass (consola)
<a name="get-greengrass-service-role-console"></a>

Siga los siguientes pasos para encontrar el rol de servicio que AWS IoT Greengrass utiliza en el actual Región de AWS.

1. <a name="open-iot-console"></a>Vaya a la [consola de AWS IoT](https://console.aws.amazon.com/iot).

1. <a name="open-iot-settings"></a>En el panel de navegación, seleccione **Configuración**.

1. Desplácese hasta la sección **Greengrass service role (Rol de servicio de Greengrass)** para ver el rol de servicio y sus políticas.

   Si no ve ningún rol de servicio, la consola puede crear o configurar uno por usted. Para obtener más información, consulte [Creación del rol de servicio de Greengrass](#create-greengrass-service-role-console).

### Creación del rol de servicio de Greengrass (consola)
<a name="create-greengrass-service-role-console"></a>

La consola puede crear y configurar un rol de servicio de Greengrass predeterminado por usted. Este rol incluye las siguientes propiedades.


| Propiedad | Valor | 
| --- | --- | 
| Name | Greengrass\$1ServiceRole | 
| Entidad de confianza | AWS service: greengrass | 
| Política | [AWSGreengrassResourceAccessRolePolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy) | 

**nota**  
Si crea este rol con el [script de configuración del dispositivo de AWS IoT Greengrass V1](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html), el nombre del rol es `GreengrassServiceRole_random-string`.

Al configurar la detección de dispositivos cliente para un dispositivo principal, la consola comprueba si una función de servicio de Greengrass está asociada a la suya Cuenta de AWS en la versión actual. Región de AWS De lo contrario, la consola le solicitará que permita AWS IoT Greengrass leer y escribir en AWS los servicios en su nombre.

Si concede permiso, la consola comprueba si existe un rol denominado `Greengrass_ServiceRole` en su Cuenta de AWS.
+ Si la función existe, la consola le asigna la función de servicio a la suya Cuenta de AWS en la actual. Región de AWS
+ Si el rol no existe, la consola crea un rol de servicio de Greengrass predeterminado y lo adjunta al tuyo Cuenta de AWS en el actual. Región de AWS

**nota**  
Si desea crear un rol de servicio con políticas de rol personalizadas, utilice la consola de IAM para crear o modificar el rol. Para obtener más información, consulte [Crear un rol para delegar permisos a un AWS servicio o Modificar un](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) [rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) en la Guía del usuario de *IAM*. Asegúrese de que el rol concede permisos equivalentes a la política administrada de `AWSGreengrassResourceAccessRolePolicy` para las características y recursos que utiliza. Le recomendamos que incluya también las claves de contexto de condición global `aws:SourceArn` y `aws:SourceAccount` en su política de confianza para ayudar a prevenir el problema de seguridad del *suplente confuso*. Las claves de contexto de condición restringen el acceso para permitir solo las solicitudes que provienen de la cuenta especificada y del espacio de trabajo de Greengrass. Para obtener más información sobre el problema del suplente confuso, consulte [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md).  
Si crea un rol de servicio, vuelva a la AWS IoT consola y asocie el rol al suyo Cuenta de AWS. Puede hacerlo en el **rol de servicio de Greengrass** en la página **Configuración**.

### Cambiar el rol de servicio de Greengrass (consola)
<a name="update-greengrass-service-role-console"></a>

Utilice el siguiente procedimiento para elegir una función de servicio de Greengrass diferente y asociarla a la suya Cuenta de AWS en la que esté seleccionada Región de AWS actualmente en la consola.

1. <a name="open-iot-console"></a>Vaya a la [consola de AWS IoT](https://console.aws.amazon.com/iot).

1. <a name="open-iot-settings"></a>En el panel de navegación, seleccione **Configuración**.

1. En **Rol de servicio de Greengrass**, seleccione **Elegir un rol diferente**.

   Se abre el cuadro de diálogo **Actualizar el rol de servicio de Greengrass** y muestra los roles de IAM Cuenta de AWS que se definen AWS IoT Greengrass como una entidad de confianza.

1. Elija el rol de servicio de Greengrass que desee asignar.

1. Elija **Adjuntar rol**.

### Desasociar el rol de servicio de Greengrass (consola)
<a name="remove-greengrass-service-role-console"></a>

Utilice el siguiente procedimiento para separar el rol de servicio de Greengrass de AWS su cuenta actual. Región de AWS Esto revoca los permisos de acceso AWS IoT Greengrass a AWS los servicios actuales. Región de AWS

**importante**  
La desasociación del rol de servicio podría interrumpir las operaciones activas.

1. <a name="open-iot-console"></a>Vaya a la [consola de AWS IoT](https://console.aws.amazon.com/iot).

1. <a name="open-iot-settings"></a>En el panel de navegación, seleccione **Configuración**.

1. En **Rol de servicio de Greengras**, seleccione **Desasociar rol**.

1. En el cuadro de diálogo de confirmación, elija **Desconectar**.

**nota**  
Si ya no necesita el rol, puede eliminarlo en la consola de IAM. Para obtener más información, consulte [Eliminación de roles o perfiles de instancia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html) en la *Guía del usuario de IAM*.  
Es posible que otras funciones te permitan acceder AWS IoT Greengrass a tus recursos. Para buscar todos los roles que permiten que AWS IoT Greengrass asuma los permisos en su nombre, en la consola de IAM, en la página **Roles**, busque los roles que incluyan **AWS service: greengrass** en la columna **Entidades de confianza**.

## Administración del rol de servicio de Greengrass (CLI)
<a name="manage-service-role-cli"></a>

En los siguientes procedimientos, asumimos que AWS Command Line Interface está instalado y configurado para usar su Cuenta de AWS. Para obtener más información, consulte [Instalar, actualizar y desinstalar la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) y [Configurar la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) en la *Guía del usuario de AWS Command Line Interface *.

Puede usarlo AWS CLI para las siguientes tareas de administración de roles:

**Topics**
+ [Obtener el rol de servicio de Greengrass (CLI)](#get-service-role)
+ [Creación del rol de servicio de Greengrass (CLI)](#create-service-role)
+ [Eliminar el rol de servicio de Greengrass (CLI)](#remove-service-role)

### Obtener el rol de servicio de Greengrass (CLI)
<a name="get-service-role"></a>

Utilice el procedimiento siguiente para descubrir si un rol de servicio de Greengrass está asociado a su Cuenta de AWS en una Región de AWS.
+ Obtenga el rol de servicio. *region*Reemplácelo por su Región de AWS (por ejemplo,`us-west-2`).

  ```
  aws greengrassv2 get-service-role-for-account --region region
  ```

  Si ya hay un rol de servicio de Greengrass asociado a su cuenta, la solicitud devuelve los siguientes metadatos de rol.

  ```
  {
    "associatedAt": "timestamp",
    "roleArn": "arn:aws:iam::account-id:role/path/role-name"
  }
  ```

  Si la solicitud no devuelve ningún metadato de rol, entonces debe crear el rol de servicio (si no existe) y asociarlo a su cuenta en la Región de AWS.

### Creación del rol de servicio de Greengrass (CLI)
<a name="create-service-role"></a>

Siga los pasos que se indican a continuación para crear un rol y asociarlo a su Cuenta de AWS.

**Para crear el rol de servicio mediante IAM**

1. Cree un rol con una política de confianza que AWS IoT Greengrass permita asumir el rol. Este ejemplo crea un rol denominado `Greengrass_ServiceRole`, pero puede utilizar un nombre distinto. Le recomendamos que incluya también las claves de contexto de condición global `aws:SourceArn` y `aws:SourceAccount` en su política de confianza para ayudar a prevenir el problema de seguridad del *suplente confuso*. Las claves de contexto de condición restringen el acceso para permitir solo las solicitudes que provienen de la cuenta especificada y del espacio de trabajo de Greengrass. Para obtener más información sobre el problema del suplente confuso, consulte [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md).

------
#### [ Linux or Unix ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "greengrass.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "ArnLike": {
             "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
           },
           "StringEquals": {
             "aws:SourceAccount": "account-id"
           }
         }
       }
     ]
   }'
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:greengrass:region:account-id:*\"},\"StringEquals\":{\"aws:SourceAccount\":\"account-id\"}}}]}"
   ```

------
#### [ PowerShell ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "greengrass.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "ArnLike": {
             "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
           },
           "StringEquals": {
             "aws:SourceAccount": "account-id"
           }
         }
       }
     ]
   }'
   ```

------

1. Copie el ARN del rol de los metadatos del rol en la salida. Puede utilizar el ARN para asociar el rol a su cuenta.

1. Asocie la política de `AWSGreengrassResourceAccessRolePolicy` al rol.

   ```
   aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
   ```

**Para asociar el rol de servicio a su Cuenta de AWS**
+ Asocie el rol a su cuenta. *role-arn*Sustitúyalo por el ARN del rol de servicio y *region* por el tuyo Región de AWS (por ejemplo,`us-west-2`).

  ```
  aws greengrassv2 associate-service-role-to-account --role-arn role-arn --region region
  ```

  Si se realiza correctamente, la solicitud devuelve la siguiente respuesta.

  ```
  {
    "associatedAt": "timestamp"
  }
  ```

### Eliminar el rol de servicio de Greengrass (CLI)
<a name="remove-service-role"></a>

Utilice los pasos siguientes para desasociar el rol de servicio de Greengrass de su Cuenta de AWS.
+ Desasocie el rol de servicio de su cuenta. *region*Sustitúyalo por su Región de AWS (por ejemplo,`us-west-2`).

  ```
  aws greengrassv2 disassociate-service-role-from-account --region region
  ```

  Si se ejecuta correctamente, se devuelve la siguiente respuesta.

  ```
  {
    "disassociatedAt": "timestamp"
  }
  ```
**nota**  
Deberías eliminar la función de servicio si no la utilizas en ninguna Región de AWS. Use primero [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html) para desasociar la política administrada `AWSGreengrassResourceAccessRolePolicy` del rol y, a continuación, utilice [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html) para eliminar el rol. Para obtener más información, consulte [Eliminación de roles o perfiles de instancia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html) en la *Guía del usuario de IAM*.

## Véase también
<a name="service-role-see-also"></a>
+ [Crear un rol para delegar permisos a un AWS servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la Guía del *usuario de IAM*
+ [Modificación de un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) en la *Guía del usuario de IAM*
+ [Eliminación de roles o perfiles de instancia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html) en la *Guía del usuario de IAM*
+ AWS IoT Greengrass comandos de la Referencia de *AWS CLI comandos*
  + [associate-service-role-to-cuenta](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/associate-service-role-to-account.html)
  + [disassociate-service-role-from-cuenta](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/disassociate-service-role-from-account.html)
  + [get-service-role-for-cuenta](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/get-service-role-for-account.html)
+ Comandos de IAM en la *Referencia de los comandos de AWS CLI *
  + [attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)
  + [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)
  + [delete-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html)
  + [delete-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html)

# AWS políticas gestionadas para AWS IoT Greengrass
<a name="security-iam-aws-managed-policies"></a>

Una política AWS administrada es una política independiente creada y administrada por AWS. AWS Las políticas administradas están diseñadas para proporcionar permisos para muchos casos de uso comunes, de modo que pueda empezar a asignar permisos a usuarios, grupos y funciones.

Ten en cuenta que es posible que las políticas AWS administradas no otorguen permisos con privilegios mínimos para tus casos de uso específicos, ya que están disponibles para que los usen todos los AWS clientes. Se recomienda definir [políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para sus casos de uso a fin de reducir aún más los permisos.

No puedes cambiar los permisos definidos en AWS las políticas administradas. Si AWS actualiza los permisos definidos en una política AWS administrada, la actualización afecta a todas las identidades principales (usuarios, grupos y roles) a las que está asociada la política. AWS es más probable que actualice una política AWS administrada cuando Servicio de AWS se lance una nueva o cuando estén disponibles nuevas operaciones de API para los servicios existentes.

Para obtener más información, consulte [Políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

**Topics**
+ [AWS política gestionada: AWSGreengrass FullAccess](#aws-managed-policies-AWSGreengrassFullAccess)
+ [AWS política gestionada: AWSGreengrass ReadOnlyAccess](#aws-managed-policies-AWSGreengrassReadOnlyAccess)
+ [AWS política gestionada: AWSGreengrass ResourceAccessRolePolicy](#aws-managed-policies-AWSGreengrassResourceAccessRolePolicy)
+ [AWS IoT Greengrass actualizaciones de las políticas AWS gestionadas](#aws-managed-policy-updates)

## AWS política gestionada: AWSGreengrass FullAccess
<a name="aws-managed-policies-AWSGreengrassFullAccess"></a>

Puede asociar la política `AWSGreengrassFullAccess` a las identidades de IAM.

Esta política otorga permisos administrativos que brindan a una entidad principal acceso completo a todas las acciones de AWS IoT Greengrass .

**Detalles de los permisos**

Esta política incluye los permisos siguientes:
+ `greengrass`: permite a las entidades principales obtener acceso completo a todas las acciones de AWS IoT Greengrass .

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## AWS política gestionada: AWSGreengrass ReadOnlyAccess
<a name="aws-managed-policies-AWSGreengrassReadOnlyAccess"></a>

Puede asociar la política `AWSGreengrassReadOnlyAccess` a las identidades de IAM.

Esta política concede permisos de solo lectura que permiten a una entidad principal visualizar, pero no modificar, la información de AWS IoT Greengrass. Por ejemplo, las entidades principales con estos permisos pueden ver la lista de componentes implementados en un dispositivo principal de Greengrass, pero no pueden crear una implementación para cambiar los componentes que se ejecutan en ese dispositivo.

**Detalles de los permisos**

Esta política incluye los permisos siguientes:
+ `greengrass`: permite a las entidades principales realizar acciones que devuelven una lista de elementos o detalles sobre un elemento. Esto incluye las operaciones de la API que comienzan con `List` o `Get`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "greengrass:List*",
                "greengrass:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## AWS política gestionada: AWSGreengrass ResourceAccessRolePolicy
<a name="aws-managed-policies-AWSGreengrassResourceAccessRolePolicy"></a>

Puede adjuntar la `AWSGreengrassResourceAccessRolePolicy` política a sus entidades de IAM. AWS IoT Greengrass también vincula esta política a un rol de servicio que le permite AWS IoT Greengrass realizar acciones en su nombre. Para obtener más información, consulte [Rol de servicio de Greengrass](greengrass-service-role.md).

Esta política otorga permisos administrativos que permiten AWS IoT Greengrass realizar tareas esenciales, como recuperar las funciones de Lambda, AWS IoT administrar las sombras de los dispositivos y verificar los dispositivos cliente de Greengrass.

**Detalles de los permisos**

Esta política incluye los siguientes permisos.
+ `greengrass`: administrar los recursos de Greengrass.
+ `iot`(`*Shadow`) — Gestione AWS IoT las sombras que tengan los siguientes identificadores especiales en sus nombres. Estos permisos son necesarios para que AWS IoT Greengrass pueda comunicarse con los dispositivos principales.
  + `*-gci`— AWS IoT Greengrass utiliza esta sombra para almacenar la información de conectividad de los dispositivos principales, de modo que los dispositivos cliente puedan detectar los dispositivos principales y conectarse a ellos.
  + `*-gcm`— AWS IoT Greengrass V1 usa esta sombra para notificar al dispositivo principal que el certificado de la autoridad de certificación (CA) del grupo Greengrass ha rotado.
  + `*-gda`— AWS IoT Greengrass V1 usa esta sombra para notificar al dispositivo principal acerca de una implementación.
  + `GG_*`: no se usa.
+ `iot`(`DescribeThing`y`DescribeCertificate`) — Recupera información sobre AWS IoT cosas y certificados. Estos permisos son necesarios para AWS IoT Greengrass poder verificar los dispositivos cliente que se conectan a un dispositivo principal. Para obtener más información, consulte [Interacción con dispositivos IoT locales](interact-with-local-iot-devices.md).
+ `lambda`— Recuperar información sobre AWS Lambda las funciones. Este permiso es necesario para que AWS IoT Greengrass V1 pueda implementar funciones Lambda en los núcleos de Greengrass. Para obtener más información, consulte [Ejecutar la función Lambda en el AWS IoT Greengrass núcleo de la Guía](https://docs.aws.amazon.com/greengrass/v1/developerguide/lambda-functions.html) para *desarrolladores de la AWS IoT Greengrass V1*.
+ `secretsmanager`— Recupera el valor de AWS Secrets Manager los secretos cuyos nombres comiencen por. `greengrass-` Este permiso es necesario para que la AWS IoT Greengrass versión 1 pueda implementar los secretos de Secrets Manager en los núcleos de Greengrass. Para obtener más información, consulte [Implementar secretos en el AWS IoT Greengrass núcleo en la](https://docs.aws.amazon.com/greengrass/v1/developerguide/secrets.html) *Guía para desarrolladores de AWS IoT Greengrass la versión 1*.
+ `s3`: recupera archivos y objetos de buckets de S3 cuyos nombres contengan `greengrass` o `sagemaker`. Estos permisos son necesarios para que la AWS IoT Greengrass versión 1 pueda implementar los recursos de aprendizaje automático que almacene en los depósitos de S3. Para obtener más información, consulte [los recursos de aprendizaje automático](https://docs.aws.amazon.com/greengrass/v1/developerguide/ml-inference.html#ml-resources) en la *Guía para desarrolladores de AWS IoT Greengrass la versión 1*.
+ `sagemaker`— Recuperar información sobre los modelos de inferencia de aprendizaje automático de Amazon SageMaker AI. Este permiso es necesario para que la AWS IoT Greengrass versión 1 pueda implementar modelos de aprendizaje automático en los núcleos de Greengrass. Para obtener más información, consulte [Realizar inferencias de aprendizaje automático en la Guía](https://docs.aws.amazon.com/greengrass/v1/developerguide/ml-inference.html) para *desarrolladores de la AWS IoT Greengrass versión 1*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowGreengrassAccessToShadows",
            "Action": [
                "iot:DeleteThingShadow",
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:*:*:thing/GG_*",
                "arn:aws:iot:*:*:thing/*-gcm",
                "arn:aws:iot:*:*:thing/*-gda",
                "arn:aws:iot:*:*:thing/*-gci"
            ]
        },
        {
            "Sid": "AllowGreengrassToDescribeThings",
            "Action": [
                "iot:DescribeThing"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:iot:*:*:thing/*"
        },
        {
            "Sid": "AllowGreengrassToDescribeCertificates",
            "Action": [
                "iot:DescribeCertificate"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:iot:*:*:cert/*"
        },
        {
            "Sid": "AllowGreengrassToCallGreengrassServices",
            "Action": [
                "greengrass:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Sid": "AllowGreengrassToGetLambdaFunctions",
            "Action": [
                "lambda:GetFunction",
                "lambda:GetFunctionConfiguration"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Sid": "AllowGreengrassToGetGreengrassSecrets",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:secretsmanager:*:*:secret:greengrass-*"
        },
        {
            "Sid": "AllowGreengrassAccessToS3Objects",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*Greengrass*",
                "arn:aws:s3:::*GreenGrass*",
                "arn:aws:s3:::*greengrass*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
            "Sid": "AllowGreengrassAccessToS3BucketLocation",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Sid": "AllowGreengrassAccessToSageMakerTrainingJobs",
            "Action": [
                "sagemaker:DescribeTrainingJob"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:sagemaker:*:*:training-job/*"
            ]
        }
    ]
}
```

------

## AWS IoT Greengrass actualizaciones de las políticas AWS gestionadas
<a name="aws-managed-policy-updates"></a>

Puede ver los detalles sobre las actualizaciones de las políticas AWS administradas AWS IoT Greengrass desde el momento en que este servicio comenzó a rastrear estos cambios. Para recibir alertas automáticas sobre los cambios en esta página, suscríbase a la fuente RSS de la [página de historial AWS IoT Greengrass de documentos](document-history.md) de la versión 2.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  AWS IoT Greengrass comenzó a rastrear los cambios  |  AWS IoT Greengrass comenzó a realizar un seguimiento de los cambios de sus políticas AWS gestionadas.  |  2 de julio de 2021  | 

# Prevención de la sustitución confusa entre servicios
<a name="cross-service-confused-deputy-prevention"></a>

El problema de la sustitución confusa es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En este caso AWS, la suplantación de identidad entre varios servicios puede provocar el confuso problema de un diputado. La suplantación entre servicios puede producirse cuando un servicio (el *servicio que lleva a cabo las llamadas*) llama a otro servicio (el *servicio al que se llama*). El servicio que lleva a cabo las llamadas se puedes manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que lo ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta. 

Se recomienda utilizar las claves de contexto de condición [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)y las claves de contexto en las políticas de recursos para limitar los permisos que se AWS IoT Greengrass otorgan a otro servicio al recurso. Si se utilizan ambas claves contextuales de condición global, el valor `aws:SourceAccount` y la cuenta del valor `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilicen en la misma declaración de política.

El valor de `aws:SourceArn` debe ser el recurso de cliente de Greengrass asociado a la solicitud `sts:AssumeRole`.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si especifica varios recursos, utiliza la clave de condición de contexto global `aws:SourceArn` con comodines (`*`) para las partes desconocidas del ARN. Por ejemplo, `arn:aws:greengrass::account-id:*`. 

Para ver un ejemplo de una política que usa las claves de contexto de condición global `aws:SourceArn` y `aws:SourceAccount`, consulte [Creación del rol de servicio de Greengrass](greengrass-service-role.md#create-service-role).

# Solución de problemas de identidad y acceso para AWS IoT Greengrass
<a name="security_iam_troubleshoot"></a>

Utilice la siguiente información como ayuda para diagnosticar y solucionar los problemas más comunes que pueden surgir al trabajar con un AWS IoT Greengrass IAM.

**Topics**
+ [No estoy autorizado a realizar ninguna acción en AWS IoT Greengrass](#security_iam_troubleshoot-no-permissions)
+ [No estoy autorizado a realizar lo siguiente: PassRole](#security_iam_troubleshoot-passrole)
+ [Soy administrador y quiero permitir el acceso de otras personas AWS IoT Greengrass](#security_iam_troubleshoot-admin-delegate)
+ [Quiero permitir que personas ajenas a mí accedan Cuenta de AWS a mis AWS IoT Greengrass recursos](#security_iam_troubleshoot-cross-account-access)

Para obtener ayuda general de solución de problemas, consulte [Solución de problemas AWS IoT Greengrass V2](troubleshooting.md).

## No estoy autorizado a realizar ninguna acción en AWS IoT Greengrass
<a name="security_iam_troubleshoot-no-permissions"></a>

Si recibe un error que indica que no está autorizado para llevar a cabo una acción, debe ponerse en contacto con su administrador para recibir ayuda. Su administrador es la persona que le facilitó su nombre de usuario y contraseña.

En el siguiente ejemplo, el error se produce cuando el usuario de IAM `mateojackson` intenta ver detalles sobre un dispositivo núcleo, pero no tiene permisos `greengrass:GetCoreDevice`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: greengrass:GetCoreDevice on resource: arn:aws:greengrass:us-west-2:123456789012:coreDevices/MyGreengrassCore
```

En este caso, Mateo pide a su administrador que actualice sus políticas de forma que pueda obtener acceso al recurso `arn:aws:greengrass:us-west-2:123456789012:coreDevices/MyGreengrassCore` mediante la acción `greengrass:GetCoreDevice`.

A continuación se indican problemas de IAM generales que puede encontrar al trabajar con AWS IoT Greengrass.

## No estoy autorizado a realizar lo siguiente: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si recibe un error que indica que no tiene autorización para realizar la acción `iam:PassRole`, las políticas deben actualizarse a fin de permitirle pasar un rol a AWS IoT Greengrass.

Algunas Servicios de AWS permiten transferir una función existente a ese servicio en lugar de crear una nueva función de servicio o una función vinculada a un servicio. Para ello, debe tener permisos para transferir la función al servicio.

En el siguiente ejemplo, el error se produce cuando un usuario de IAM denominado `marymajor` intenta utilizar la consola para realizar una acción en AWS IoT Greengrass. Sin embargo, la acción requiere que el servicio cuente con permisos que otorguen un rol de servicio. Mary no tiene permisos para transferir el rol al servicio.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

En este caso, las políticas de Mary se deben actualizar para permitirle realizar la acción `iam:PassRole`.

Si necesita ayuda, póngase en contacto con su AWS administrador. El administrador es la persona que le proporcionó las credenciales de inicio de sesión.

## Soy administrador y quiero permitir el acceso de otras personas AWS IoT Greengrass
<a name="security_iam_troubleshoot-admin-delegate"></a>

Para permitir el acceso de otras personas AWS IoT Greengrass, debes conceder permiso a las personas o aplicaciones que necesitan acceso. Si usa AWS IAM Identity Center para administrar las personas y las aplicaciones, debe asignar conjuntos de permisos a los usuarios o grupos para definir su nivel de acceso. Los conjuntos de permisos crean políticas de IAM y las asignan a los roles de IAM asociados a la persona o aplicación de forma automática. Para obtener más información, consulte la sección [Conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) en la *Guía del usuario de AWS IAM Identity Center *.

Si no utiliza IAM Identity Center, debe crear entidades de IAM (usuarios o roles) para las personas o aplicaciones que necesitan acceso. A continuación, debe asociar una política a la entidad que le conceda los permisos correctos en AWS IoT Greengrass. Una vez concedidos los permisos, proporcione las credenciales al usuario o al desarrollador de la aplicación. Utilizarán esas credenciales para acceder a AWS. Para obtener más información sobre la creación de usuarios, grupos, políticas y permisos de IAM, consulte [Identidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) y [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*.

## Quiero permitir que personas ajenas a mí accedan Cuenta de AWS a mis AWS IoT Greengrass recursos
<a name="security_iam_troubleshoot-cross-account-access"></a>

Puede crear una función de IAM que los usuarios de otras cuentas o personas ajenas a su organización puedan utilizar para acceder a sus AWS recursos. Puede especificar una persona de confianza para que asuma el rol. Para obtener más información, consulte [Proporcionar acceso a un usuario de IAM en otro Cuenta de AWS que sea de su](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) propiedad y [Proporcionar acceso a Cuenta de AWS un usuario de IAM que sea propiedad de terceros](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) en la Guía del usuario de *IAM*.

AWS IoT Greengrass no admite el acceso entre cuentas en función de políticas basadas en recursos o listas de control de acceso (). ACLs

# Cómo permitir el tráfico del dispositivo a través de un proxy o firewall
<a name="allow-device-traffic"></a>

Los dispositivos principales y los componentes de Greengrass realizan solicitudes salientes a AWS servicios y otros sitios web. Como medida de seguridad, puede limitar el tráfico saliente a una pequeña variedad de puntos de conexión y puertos. Puede usar la siguiente información sobre los puntos de conexión y los puertos para limitar el tráfico de los dispositivos a través de un proxy, un firewall o un [grupo de seguridad de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html). Para obtener más información acerca de cómo configurar un dispositivo principal para usar un proxy, consulte [Realizar la conexión en el puerto 443 o a través de un proxy de red](configure-greengrass-core-v2.md#configure-alpn-network-proxy).

**Topics**
+ [Puntos de conexión para el funcionamiento básico](#core-endpoints)
+ [Puntos de conexión para la instalación con aprovisionamiento automático](#automatic-provisioning-endpoints)
+ [Puntos finales para los componentes AWS proporcionados](#public-component-endpoints)

## Puntos de conexión para el funcionamiento básico
<a name="core-endpoints"></a>

Los dispositivos principales de Greengrass usan los siguientes puntos de conexión y puertos para su funcionamiento básico.

### AWS IoT Recupere los puntos finales
<a name="retrieve-iot-endpoints"></a>

Obtenga los AWS IoT puntos finales que desee y guárdelos para usarlos más adelante. Cuenta de AWS El dispositivo usa estos puntos de conexión para conectarse a AWS IoT. Haga lo siguiente:

1. Obtenga el punto final AWS IoT de datos para su. Cuenta de AWS

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Obtenga el punto final de AWS IoT credenciales para su Cuenta de AWS.

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   }
   ```


| punto de enlace | Puerto | Obligatorio | Description (Descripción) | 
| --- | --- | --- | --- | 
|  `greengrass-ats.iot.region.amazonaws.com`  | 8443 o 443 | Sí |  Se usa para las operaciones del plano de datos, como la instalación de implementaciones y el trabajo con dispositivos de cliente.  | 
|  `device-data-prefix-ats.iot.region.amazonaws.com`  |  MQTT: 8883 o 443 HTTPS: 8443 o 443  | Sí |  Se usa para las operaciones del plano de datos en la administración de dispositivos, como la comunicación MQTT y la sincronización de sombras con AWS IoT Core.  | 
|  `device-credentials-prefix.credentials.iot.region.amazonaws.com`  | 443 | Sí |  Se utiliza para adquirir AWS credenciales, que el dispositivo principal utiliza para descargar artefactos de componentes de Amazon S3 y realizar otras operaciones. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).  | 
|  `*.s3.amazonaws.com` `*.s3.region.amazonaws.com`  | 443 | Sí |  Se usa para las implementaciones. Este formato incluye el carácter `*`, porque los prefijos del punto de conexión se controlan internamente y pueden cambiar en cualquier momento.  | 
|  `data.iot.region.amazonaws.com`  | 443 | No |  Es obligatorio si el dispositivo principal ejecuta una versión del [núcleo de Greengrass](greengrass-nucleus-component.md) anterior a la versión 2.4.0 y está configurado para usar un proxy de red. El dispositivo principal utiliza este punto final para la comunicación MQTT AWS IoT Core cuando se encuentra detrás de un proxy. Para obtener más información, consulte [Configuración de un proxy de red](configure-greengrass-core-v2.md#configure-network-proxy).  | 

## Puntos de conexión para la instalación con aprovisionamiento automático
<a name="automatic-provisioning-endpoints"></a>

Los dispositivos principales de Greengrass utilizan los siguientes puntos finales y puertos al [instalar el software AWS IoT Greengrass Core con aprovisionamiento automático](quick-installation.md) de recursos.


| punto de enlace | Puerto | Obligatorio | Description (Descripción) | 
| --- | --- | --- | --- | 
|  `iot.region.amazonaws.com`  | 443 | Sí |  Se utiliza para crear AWS IoT recursos y recuperar información sobre los recursos existentes. AWS IoT   | 
|  `iam.amazonaws.com`  | 443 | Sí |  Se usa para crear recursos de IAM y recuperar información sobre los recursos de IAM existentes.  | 
|  `sts.region.amazonaws.com`  | 443 | Sí |  Se utiliza para obtener el ID de su Cuenta de AWS.  | 
|  `greengrass.region.amazonaws.com`  | 443 | No |  Es obligatorio si usa el argumento `--deploy-dev-tools` para implementar el componente de la CLI de Greengrass en el dispositivo principal.  | 

## Puntos finales para los componentes AWS proporcionados
<a name="public-component-endpoints"></a>

Los dispositivos principales de Greengrass usan puntos de conexión adicionales en función de los componentes de software que ejecuten. Puedes encontrar los puntos finales que requiere cada componente AWS proporcionado en la sección de **requisitos** de la página de cada componente de esta guía para desarrolladores. Para obtener más información, consulte [Componentes proporcionados por AWS](public-components.md).

# Validación de conformidad en AWS IoT Greengrass
<a name="compliance-validation"></a>

Para saber si un Servicio de AWS está incluido en el ámbito de programas de conformidad específicos, consulte [Servicios de AWS incluidos por programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/) y escoja el programa de conformidad que le interese. Para obtener información general, consulte [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/).

Puedes descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Su responsabilidad de conformidad al utilizar Servicios de AWS se determina en función de la confidencialidad de los datos, los objetivos de conformidad de su empresa, así como de la legislación y los reglamentos aplicables. Para obtener más información sobre la responsabilidad de conformidad al usar Servicios de AWS, consulte la [Documentación de seguridad de AWS](https://docs.aws.amazon.com/security/).

# Puntos de conexión de FIPS
<a name="FIPS"></a>

AWS IoT Greengrass admite el uso de terminales FIPS ([estándar federal de procesamiento de información (FIPS) 140-2)](https://aws.amazon.com/compliance/fips/). Cuando el modo FIPS está habilitado, todos los flujos de datos, incluidos los protocolos HTTP y MQTT, a los servicios de Nube de AWS deben invocar y establecer conexiones con los puntos de conexión compatibles con FIPS correspondientes ([FIPS: Amazon Web Services (AWS)](https://aws.amazon.com/compliance/fips/)).

Las comunicaciones MQTT AWS IoT utilizarán el punto final FIPS del plano de datos de IoT ([Conectarse a puntos finales AWS IoT FIPS - AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-fips.html#iot-connect-fips-data)) y la biblioteca criptográfica AWS aws-lc, desarrollada y compatible con FIPS.

Para las comunicaciones HTTP en Greengrass:
+ En el caso de los componentes core y plugin, todos los clientes HTTP del SDK se configuran con puntos de enlace FIPS; para ello, se establece la propiedad del sistema en true; AWS\$1USE\$1FIPS\$1ENDPOINT 
+ En el caso de los componentes genéricos, todos los componentes comienzan con la propiedad del sistema AWS\$1USE\$1FIPS\$1ENDPOINT establecida en true. Este proceso garantiza que los clientes HTTP de SDK usados por estos componentes genéricos envíen solicitudes a los puntos de conexión compatibles con FIPS.

**nota**  
En el caso del administrador de flujos, Nucleus pasa la variable de entorno AWS\$1GG \$1FIPS\$1MODE. Esta variable de entorno permite a los clientes HTTP usados en el administrador de flujos identificar y conectarse al punto de conexión compatible con FIPS correspondiente.

AWS IoT Greengrass ofrece dos métodos para habilitar el modo FIPS: aprovisionamiento e implementación. Para activar el modo FIPS, debe establecer el parámetro de configuración en true. `fipsMode` A continuación, Nucleus establece la propiedad AWS\$1USE\$1FIPS\$1ENDPOINT del sistema en true y la propaga como una variable de entorno a todos los demás componentes. Además, AWS IoT Greengrass descargará un certificado de CA raíz (CA3) y lo anexará al archivo RootCA.pem (o .pem) existente. AmazonRoot CA1 Si habilita FIPS mediante una nueva implementación, el núcleo se reiniciará para garantizar que la propiedad del sistema surta efecto después de habilitar el modo FIPS.

 Además de configurar el parámetro `fipsMode`, también debe configurar los parámetros `iotDataEndpoint`, `iotCredEndpoint` y `greengrassDataEndpoint`. Para obtener más información, consulte la documentación relevante a continuación.

## Habilitación de los puntos de conexión de FIPS con la implementación
<a name="FIPS-deployment"></a>

Obtenga sus AWS IoT Cuenta de AWS puntos de conexión y guárdelos para usarlos más adelante. El dispositivo usa estos puntos de conexión para conectarse a AWS IoT. Se requieren dos puntos de conexión, el `iotDataEndpoint` y el `iotCredEndpoint`. Haga lo siguiente:

1. Obtenga el punto de conexión de datos de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de datos FIPS para usted Cuenta de AWS debería tener este aspecto: *data.iot-fips.us-west-2.amazonaws.com*

1. Obtenga el punto de conexión de las credenciales de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de sus credenciales FIPS Cuenta de AWS debería tener este aspecto: *data.credentials.iot-fips.us-west-2.amazonaws.com*

A continuación, para habilitar el FIPS con una implementación, debe aplicar la siguiente configuración al núcleo. La configuración que se va a combinar en la implementación es la siguiente.

------
#### [ Console ]

**Configuración de combinación**  

```
{
  "fipsMode": "true",
  "iotDataEndpoint": "data.iot-fips.us-west-2.amazonaws.com",
  "greengrassDataPlaneEndpoint": "iotData",
  "iotCredEndpoint": "data.credentials.iot-fips.us-west-2.amazonaws.com"
}
```

------
#### [ AWS CLI ]

El siguiente comando crea una implementación a un dispositivo principal.

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment.json
```

El archivo `dashboard-deployment.json` contiene el siguiente documento JSON.

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "aws.greengrass.Nucleus": {
      "componentVersion": "2.13.0",
      "configurationUpdate": {
        "merge":{\"fipsMode\":\"true\",\"iotDataEndpoint\":\"data.iot-fips.us-west-2.amazonaws.com\",\"greengrassDataPlaneEndpoint\":\"iotData\",\"iotCredEndpoint\":\"data.credentials.iot-fips.us-west-2.amazonaws.com\"}"
      }
    }
  }
}
```

------
#### [ Greengrass CLI ]

El siguiente comando de la [CLI de Greengrass](greengrass-cli-component.md) crea una implementación local en un dispositivo principal.

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "aws.greengrass.Nucleus=2.13.0" \
  --update-config dashboard-configuration.json
```

El archivo `dashboard-configuration.json` contiene el siguiente documento JSON.

```
{
  "aws.greengrass.Nucleus": {
    "MERGE": {
       "fipsMode": "true",
       "iotDataEndpoint": "data.iot-fips.us-west-2.amazonaws.com",
       "greengrassDataPlaneEndpoint": "iotData",
       "iotCredEndpoint": "data.credentials.iot-fips.us-west-2.amazonaws.com"

    }
  }
}
```

------

## Instale el núcleo con puntos de conexión de FIPS con aprovisionamiento manual de recursos
<a name="FIPS-manual-installation"></a>

Aprovisione manualmente AWS los recursos para los dispositivos AWS IoT Greengrass V2 principales con puntos finales FIPS

**importante**  <a name="install-greengrass-core-requirements-note"></a>
Antes de descargar el software AWS IoT Greengrass Core, compruebe que su dispositivo principal cumpla los [requisitos](greengrass-nucleus-component.md#greengrass-v2-requirements) para instalar y ejecutar el software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Recupere los puntos finales AWS IoT](#w2ab1c58c44c23b9)
+ [Crea cualquier cosa AWS IoT](#create-iot-thing)
+ [Creación del certificado del objeto](#create-thing-certificate-fips)
+ [Creación de un rol de intercambio de token](#create-token-exchange-role)
+ [Descarga de certificados al dispositivo](#download-thing-certificates)
+ [Configuración del entorno del dispositivo](#set-up-device-environment)
+ [Descargue el software AWS IoT Greengrass principal](#download-greengrass-core-v2)
+ [Instale el software principal AWS IoT Greengrass](#run-greengrass-core-v2-installer-manual-fips)

### Recupere los puntos finales AWS IoT
<a name="w2ab1c58c44c23b9"></a>

Obtenga sus AWS IoT Cuenta de AWS puntos finales y guárdelos para usarlos más tarde. El dispositivo usa estos puntos de conexión para conectarse a AWS IoT. Se requieren dos puntos de conexión, el `iotDataEndpoint` y el `iotCredEndpoint`. Haga lo siguiente:

1. Obtenga el punto de conexión de datos de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de datos FIPS para usted Cuenta de AWS debería tener este aspecto: *data.iot-fips.us-west-2.amazonaws.com*

1. Obtenga el punto de conexión de las credenciales de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de sus credenciales FIPS Cuenta de AWS debería tener este aspecto: *data.credentials.iot-fips.us-west-2.amazonaws.com*

### Crea cualquier cosa AWS IoT
<a name="create-iot-thing"></a>

AWS IoT *las cosas* representan dispositivos y entidades lógicas a las que se conectan AWS IoT. Los dispositivos principales de Greengrass son AWS IoT cosas. Cuando registras un dispositivo como una AWS IoT cosa, ese dispositivo puede usar un certificado digital para autenticarse. AWS

En esta sección, crearás AWS IoT algo que represente tu dispositivo.

**Para crear cualquier AWS IoT cosa**

1. Crea cualquier AWS IoT cosa para tu dispositivo. En su equipo de desarrollo, ejecute el siguiente comando.
   + *MyGreengrassCore*Sustitúyalo por el nombre de la cosa a utilizar. Este nombre también es el nombre de su dispositivo principal de Greengrass.
**nota**  <a name="install-argument-thing-name-constraint"></a>
El nombre del objeto no puede contener dos puntos (`:`).

   ```
   aws iot create-thing --thing-name MyGreengrassCore
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "thingName": "MyGreengrassCore",
     "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
     "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42"
   }
   ```

1. (Opcional) Añada la AWS IoT cosa a un grupo de cosas nuevo o existente. Los grupos de objetos se usan para administrar las flotas de dispositivos principales de Greengrass. Al implementar componentes de software en sus dispositivos, puede dirigirlos a dispositivos individuales o a grupos de dispositivos. Puede agregar un dispositivo a un grupo de objetos con una implementación activa de Greengrass para implementar los componentes de software de ese grupo de objetos en el dispositivo. Haga lo siguiente:

   1. (Opcional) Cree un grupo de AWS IoT cosas.
      + *MyGreengrassCoreGroup*Sustitúyalo por el nombre del grupo de cosas que desee crear.
**nota**  <a name="install-argument-thing-group-name-constraint"></a>
El nombre del grupo de objetos no puede contener dos puntos (`:`).

      ```
      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "thingGroupName": "MyGreengrassCoreGroup",
        "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup",
        "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa"
      }
      ```

   1. Añada la AWS IoT cosa a un grupo de cosas.
      + *MyGreengrassCore*Sustitúyala por el nombre de la AWS IoT cosa.
      + *MyGreengrassCoreGroup*Sustitúyalo por el nombre del grupo de cosas.

      ```
      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup
      ```

      El comando no tiene ningún resultado si la solicitud se realiza correctamente.

### Creación del certificado del objeto
<a name="create-thing-certificate-fips"></a>

<a name="create-thing-certificate-intro-1"></a>Al registrar un dispositivo como una AWS IoT cosa, ese dispositivo puede utilizar un certificado digital para autenticarse AWS. Este certificado permite que el dispositivo se comunique con AWS IoT y AWS IoT Greengrass.

<a name="create-thing-certificate-intro-2"></a>En esta sección, puede crear y descargar certificados que el dispositivo puede usar para conectarse a AWS.

<a name="create-thing-certificate-intro-3"></a>Si desea configurar el software AWS IoT Greengrass principal para que utilice un módulo de seguridad de hardware (HSM) para almacenar de forma segura la clave privada y el certificado, siga los pasos para crear el certificado a partir de una clave privada de un HSM. De lo contrario, siga los pasos para crear el certificado y la clave privada en el AWS IoT servicio. La característica de seguridad de hardware solo está disponible en dispositivos Linux. Para obtener más información sobre la seguridad del hardware y los requisitos para su uso, consulte [Integración de la seguridad de hardware](hardware-security.md).

#### Cree el certificado y la clave privada en el AWS IoT servicio
<a name="create-thing-certificate-cloud"></a><a name="create-thing-certificate-cloud-steps"></a>

**Creación del certificado del objeto**

1. Crea una carpeta donde descargues los certificados de la AWS IoT cosa.

   ```
   mkdir greengrass-v2-certs
   ```

1. Crea y descarga los certificados de la AWS IoT cosa.

   ```
   aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----",
     "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\
   MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\
   MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\
   59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\
   hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\
   FQIDAQAB\
   -----END PUBLIC KEY-----\
   ",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\
   key omitted for security reasons\
   -----END RSA PRIVATE KEY-----\
   "
     }
   }
   ```

   Guarde el nombre de recurso de Amazon (ARN) del certificado para usarlo para configurar el certificado más adelante.

#### Creación del certificado a partir de una clave privada en un HSM
<a name="create-thing-certificate-hardware-security"></a>

**nota**  
Esta función está disponible para la versión 2.5.3 y versiones posteriores del componente núcleo de [Greengrass](greengrass-nucleus-component.md). AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows. 

**Creación del certificado del objeto**

1. En el dispositivo principal, inicialice un token PKCS\$111 en el HSM y genere una clave privada. La clave privada debe ser una clave RSA con un tamaño de clave RSA-2048 (o mayor) o una clave ECC.
**nota**  <a name="hardware-security-module-requirements-key-notes"></a>
Para utilizar un módulo de seguridad de hardware con claves ECC, debe utilizar la versión del [núcleo de Greengrass](greengrass-nucleus-component.md) 2.5.6 o posterior.  
Para usar un módulo de seguridad de hardware y el [administrador de secretos](secret-manager-component.md), debe usar un módulo de seguridad de hardware con claves RSA.

   Consulte la documentación de su HSM para obtener información sobre cómo inicializar el token y generar la clave privada. Si su HSM admite objetos IDs, especifique un ID de objeto al generar la clave privada. Guarde el ID de ranura, el PIN de usuario, la etiqueta del objeto y el ID del objeto (si su HSM utiliza alguno) que especifique al inicializar el token y generar la clave privada. Estos valores se utilizan más adelante cuando se importa el certificado de la cosa al HSM y se configura el software AWS IoT Greengrass principal.

1. Cree una solicitud de firma de certificado (CSR) de la clave privada. AWS IoT usa esta CSR para crear un certificado de objetos para la clave privada que usted generó en el HSM. Para obtener información sobre cómo crear una CSR de la clave privada, consulte la documentación de su HSM. La CSR es un archivo, como `iotdevicekey.csr`.

1. Copie la CSR del dispositivo a su computadora de desarrollo. Si SSH y SCP están habilitados en la computadora de desarrollo y en el dispositivo, puede utilizar el comando `scp` de la computadora de desarrollo para transferir la CSR. *device-ip-address*Sustitúyalo por la dirección IP del dispositivo y *\$1/iotdevicekey.csr* sustitúyalo por la ruta al archivo CSR del dispositivo.

   ```
   scp device-ip-address:~/iotdevicekey.csr iotdevicekey.csr
   ```

1. En tu ordenador de desarrollo, crea una carpeta en la que descargues el certificado del dispositivo AWS IoT .

   ```
   mkdir greengrass-v2-certs
   ```

1. Use el archivo CSR para crear y descargar el certificado para el objeto AWS IoT en su computadora de desarrollo.

   ```
   aws iot create-certificate-from-csr --set-as-active --certificate-signing-request=file://iotdevicekey.csr --certificate-pem-outfile greengrass-v2-certs/device.pem.crt
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----"
   }
   ```

   Guarde el ARN del certificado para usarlo más adelante para configurarlo.

A continuación, configura el certificado de la cosa. Para obtener más información, consulte [Configuración del certificado del objeto](manual-installation.md#configure-thing-certificate).

### Creación de un rol de intercambio de token
<a name="create-token-exchange-role"></a>

<a name="installation-create-token-exchange-role-intro"></a>Los dispositivos principales de Greengrass utilizan una función de servicio de IAM, denominada función de *intercambio de fichas*, para autorizar las llamadas a los servicios. AWS El dispositivo utiliza el proveedor de AWS IoT credenciales para obtener AWS credenciales temporales para esta función, lo que permite al dispositivo interactuar con Amazon Logs AWS IoT, enviar registros a Amazon CloudWatch Logs y descargar artefactos de componentes personalizados de Amazon S3. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

<a name="installation-create-token-exchange-role-alias-intro"></a>Se utiliza un *alias de AWS IoT rol* para configurar el rol de intercambio de fichas para los dispositivos principales de Greengrass. Los alias de rol le permiten cambiar el rol de intercambio de token de un dispositivo, pero mantener la configuración del dispositivo igual. Para obtener más información, consulte [Autorización de llamadas a los servicios de AWS](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) en la *Guía para desarrolladores de AWS IoT Core *.

En esta sección, creará un rol de IAM de intercambio de tokens y un alias de AWS IoT rol que apunte al rol. Si ya ha configurado un dispositivo principal de Greengrass, puede usar su rol de intercambio de token y su alias de rol en lugar de crear otros nuevos. A continuación, configure el objeto AWS IoT del dispositivo para que use ese rol y ese alias.

**Creación de un rol de IAM de intercambio de token**

1. <a name="create-token-exchange-role-create-iam-role"></a>Creación de un rol de IAM que su dispositivo puede usar como rol de intercambio de token. Haga lo siguiente:

   1. Creación de un archivo que contenga el documento de política de confianza que requiere el rol de intercambio de token.

      <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      ```
      nano device-role-trust-policy.json
      ```

      Copie el siguiente JSON en el archivo.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "credentials.iot.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. Creación del rol de intercambio de token con el documento de política de confianza.
      + *GreengrassV2TokenExchangeRole*Sustitúyalo por el nombre del rol de IAM que se va a crear.

      ```
      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "Role": {
          "Path": "/",
          "RoleName": "GreengrassV2TokenExchangeRole",
          "RoleId": "AROAZ2YMUHYHK5OKM77FB",
          "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
          "CreateDate": "2021-02-06T00:13:29+00:00",
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": "credentials.iot.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
              }
            ]
          }
        }
      ```

   1. Creación de un archivo que contenga el documento de política de acceso que requiere el rol de intercambio de token.

      <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      ```
      nano device-role-access-policy.json
      ```

      Copie el siguiente JSON en el archivo.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "s3:GetBucketLocation"
            ],
            "Resource": "*"
          }
        ]
      }
      ```
**nota**  
Esta política de acceso no permite el acceso a los artefactos de componentes en los buckets de S3. Para implementar componentes personalizados que definan artefactos en Amazon S3, debe agregar permisos al rol para permitir que su dispositivo principal recupere artefactos de componentes. Para obtener más información, consulte [Cómo permitir el acceso a los buckets de S3 para los artefactos del componente](device-service-role.md#device-service-role-access-s3-bucket).  
Si aún no tiene un bucket de S3 para los artefactos de los componentes, puede agregar estos permisos más adelante, después de crear un bucket.

   1. Creación de la política de IAM a partir del documento de política.
      + *GreengrassV2TokenExchangeRoleAccess*Sustitúyalo por el nombre de la política de IAM que se va a crear.

      ```
      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "Policy": {
          "PolicyName": "GreengrassV2TokenExchangeRoleAccess",
          "PolicyId": "ANPAZ2YMUHYHACI7C5Z66",
          "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
          "Path": "/",
          "DefaultVersionId": "v1",
          "AttachmentCount": 0,
          "PermissionsBoundaryUsageCount": 0,
          "IsAttachable": true,
          "CreateDate": "2021-02-06T00:37:17+00:00",
          "UpdateDate": "2021-02-06T00:37:17+00:00"
        }
      }
      ```

   1. Adjunte la política de IAM al rol de intercambio de token.
      + Reemplace *GreengrassV2TokenExchangeRole* por el nombre del rol de IAM.
      + Reemplace el ARN de la política por el ARN de la política de IAM que creó en el paso anterior.

      ```
      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
      ```

      El comando no tiene ningún resultado si la solicitud se realiza correctamente.

1. <a name="create-token-exchange-role-create-iot-role-alias"></a>Cree un alias de AWS IoT rol que apunte al rol de intercambio de fichas.
   + *GreengrassCoreTokenExchangeRoleAlias*Sustitúyalo por el nombre del alias del rol que se va a crear.
   + Reemplace el ARN del rol por el ARN del rol de IAM que creó en el paso anterior.

   ```
   aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
   ```

   Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

   ```
   {
     "roleAlias": "GreengrassCoreTokenExchangeRoleAlias",
     "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
   }
   ```
**nota**  
Para crear un alias de rol, debe tener el permiso para transferir el rol de IAM de intercambio de token a AWS IoT. Si recibe un mensaje de error al intentar crear un alias de rol, compruebe que el AWS usuario tiene este permiso. Para obtener más información, consulte [Conceder permisos a un usuario para transferir un rol a un AWS servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) en la *Guía del AWS Identity and Access Management usuario*.

1. Cree y adjunte una AWS IoT política que permita a su dispositivo principal de Greengrass utilizar el alias del rol para asumir el rol de intercambio de fichas. Si ya ha configurado un dispositivo principal de Greengrass, puede adjuntar su AWS IoT política de alias de rol en lugar de crear una nueva. Haga lo siguiente:

   1. (Opcional) Cree un archivo que contenga el documento AWS IoT de política que requiere el alias del rol.

      <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      ```
      nano greengrass-v2-iot-role-alias-policy.json
      ```

      Copie el siguiente JSON en el archivo.
      + Reemplace el ARN del recurso por el ARN del alias de rol.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:AssumeRoleWithCertificate",
            "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
          }
        ]
      }
      ```

   1. Cree una AWS IoT política a partir del documento de política.
      + *GreengrassCoreTokenExchangeRoleAliasPolicy*Sustitúyala por el nombre de la AWS IoT política que se va a crear.

      ```
      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyDocument": "{
          \\"Version\\":\\"2012-10-17		 	 	 \\",
          \\"Statement\\": [
            {
              \\"Effect\\": \\"Allow\\",
              \\"Action\\": \\"iot:AssumeRoleWithCertificate\\",
              \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\"
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

   1. Adjunta la AWS IoT política al certificado de la AWS IoT cosa.
      + *GreengrassCoreTokenExchangeRoleAliasPolicy*Sustitúyala por el nombre de la AWS IoT política de alias del rol.
      + Reemplace el ARN de destino por el ARN del certificado de su objeto AWS IoT .

      ```
      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
      ```

      El comando no tiene ningún resultado si la solicitud se realiza correctamente.

### Descarga de certificados al dispositivo
<a name="download-thing-certificates"></a>

Anteriormente, descargó el certificado de su dispositivo en su computadora de desarrollo. En esta sección, copie el certificado en el dispositivo principal para configurar el dispositivo con los certificados que usa para conectarse a AWS IoT. También descargue el certificado de la autoridad del certificado raíz (CA) de Amazon. Si usa un HSM, también importe el archivo de certificado al HSM en esta sección.
+ Si anteriormente creó el elemento certificado y clave privada en el AWS IoT servicio, siga los pasos para descargar los certificados con la clave privada y los archivos de certificado.
+ Si anteriormente creó el certificado del objeto de una clave privada en un módulo de seguridad de hardware (HSM), siga los pasos para descargar los certificados con la clave privada y el certificado en un HSM.

#### Descargar certificados con clave privada y archivos de certificado
<a name="download-thing-certificates-without-hardware-security"></a>

**Descarga de certificados al dispositivo**

1. <a name="installation-copy-thing-certificate-to-device"></a>Copia el AWS IoT certificado del objeto desde tu ordenador de desarrollo al dispositivo. Si SSH y SCP están habilitados en la computadora de desarrollo y en el dispositivo, puede utilizar el comando `scp` de la computadora de desarrollo para transferir el certificado. *device-ip-address*Sustitúyalo por la dirección IP de tu dispositivo.

   ```
   scp -r greengrass-v2-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Cree la carpeta raíz de Greengrass en el dispositivo. Más adelante instalarás el software AWS IoT Greengrass principal en esta carpeta.
**nota**  
Windows tiene una limitación de longitud de ruta de 260 caracteres. Si usa Windows, use una carpeta raíz como `C:\greengrass\v2` o `D:\greengrass\v2` para mantener las rutas de los componentes de Greengrass por debajo del límite de 260 caracteres.

------
#### [ Linux or Unix ]
   + Reemplace `/greengrass/v2` por la carpeta que desee utilizar.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo para Linux) Establezca los permisos de la carpeta principal de la carpeta raíz de Greengrass.
   + */greengrass*Sustitúyalo por el elemento principal de la carpeta raíz.

   ```
   sudo chmod 755 /greengrass
   ```

1. Copia los certificados de la AWS IoT cosa a la carpeta raíz de Greengrass.

------
#### [ Linux or Unix ]
   + Reemplace `/greengrass/v2` por la carpeta raíz de Greengrass.

   ```
   sudo cp -R ~/greengrass-v2-certs/* /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   robocopy %USERPROFILE%\greengrass-v2-certs C:\greengrass\v2 /E
   ```

------
#### [ PowerShell ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   cp -Path ~\greengrass-v2-certs\* -Destination C:\greengrass\v2
   ```

------

1. Descargue el certificado de la entidad de certificación (CA) de Amazon. Los certificados de AWS IoT están asociados al certificado de CA raíz de Amazon de forma predeterminada. Descargue el CA1 certificado y el [CA3certificado](https://www.amazontrust.com/repository/).

------
#### [ Linux or Unix ]
   + Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

#### Descarga de certificados con la clave privada y el certificado en un HSM
<a name="download-thing-certificates-with-hardware-security"></a>

**nota**  
Esta función está disponible para la versión 2.5.3 y versiones posteriores del componente núcleo de [Greengrass](greengrass-nucleus-component.md). AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows. 

**Descarga de certificados al dispositivo**

1. <a name="installation-copy-thing-certificate-to-device"></a>Copia el AWS IoT certificado del dispositivo de desarrollo desde tu ordenador de desarrollo al dispositivo. Si SSH y SCP están habilitados en la computadora de desarrollo y en el dispositivo, puede utilizar el comando `scp` de la computadora de desarrollo para transferir el certificado. *device-ip-address*Sustitúyalo por la dirección IP de tu dispositivo.

   ```
   scp -r greengrass-v2-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Cree la carpeta raíz de Greengrass en el dispositivo. Más adelante instalarás el software AWS IoT Greengrass principal en esta carpeta.
**nota**  
Windows tiene una limitación de longitud de ruta de 260 caracteres. Si usa Windows, use una carpeta raíz como `C:\greengrass\v2` o `D:\greengrass\v2` para mantener las rutas de los componentes de Greengrass por debajo del límite de 260 caracteres.

------
#### [ Linux or Unix ]
   + Reemplace `/greengrass/v2` por la carpeta que desee utilizar.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo para Linux) Establezca los permisos de la carpeta principal de la carpeta raíz de Greengrass.
   + */greengrass*Sustitúyalo por el elemento principal de la carpeta raíz.

   ```
   sudo chmod 755 /greengrass
   ```

1. Importe el archivo de certificado del objeto `~/greengrass-v2-certs/device.pem.crt`, al HSM. Consulte la documentación de su HSM para saber cómo importar certificados allí. Importe el certificado con el mismo token, ID de ranura, PIN de usuario, etiqueta de objeto e ID de objeto (si su HSM usa alguno) con los que generó la clave privada en el HSM anteriormente.
**nota**  
Si generó la clave privada anteriormente sin un ID de objeto y el certificado tiene un ID de objeto, establezca el ID de objeto de la clave privada con el mismo valor que el certificado. Consulte la documentación de su HSM para obtener información sobre cómo configurar el identificador de objeto para el objeto de clave privada.

1. (Opcional) Elimine el archivo de certificado del objeto para que solo exista en el HSM.

   ```
   rm ~/greengrass-v2-certs/device.pem.crt
   ```

1. Descargue el certificado de la entidad de certificación (CA) de Amazon. Los certificados de AWS IoT están asociados al certificado de CA raíz de Amazon de forma predeterminada. Descargue tanto el certificado CA1 como el [CA3certificado](https://www.amazontrust.com/repository/).

------
#### [ Linux or Unix ]
   + Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

### Configuración del entorno del dispositivo
<a name="set-up-device-environment"></a>

Siga los pasos de esta sección para configurar un dispositivo Linux o Windows para usarlo como su dispositivo principal de AWS IoT Greengrass .

#### Configuración de un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Para configurar un dispositivo Linux para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior. Los siguientes comandos muestran cómo instalar OpenJDK en su dispositivo.
   + Para distribuciones basadas en Debian o en Ubuntu:

     ```
     sudo apt install default-jdk
     ```
   + Para distribuciones basadas en Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + En Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + En Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Cuando se complete la instalación, ejecute el siguiente comando para comprobar que Java se ejecuta en su dispositivo Linux.

   ```
   java -version
   ```

   El comando imprime la versión de Java que se ejecuta en el dispositivo. Por ejemplo, en una distribución basada en Debian, el resultado podría ser similar al siguiente ejemplo.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Opcional) Cree el usuario y el grupo predeterminado del sistema que ejecutan los componentes del dispositivo. También puede optar por permitir que el instalador del software AWS IoT Greengrass principal cree este usuario y grupo durante la instalación con el argumento del `--component-default-user` instalador. Para obtener más información, consulte [Argumentos del instalador](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Compruebe que el usuario que ejecuta el software AWS IoT Greengrass principal (normalmente`root`) tiene permiso para ejecutar `sudo` con cualquier usuario y grupo.

   1. Ejecute el siguiente comando para abrir el archivo `/etc/sudoers`.

      ```
      sudo visudo
      ```

   1. Compruebe que el permiso del usuario se parezca al siguiente ejemplo.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. (Opcional) Para [ejecutar funciones de Lambda en contenedores](run-lambda-functions.md), debe habilitar la versión 1 de [cgroups](https://en.wikipedia.org/wiki/Cgroups), y habilitar y montar los cgroups de *memoria* y de *dispositivos*. Si no tiene previsto ejecutar funciones de Lambda en contenedores, puede omitir este paso.

   Para habilitar estas opciones de cgroups, arranque el dispositivo con los siguientes parámetros del kernel de Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Para obtener más información acerca de cómo ver y configurar los parámetros del kernel de su dispositivo, consulte la documentación del sistema operativo y del gestor de arranque. Siga las instrucciones para configurar permanentemente los parámetros del kernel.

1. Instale todas las demás dependencias necesarias en su dispositivo tal y como se indica en la lista de requisitos de [Requisitos de los dispositivos](greengrass-nucleus-component.md#greengrass-v2-requirements).

#### Configuración de un dispositivo de Windows
<a name="set-up-windows-device-environment"></a>

**nota**  
Esta característica está disponible para la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).<a name="set-up-windows-device-environment-procedure"></a>

**Para configurar un dispositivo Windows para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior.

1. Compruebe si Java está disponible en la variable del sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) y agréguelo si no lo está. La LocalSystem cuenta ejecuta el software AWS IoT Greengrass principal, por lo que debe agregar Java a la variable de sistema PATH en lugar de a la variable de usuario PATH de su usuario. Haga lo siguiente:

   1. Pulse la tecla Windows para abrir el menú de inicio.

   1. Escriba **environment variables** para buscar las opciones del sistema en el menú de inicio.

   1. En los resultados de la búsqueda del menú de inicio, elija **Editar las variables de entorno del sistema** para abrir la ventana de **Propiedades del sistema**.

   1. Elija **Variables de entorno...** para abrir la ventana **Variables de entorno**.

   1. En **Variables del sistema**, elija **Ruta** y, luego, **Editar**. En la ventana **Editar variables de entorno**, puede ver cada ruta en una línea independiente.

   1. Compruebe si la ruta a la carpeta de la instalación de Java `bin` está presente. La ruta puede tener un aspecto similar al siguiente ejemplo.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Si la carpeta de la instalación de Java `bin` no aparece en **Ruta**, elija **Nueva** para agregarla y, a continuación, pulse **Aceptar**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Abra el símbolo del sistema de Windows (`cmd.exe`) como administrador.

1. <a name="set-up-windows-device-environment-create"></a>Cree el usuario predeterminado en la LocalSystem cuenta del dispositivo Windows. *password*Sustitúyalo por una contraseña segura.

   ```
   net user /add ggc_user password
   ```
**sugerencia**  <a name="windows-password-expiration-tip"></a>
Según su configuración de Windows, es posible que la contraseña del usuario caduque en una fecha futura. Para garantizar que sus aplicaciones de Greengrass sigan funcionando, controle cuándo caduca la contraseña y actualícela antes de que caduque. También puede configurar la contraseña del usuario para que nunca caduque.  
Para comprobar cuándo caducan un usuario y su contraseña, ejecute el siguiente comando.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Para configurar la contraseña de un usuario para que no caduque nunca, ejecute el siguiente comando.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Si utilizas Windows 10 o una versión posterior, donde el [`wmic`comando está en desuso](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic), ejecuta el siguiente PowerShell comando.  

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Descargue e instale la [PsExecutilidad](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) de Microsoft en el dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilice la PsExec utilidad para almacenar el nombre de usuario y la contraseña del usuario predeterminado en la instancia de Credential Manager de la LocalSystem cuenta. *password*Sustitúyala por la contraseña de usuario que configuraste anteriormente.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Si **PsExec License Agreement** se abre, elija **Accept** para aceptar la licencia y ejecute el comando.
**nota**  
En los dispositivos Windows, la LocalSystem cuenta ejecuta el núcleo de Greengrass y debe usar la PsExec utilidad para almacenar la información de usuario predeterminada en la LocalSystem cuenta. El uso de la aplicación Credential Manager almacena esta información en la cuenta de Windows del usuario que ha iniciado sesión actualmente, en lugar de en la LocalSystem cuenta.

### Descargue el software AWS IoT Greengrass principal
<a name="download-greengrass-core-v2"></a>

Puede descargar la última versión del software AWS IoT Greengrass Core desde la siguiente ubicación:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**nota**  
Puede descargar una versión específica del software AWS IoT Greengrass Core desde la siguiente ubicación. *version*Sustitúyala por la versión que se va a descargar.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Para descargar el software AWS IoT Greengrass principal**

1. <a name="installation-download-ggc-software-step"></a>En su dispositivo principal, descargue el software AWS IoT Greengrass Core en un archivo denominado`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Al descargar este software, acepta el [acuerdo de licencia del software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Opcional) Verificación de la firma del software del núcleo de Greengrass
**nota**  
Esta característica está disponible en la versión 2.9.5 y versiones posteriores del núcleo de Greengrass.

   1. Use el siguiente comando para verificar la firma del artefacto del núcleo de Greengrass:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. La invocación `jarsigner` produce un resultado que indica los resultados de la verificación.

      1. Si el archivo zip del núcleo de Greengrass está firmado, el resultado contiene la siguiente declaración:

         ```
         jar verified.
         ```

      1. Si el archivo zip del núcleo de Greengrass no está firmado, el resultado contiene la siguiente declaración:

         ```
         jar is unsigned.
         ```

   1. Si ha proporcionado la opción `-certs` Jarsigner junto con las opciones `-verify` y `-verbose`, el resultado también incluye información detallada del certificado de firmante.

1. <a name="installation-unzip-ggc-software-step"></a>Descomprime el software AWS IoT Greengrass Core en una carpeta de tu dispositivo. *GreengrassInstaller*Sustitúyalo por la carpeta que desee usar.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Opcional) Ejecute el siguiente comando para ver la versión del software AWS IoT Greengrass principal.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**importante**  <a name="installer-folder-2.4.0-warning"></a>
Si instala una versión del núcleo de Greengrass anterior a la v2.4.0, no elimine esta carpeta después de instalar el software Core. AWS IoT Greengrass El software AWS IoT Greengrass Core utiliza los archivos de esta carpeta para ejecutarse.  
Si descargó la última versión del software, instale la versión 2.4.0 o posterior y podrá eliminar esta carpeta después de instalar el software AWS IoT Greengrass principal.

### Instale el software principal AWS IoT Greengrass
<a name="run-greengrass-core-v2-installer-manual-fips"></a>

Ejecute el instalador con argumentos que especifiquen las siguientes acciones:
+ Realice la instalación desde un archivo de configuración parcial que especifique el uso de los recursos de AWS y certificados que creó anteriormente. El software AWS IoT Greengrass Core utiliza un archivo de configuración que especifica la configuración de todos los componentes de Greengrass del dispositivo. El instalador crea un archivo de configuración completo a partir del archivo de configuración parcial que usted proporciona.
+ <a name="install-argument-component-default-user"></a>Especifique si desea usar el usuario del sistema `ggc_user` para ejecutar los componentes de software en el dispositivo principal. En los dispositivos Linux, este comando también especifica el uso del grupo del sistema `ggc_group` y el instalador crea el usuario y el grupo del sistema por usted.
+ <a name="install-argument-system-service"></a>Configure el software AWS IoT Greengrass Core como un servicio del sistema que se ejecute durante el arranque. En los dispositivos Linux, esto requiere el sistema de inicio [Systemd](https://en.wikipedia.org/wiki/Systemd).
**importante**  <a name="windows-system-service-requirement-important-note"></a>
En los dispositivos principales de Windows, debe configurar el software AWS IoT Greengrass principal como un servicio del sistema.

Para obtener más información acerca de los argumentos que puede especificar, consulte [Argumentos del instalador](configure-installer.md).

**nota**  
<a name="jvm-tuning-note"></a>Si utilizas un AWS IoT Greengrass dispositivo con memoria limitada, puedes controlar la cantidad de memoria que utiliza el software AWS IoT Greengrass Core. Para controlar la asignación de memoria, puede configurar las opciones de tamaño de montón de la JVM en el parámetro de configuración `jvmOptions` del componente núcleo. Para obtener más información, consulte [Control de la asignación de memoria con las opciones de JVM](configure-greengrass-core-v2.md#jvm-tuning).
+ Si creó anteriormente el certificado y la clave privada en el AWS IoT servicio, siga los pasos para instalar el software AWS IoT Greengrass Core con los archivos de clave privada y certificado.
+ Si anteriormente creó el certificado Thing a partir de una clave privada en un módulo de seguridad de hardware (HSM), siga los pasos para instalar el software AWS IoT Greengrass Core con la clave privada y el certificado en un HSM.

#### Instale el software AWS IoT Greengrass principal con la clave privada y los archivos de certificado
<a name="FIPS-manual-installation-without-hardware-security"></a>

**Para instalar el software AWS IoT Greengrass Core**

1. <a name="installer-check-greengrass-core-software-version"></a>Compruebe la versión del software AWS IoT Greengrass principal.
   + *GreengrassInstaller*Sustitúyala por la ruta a la carpeta que contiene el software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Use un editor de texto para crear un archivo de configuración llamado `config.yaml` para proporcionárselo al instalador.

   <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copie el siguiente contenido YAML en el archivo. Este archivo de configuración parcial especifica los parámetros del sistema y los parámetros del núcleo de Greengrass.

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         fipsMode: "true"
         iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com"
         greengrassDataPlaneEndpoint: "iotData"
         iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"
   ```

   A continuación, proceda del modo siguiente:
   + Reemplace cada instancia de `/greengrass/v2` por la carpeta raíz de Greengrass.
   + *MyGreengrassCore*Sustitúyalo por el nombre de la AWS IoT cosa.
   + *2.16.1*Sustitúyala por la versión del software AWS IoT Greengrass principal.
   + *us-west-2*Sustitúyala por la Región de AWS ubicación en la que creaste los recursos.
   + *GreengrassCoreTokenExchangeRoleAlias*Sustitúyalo por el nombre del alias de la función de intercambio de fichas.
   + *iotDataEndpoint*Sustitúyalo por el punto final de AWS IoT datos.
   + Sustituya el *iotCredEndpoint* punto final por el de sus AWS IoT credenciales.

1. Ejecute el instalador y especifique `--init-config` para proporcionar el archivo de configuración.
   + Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.
   + Sustituya cada instancia de por *GreengrassInstaller* la carpeta en la que desempaquetó el instalador.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**importante**  <a name="windows-system-service-installer-argument-important-note"></a>
En los dispositivos principales de Windows, debe especificar si `--setup-system-service true` desea configurar el software AWS IoT Greengrass principal como un servicio del sistema.

   <a name="installer-setup-system-service-output-message"></a>Si especifica `--setup-system-service true`, el instalador imprime `Successfully set up Nucleus as a system service` si configuró y ejecutó el software como un servicio del sistema. De lo contrario, el instalador no mostrará ningún mensaje si instala el software correctamente.
**nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
No puede usar el argumento `deploy-dev-tools` para implementar herramientas de desarrollo locales cuando ejecuta el instalador sin el argumento `--provision true`. Para obtener información sobre cómo implementar la CLI de Greengrass directamente en su dispositivo, consulte [Interfaz de la línea de comandos de Greengrass](gg-cli.md).

1. <a name="installer-verify-installation"></a>Verifique la instalación mediante la consulta de los archivos de la carpeta raíz.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Si la instalación se realizó correctamente, la carpeta raíz contiene varias carpetas, como `config`, `packages` y `logs`.

#### Instale el software AWS IoT Greengrass Core con la clave privada y el certificado en un HSM
<a name="FIPS-manual-installation-with-hardware-security"></a>

**nota**  
Esta función está disponible para la versión 2.5.3 y versiones posteriores del componente núcleo de [Greengrass](greengrass-nucleus-component.md). AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows. 

**Para instalar el software AWS IoT Greengrass principal**

1. <a name="installer-check-greengrass-core-software-version"></a>Compruebe la versión del software AWS IoT Greengrass principal.
   + *GreengrassInstaller*Sustitúyala por la ruta a la carpeta que contiene el software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Para permitir que el software AWS IoT Greengrass principal utilice la clave privada y el certificado del HSM, instale el [componente de proveedor PKCS \$111](pkcs11-provider-component.md) al instalar el software AWS IoT Greengrass principal. El componente de proveedor PKCS\$111 es un complemento que puede configurar durante la instalación. Puede descargar la versión más reciente del componente de proveedor PKCS\$111 de la siguiente ubicación:
   + [https://d2s8p88vqu9w66.cloudfront. net/releases/Pkcs11Provider/aws.greengrass.crypto.pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar)

   Descargue el complemento de proveedor PKCS\$111 en un archivo denominado `aws.greengrass.crypto.Pkcs11Provider.jar`. Sustitúyala por la carpeta que quieras usar. *GreengrassInstaller*

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar > GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar
   ```

   <a name="core-software-license"></a>Al descargar este software, acepta el [acuerdo de licencia del software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. Use un editor de texto para crear un archivo de configuración llamado `config.yaml` para proporcionárselo al instalador.

   <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copie el siguiente contenido YAML en el archivo. Este archivo de configuración parcial especifica los parámetros del sistema, los parámetros del núcleo de Greengrass y los parámetros del proveedor PKCS\$111.

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         fipsMode: "true"
         iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com"
         greengrassDataPlaneEndpoint: "iotData"
         iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"
   ```

   A continuación, proceda del modo siguiente:
   + Sustituya cada instancia del PKCS \$111 URIs por la etiqueta de objeto *iotdevicekey* en la que creó la clave privada e importó el certificado.
   + Reemplace cada instancia de `/greengrass/v2` por la carpeta raíz de Greengrass.
   + *MyGreengrassCore*Sustitúyala por el nombre de la AWS IoT cosa.
   + *2.16.1*Sustitúyala por la versión del software AWS IoT Greengrass principal.
   + *us-west-2*Sustitúyala por la Región de AWS ubicación en la que creaste los recursos.
   + *GreengrassCoreTokenExchangeRoleAlias*Sustitúyalo por el nombre del alias de la función de intercambio de fichas.
   + `iotDataEndpoint`Sustitúyalo por el punto final de AWS IoT datos.
   + Reemplace el `iotCredEndpoint` por su punto de conexión de credenciales de AWS IoT .
   + Reemplace los parámetros de configuración del componente `aws.greengrass.crypto.Pkcs11Provider` por los valores de la configuración del HSM en el dispositivo principal.

1. Ejecute el instalador y especifique `--init-config` para proporcionar el archivo de configuración.
   + Reemplace `/greengrass/v2` por la carpeta raíz de Greengrass.
   + Sustituya cada instancia de *GreengrassInstaller* por la carpeta en la que desempaquetó el instalador.

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```
**importante**  <a name="windows-system-service-installer-argument-important-note"></a>
En los dispositivos principales de Windows, debe especificar si `--setup-system-service true` desea configurar el software AWS IoT Greengrass principal como un servicio del sistema.

   <a name="installer-setup-system-service-output-message"></a>Si especifica `--setup-system-service true`, el instalador imprime `Successfully set up Nucleus as a system service` si configuró y ejecutó el software como un servicio del sistema. De lo contrario, el instalador no mostrará ningún mensaje si instala el software correctamente.
**nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
No puede usar el argumento `deploy-dev-tools` para implementar herramientas de desarrollo locales cuando ejecuta el instalador sin el argumento `--provision true`. Para obtener información sobre cómo implementar la CLI de Greengrass directamente en su dispositivo, consulte [Interfaz de la línea de comandos de Greengrass](gg-cli.md).

1. <a name="installer-verify-installation"></a>Verifique la instalación mediante la consulta de los archivos de la carpeta raíz.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Si la instalación se realizó correctamente, la carpeta raíz contiene varias carpetas, como `config`, `packages` y `logs`.

<a name="install-greengrass-core-run-software"></a>Si instaló el software AWS IoT Greengrass Core como un servicio del sistema, el instalador ejecutará el software automáticamente. De no ser así, debe ejecutar el software manualmente. Para obtener más información, consulte [Ejecute el software AWS IoT Greengrass principal](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Para obtener más información sobre cómo configurar y utilizar el software AWS IoT Greengrass, consulte lo siguiente:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md)
+ [Desarrollo de componentes de AWS IoT Greengrass](develop-greengrass-components.md)
+ [Implemente AWS IoT Greengrass componentes en los dispositivos](manage-deployments.md)
+ [Interfaz de la línea de comandos de Greengrass](gg-cli.md)

## Instalación de puntos de conexión de FIPS con aprovisionamiento de flota
<a name="FIPS-fleet-provisioning"></a>

Esta característica está disponible para la versión 2.4.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).

Instale terminales FIPS en su software AWS IoT Greengrass principal y aprovisione la AWS IoT flota de sus dispositivos principales.

**nota**  
Actualmente, el complemento de aprovisionamiento de flota no admite el almacenamiento de archivos de certificados y claves privadas en un módulo de seguridad de hardware (HSM). Para usar un HSM, [instale el software AWS IoT Greengrass Core con aprovisionamiento](#FIPS-fleet-provisioning) manual.

Para instalar el software AWS IoT Greengrass Core con el aprovisionamiento de AWS IoT flota, debe configurar los recursos Cuenta de AWS que AWS IoT utiliza para aprovisionar los dispositivos principales de Greengrass. Estos recursos incluyen una plantilla de aprovisionamiento, certificados de reclamación y un [rol de IAM para el intercambio de token](device-service-role.md). Después de crear estos recursos, puede reutilizarlos para aprovisionar varios dispositivos principales de una flota. Para obtener más información, consulte [Configurar el aprovisionamiento de AWS IoT flota para los dispositivos principales de Greengrass](fleet-provisioning-setup.md).

**importante**  <a name="install-greengrass-core-requirements-note"></a>
Antes de descargar el software AWS IoT Greengrass Core, compruebe que su dispositivo principal cumpla con los [requisitos](greengrass-nucleus-component.md#greengrass-v2-requirements) para instalar y ejecutar el software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Requisitos previos](#fleet-provisioning-prerequisites)
+ [Recupere los puntos finales AWS IoT](#retrieve-iot-endpoints)
+ [Descarga de certificados al dispositivo](#download-claim-certificates)
+ [Configuración del entorno del dispositivo](#set-up-device-environment-fleet-provisioning)
+ [Descargue el software AWS IoT Greengrass principal](#download-greengrass-core-v2-fleet)
+ [Descargue el complemento de aprovisionamiento AWS IoT de flotas](#download-fleet-provisioning-plugin)
+ [Instale el software AWS IoT Greengrass principal](#run-greengrass-core-v2-installer-fleet-provisioning)

### Requisitos previos
<a name="fleet-provisioning-prerequisites"></a>

Para instalar el software AWS IoT Greengrass Core con el aprovisionamiento de AWS IoT flota, primero debe [configurar el aprovisionamiento de AWS IoT flota para los dispositivos principales de Greengrass](fleet-provisioning-setup.md). Tras completar estos pasos una vez, puede utilizar el aprovisionamiento de flotas para instalar el software AWS IoT Greengrass Core en cualquier número de dispositivos.

### Recupere los puntos finales AWS IoT
<a name="retrieve-iot-endpoints"></a>

Obtenga los puntos finales FIPS para usted y guárdelos para usarlos más adelante. Cuenta de AWS El dispositivo usa estos puntos de conexión para conectarse a AWS IoT. Haga lo siguiente:

1. Obtenga el punto de conexión de datos de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de datos FIPS correspondiente a usted Cuenta de AWS debería tener este aspecto: *data.iot-fips.us-west-2.amazonaws.com*

1. Obtenga el punto de conexión de las credenciales de FIPS para su región en los [puntos de conexión del plano de datos de FIPS de AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-data-plane-endpoints). El punto final de sus credenciales FIPS Cuenta de AWS debería tener este aspecto: *data.credentials.iot-fips.us-west-2.amazonaws.com*

### Descarga de certificados al dispositivo
<a name="download-claim-certificates"></a>

El dispositivo utiliza un certificado de reclamación y una clave privada para autenticar su solicitud de aprovisionamiento de AWS recursos y adquirir un certificado de dispositivo X.509. Puede incrustar el certificado de reclamación y la clave privada en el dispositivo durante la fabricación o copiar el certificado y la clave en el dispositivo durante la instalación. En esta sección, debe copiar el certificado de reclamación y la clave privada en el dispositivo. También descargue el certificado de la autoridad del certificado raíz (CA) de Amazon en el dispositivo.

**importante**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
Las claves privadas de la notificación de aprovisionamiento deben estar protegidas en todo momento, también en el dispositivo principal de Greengrass. Te recomendamos que utilices CloudWatch las estadísticas y los registros de Amazon para detectar indicios de uso indebido, como el uso no autorizado del certificado de reclamación para aprovisionar dispositivos. Si detecta un uso incorrecto, deshabilite el certificado de notificación de aprovisionamiento para que no se pueda utilizar para el aprovisionamiento de dispositivos. Para obtener más información, consulte [Monitorear AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html) en la *Guía para desarrolladores de AWS IoT Core *.  
Para ayudarte a gestionar mejor el número de dispositivos y los dispositivos que se registran automáticamente en el tuyo Cuenta de AWS, puedes especificar un enlace previo al aprovisionamiento al crear una plantilla de aprovisionamiento de flotas. Un enlace de preaprovisionamiento es una AWS Lambda función que valida los parámetros de plantilla que proporcionan los dispositivos durante el registro. Por ejemplo, puede crear un enlace previo al aprovisionamiento que compruebe un ID de un dispositivo con una base de datos para comprobar que el dispositivo tiene permiso de aprovisionamiento. Para obtener más información, consulte los [enlaces previos al aprovisionamiento](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) en la *Guía para desarrolladores de AWS IoT Core *.

**Cómo descargar los certificados de reclamación al dispositivo**

1. Copie el certificado de reclamación y la clave privada en el dispositivo. Si SSH y SCP están habilitados en la computadora de desarrollo y en el dispositivo, puede utilizar el comando `scp` de la computadora de desarrollo para transferir el certificado de reclamación y la clave privada. El siguiente comando de ejemplo transfiere estos archivos a una carpeta denominada `claim-certs` en la computadora de desarrollo al dispositivo. *device-ip-address*Sustitúyala por la dirección IP de tu dispositivo.

   ```
   scp -r claim-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Cree la carpeta raíz de Greengrass en el dispositivo. Más adelante instalarás el software AWS IoT Greengrass principal en esta carpeta.
**nota**  
Windows tiene una limitación de longitud de ruta de 260 caracteres. Si usa Windows, use una carpeta raíz como `C:\greengrass\v2` o `D:\greengrass\v2` para mantener las rutas de los componentes de Greengrass por debajo del límite de 260 caracteres.

------
#### [ Linux or Unix ]
   + Reemplace `/greengrass/v2` por la carpeta que desee utilizar.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Reemplace *C:\$1greengrass\$1v2* por la carpeta que desee utilizar.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo para Linux) Establezca los permisos de la carpeta principal de la carpeta raíz de Greengrass.
   + */greengrass*Sustitúyalo por el elemento principal de la carpeta raíz.

   ```
   sudo chmod 755 /greengrass
   ```

1. Mueva los certificados de reclamación a la carpeta raíz de Greengrass.
   + Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.

------
#### [ Linux or Unix ]

   ```
   sudo mv ~/claim-certs /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   move %USERPROFILE%\claim-certs C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   mv -Path ~\claim-certs -Destination C:\greengrass\v2
   ```

------

1. Descargue tanto el CA1 certificado como el [CA3certificado](https://www.amazontrust.com/repository/).

------
#### [ Linux or Unix ]

   ```
   sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

### Configuración del entorno del dispositivo
<a name="set-up-device-environment-fleet-provisioning"></a>

Siga los pasos de esta sección para configurar un dispositivo Linux o Windows para usarlo como dispositivo AWS IoT Greengrass principal.

#### Configuración de un dispositivo Linux
<a name="set-up-linux-device-environment-fleet-provisioning"></a><a name="set-up-linux-device-environment-procedure"></a>

**Para configurar un dispositivo Linux para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior. Los siguientes comandos muestran cómo instalar OpenJDK en su dispositivo.
   + Para distribuciones basadas en Debian o en Ubuntu:

     ```
     sudo apt install default-jdk
     ```
   + Para distribuciones basadas en Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + En Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + En Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Cuando se complete la instalación, ejecute el siguiente comando para comprobar que Java se ejecuta en su dispositivo Linux.

   ```
   java -version
   ```

   El comando imprime la versión de Java que se ejecuta en el dispositivo. Por ejemplo, en una distribución basada en Debian, el resultado podría ser similar al siguiente ejemplo.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Opcional) Cree el usuario y el grupo predeterminado del sistema que ejecutan los componentes del dispositivo. También puede optar por permitir que el instalador del software AWS IoT Greengrass principal cree este usuario y grupo durante la instalación con el argumento del `--component-default-user` instalador. Para obtener más información, consulte [Argumentos del instalador](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Compruebe que el usuario que ejecuta el software AWS IoT Greengrass principal (normalmente`root`) tiene permiso para ejecutar `sudo` con cualquier usuario y grupo.

   1. Ejecute el siguiente comando para abrir el archivo `/etc/sudoers`.

      ```
      sudo visudo
      ```

   1. Compruebe que el permiso del usuario se parezca al siguiente ejemplo.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. (Opcional) Para [ejecutar funciones de Lambda en contenedores](run-lambda-functions.md), debe habilitar la versión 1 de [cgroups](https://en.wikipedia.org/wiki/Cgroups), y habilitar y montar los cgroups de *memoria* y de *dispositivos*. Si no tiene previsto ejecutar funciones de Lambda en contenedores, puede omitir este paso.

   Para habilitar estas opciones de cgroups, arranque el dispositivo con los siguientes parámetros del kernel de Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Para obtener más información acerca de cómo ver y configurar los parámetros del kernel de su dispositivo, consulte la documentación del sistema operativo y del gestor de arranque. Siga las instrucciones para configurar permanentemente los parámetros del kernel.

1. Instale todas las demás dependencias necesarias en su dispositivo tal y como se indica en la lista de requisitos de [Requisitos de los dispositivos](greengrass-nucleus-component.md#greengrass-v2-requirements).

#### Configuración de un dispositivo de Windows
<a name="set-up-windows-device-environment-fleet-provisioning"></a>

**nota**  
Esta característica está disponible para la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).<a name="set-up-windows-device-environment-procedure"></a>

**Para configurar un dispositivo Windows para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior.

1. Compruebe si Java está disponible en la variable del sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) y agréguelo si no lo está. La LocalSystem cuenta ejecuta el software AWS IoT Greengrass principal, por lo que debe agregar Java a la variable de sistema PATH en lugar de a la variable de usuario PATH de su usuario. Haga lo siguiente:

   1. Pulse la tecla Windows para abrir el menú de inicio.

   1. Escriba **environment variables** para buscar las opciones del sistema en el menú de inicio.

   1. En los resultados de la búsqueda del menú de inicio, elija **Editar las variables de entorno del sistema** para abrir la ventana de **Propiedades del sistema**.

   1. Elija **Variables de entorno...** para abrir la ventana **Variables de entorno**.

   1. En **Variables del sistema**, elija **Ruta** y, luego, **Editar**. En la ventana **Editar variables de entorno**, puede ver cada ruta en una línea independiente.

   1. Compruebe si la ruta a la carpeta de la instalación de Java `bin` está presente. La ruta puede tener un aspecto similar al siguiente ejemplo.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Si la carpeta de la instalación de Java `bin` no aparece en **Ruta**, elija **Nueva** para agregarla y, a continuación, pulse **Aceptar**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Abra el símbolo del sistema de Windows (`cmd.exe`) como administrador.

1. <a name="set-up-windows-device-environment-create"></a>Cree el usuario predeterminado en la LocalSystem cuenta del dispositivo Windows. *password*Sustitúyalo por una contraseña segura.

   ```
   net user /add ggc_user password
   ```
**sugerencia**  <a name="windows-password-expiration-tip"></a>
Según su configuración de Windows, es posible que la contraseña del usuario caduque en una fecha futura. Para garantizar que sus aplicaciones de Greengrass sigan funcionando, controle cuándo caduca la contraseña y actualícela antes de que caduque. También puede configurar la contraseña del usuario para que nunca caduque.  
Para comprobar cuándo caducan un usuario y su contraseña, ejecute el siguiente comando.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Para configurar la contraseña de un usuario para que no caduque nunca, ejecute el siguiente comando.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Si utilizas Windows 10 o una versión posterior, donde el [`wmic`comando está en desuso](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic), ejecuta el siguiente PowerShell comando.  

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Descargue e instale la [PsExecutilidad](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) de Microsoft en el dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilice la PsExec utilidad para almacenar el nombre de usuario y la contraseña del usuario predeterminado en la instancia de Credential Manager de la LocalSystem cuenta. *password*Sustitúyala por la contraseña de usuario que configuraste anteriormente.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Si **PsExec License Agreement** se abre, elija **Accept** para aceptar la licencia y ejecute el comando.
**nota**  
En los dispositivos Windows, la LocalSystem cuenta ejecuta el núcleo de Greengrass y debe usar la PsExec utilidad para almacenar la información de usuario predeterminada en la LocalSystem cuenta. El uso de la aplicación Credential Manager almacena esta información en la cuenta de Windows del usuario que ha iniciado sesión actualmente, en lugar de en la LocalSystem cuenta.

### Descargue el software AWS IoT Greengrass principal
<a name="download-greengrass-core-v2-fleet"></a>

Puede descargar la última versión del software AWS IoT Greengrass Core desde la siguiente ubicación:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**nota**  
Puede descargar una versión específica del software AWS IoT Greengrass Core desde la siguiente ubicación. *version*Sustitúyala por la versión que se va a descargar.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Para descargar el software AWS IoT Greengrass principal**

1. <a name="installation-download-ggc-software-step"></a>En su dispositivo principal, descargue el software AWS IoT Greengrass Core en un archivo denominado`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Al descargar este software, acepta el [acuerdo de licencia del software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Opcional) Verificación de la firma del software del núcleo de Greengrass
**nota**  
Esta característica está disponible en la versión 2.9.5 y versiones posteriores del núcleo de Greengrass.

   1. Use el siguiente comando para verificar la firma del artefacto del núcleo de Greengrass:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. La invocación `jarsigner` produce un resultado que indica los resultados de la verificación.

      1. Si el archivo zip del núcleo de Greengrass está firmado, el resultado contiene la siguiente declaración:

         ```
         jar verified.
         ```

      1. Si el archivo zip del núcleo de Greengrass no está firmado, el resultado contiene la siguiente declaración:

         ```
         jar is unsigned.
         ```

   1. Si ha proporcionado la opción `-certs` Jarsigner junto con las opciones `-verify` y `-verbose`, el resultado también incluye información detallada del certificado de firmante.

1. <a name="installation-unzip-ggc-software-step"></a>Descomprime el software AWS IoT Greengrass Core en una carpeta de tu dispositivo. *GreengrassInstaller*Sustitúyalo por la carpeta que desee usar.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Opcional) Ejecute el siguiente comando para ver la versión del software AWS IoT Greengrass principal.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**importante**  <a name="installer-folder-2.4.0-warning"></a>
Si instala una versión del núcleo de Greengrass anterior a la v2.4.0, no elimine esta carpeta después de instalar el software Core. AWS IoT Greengrass El software AWS IoT Greengrass Core utiliza los archivos de esta carpeta para ejecutarse.  
Si descargó la última versión del software, instale la versión 2.4.0 o posterior y podrá eliminar esta carpeta después de instalar el software AWS IoT Greengrass principal.

### Descargue el complemento de aprovisionamiento AWS IoT de flotas
<a name="download-fleet-provisioning-plugin"></a>

Puedes descargar la última versión del complemento de aprovisionamiento de AWS IoT flotas desde la siguiente ubicación:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim](https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar)-latest.jar

**nota**  
Puede descargar una versión específica del complemento de aprovisionamiento de AWS IoT flotas desde la siguiente ubicación. *version*Sustitúyala por la versión que se va a descargar. Para obtener más información sobre cada versión del complemento de aprovisionamiento de flota, consulte [Registro de cambios del complemento de aprovisionamiento de flotas AWS IoT](fleet-provisioning-changelog.md).  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-version.jar
```

El complemento de aprovisionamiento de flota es de código abierto. Para ver su código fuente, consulta el [complemento de aprovisionamiento de AWS IoT flotas](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) en GitHub.

**Para descargar el complemento de aprovisionamiento de AWS IoT flotas**
+ En su dispositivo, descargue el complemento de aprovisionamiento de AWS IoT flotas en un archivo denominado. `aws.greengrass.FleetProvisioningByClaim.jar` *GreengrassInstaller*Sustitúyalo por la carpeta que desee usar.

------
#### [ Linux or Unix ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ PowerShell ]

  ```
  iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar -OutFile GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------

  <a name="core-software-license"></a>Al descargar este software, acepta el [acuerdo de licencia del software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

### Instale el software AWS IoT Greengrass principal
<a name="run-greengrass-core-v2-installer-fleet-provisioning"></a>

Ejecute el instalador con argumentos que especifiquen las siguientes acciones:
+ Instálelo desde un archivo de configuración parcial que especifique el uso del complemento de aprovisionamiento de flotas para aprovisionar AWS recursos. El software AWS IoT Greengrass Core utiliza un archivo de configuración que especifica la configuración de todos los componentes de Greengrass del dispositivo. El instalador crea un archivo de configuración completo a partir del archivo de configuración parcial que usted proporciona y de AWS los recursos que crea el complemento de aprovisionamiento de flotas.
+ <a name="install-argument-component-default-user"></a>Especifique si desea usar el usuario del sistema `ggc_user` para ejecutar los componentes de software en el dispositivo principal. En los dispositivos Linux, este comando también especifica el uso del grupo del sistema `ggc_group` y el instalador crea el usuario y el grupo del sistema por usted.
+ <a name="install-argument-system-service"></a>Configure el software AWS IoT Greengrass principal como un servicio del sistema que se ejecute durante el arranque. En los dispositivos Linux, esto requiere el sistema de inicio [Systemd](https://en.wikipedia.org/wiki/Systemd).
**importante**  <a name="windows-system-service-requirement-important-note"></a>
En los dispositivos principales de Windows, debe configurar el software AWS IoT Greengrass principal como un servicio del sistema.

Para obtener más información acerca de los argumentos que puede especificar, consulte [Argumentos del instalador](configure-installer.md).

**nota**  
<a name="jvm-tuning-note"></a>Si utilizas un AWS IoT Greengrass dispositivo con memoria limitada, puedes controlar la cantidad de memoria que utiliza el software AWS IoT Greengrass Core. Para controlar la asignación de memoria, puede configurar las opciones de tamaño de montón de la JVM en el parámetro de configuración `jvmOptions` del componente núcleo. Para obtener más información, consulte [Control de la asignación de memoria con las opciones de JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Para instalar el software AWS IoT Greengrass Core**

1. <a name="installer-check-greengrass-core-software-version"></a>Compruebe la versión del software AWS IoT Greengrass principal.
   + *GreengrassInstaller*Sustitúyala por la ruta a la carpeta que contiene el software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Use un editor de texto para crear un archivo de configuración llamado `config.yaml` para proporcionárselo al instalador.

   <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copie el siguiente contenido YAML en el archivo. Este archivo de configuración parcial especifica los parámetros del complemento de aprovisionamiento de flota. Para obtener más información acerca de las opciones que puede especificar, consulte [Configurar el complemento de aprovisionamiento de AWS IoT flotas](fleet-provisioning-configuration.md).

------
#### [ Linux or Unix ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
       configuration:
         fipsMode: "true"
         greengrassDataPlaneEndpoint: "iotData"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "/greengrass/v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com"
         iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt"
         claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key"
         rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------
#### [ Windows ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "C:\\greengrass\\v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt"
         claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key"
         rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------

   A continuación, proceda del modo siguiente:
   + *2.16.1*Sustitúyala por la versión del software AWS IoT Greengrass principal.
   + Sustituya cada instancia de `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.
**nota**  
En los dispositivos Windows, debe especificar los separadores de rutas como barras invertidas dobles (`\\`), como `C:\\greengrass\\v2`.
   + *us-west-2*Sustitúyala por la AWS región en la que creaste la plantilla de aprovisionamiento y otros recursos.
   + `iotDataEndpoint`Sustitúyalo por su punto final AWS IoT de datos.
   + Reemplace el `iotCredentialEndpoint` por su punto de conexión de credenciales de AWS IoT .
   + *GreengrassCoreTokenExchangeRoleAlias*Sustitúyalo por el nombre del alias de la función de intercambio de fichas.
   + *GreengrassFleetProvisioningTemplate*Sustitúyalo por el nombre de la plantilla de aprovisionamiento de flota.
   + Sustituya `claimCertificatePath` por la ruta al certificado de reclamación del dispositivo.
   + Sustituya `claimCertificatePrivateKeyPath` por la ruta a la clave privada del certificado de reclamación del dispositivo.
   + Sustituya los parámetros de la plantilla (`templateParameters`) por los valores que se usan para aprovisionar el dispositivo. Este ejemplo hace referencia a la [plantilla de ejemplo](fleet-provisioning-setup.md#example-fleet-provisioning-template) que define los parámetros `ThingName` y `ThingGroupName`.

1. Ejecute el instalador. Especifique `--trusted-plugin` si desea proporcionar el complemento de aprovisionamiento de flota y especifique `--init-config` si desea proporcionar el archivo de configuración.
   + Reemplace `/greengrass/v2` por la carpeta raíz de Greengrass.
   + Sustituya cada instancia de por *GreengrassInstaller* la carpeta en la que desempaquetó el instalador.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**importante**  <a name="windows-system-service-installer-argument-important-note"></a>
En los dispositivos principales de Windows, debe especificar si `--setup-system-service true` desea configurar el software AWS IoT Greengrass principal como un servicio del sistema.

   <a name="installer-setup-system-service-output-message"></a>Si especifica `--setup-system-service true`, el instalador imprime `Successfully set up Nucleus as a system service` si configuró y ejecutó el software como un servicio del sistema. De lo contrario, el instalador no mostrará ningún mensaje si instala el software correctamente.
**nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
No puede usar el argumento `deploy-dev-tools` para implementar herramientas de desarrollo locales cuando ejecuta el instalador sin el argumento `--provision true`. Para obtener información sobre cómo implementar la CLI de Greengrass directamente en su dispositivo, consulte [Interfaz de la línea de comandos de Greengrass](gg-cli.md).

1. <a name="installer-verify-installation"></a>Verifique la instalación mediante la consulta de los archivos de la carpeta raíz.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Si la instalación se realizó correctamente, la carpeta raíz contiene varias carpetas, como `config`, `packages` y `logs`.

<a name="install-greengrass-core-run-software"></a>Si instaló el software AWS IoT Greengrass Core como un servicio del sistema, el instalador ejecutará el software automáticamente. De no ser así, debe ejecutar el software manualmente. Para obtener más información, consulte [Ejecute el software AWS IoT Greengrass principal](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Para obtener más información sobre cómo configurar y utilizar el software AWS IoT Greengrass, consulte lo siguiente:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md)
+ [Desarrollo de componentes de AWS IoT Greengrass](develop-greengrass-components.md)
+ [Implemente AWS IoT Greengrass componentes en los dispositivos](manage-deployments.md)
+ [Interfaz de la línea de comandos de Greengrass](gg-cli.md)

## Instalación de puntos de conexión de FIPS con aprovisionamiento automático de recursos
<a name="FIPS-auto-installation"></a>

El software AWS IoT Greengrass Core incluye un instalador que configura su dispositivo como un dispositivo principal de Greengrass. Para configurar un dispositivo rápidamente, el instalador puede proporcionar la AWS IoT AWS IoT cosa, el grupo de cosas, la función de IAM y el alias de la AWS IoT función que el dispositivo principal necesita para funcionar. El instalador también puede implementar las herramientas de desarrollo locales en el dispositivo principal, de modo que usted pueda usar el dispositivo para desarrollar y probar componentes de software personalizados. El instalador necesita credenciales de AWS para aprovisionar estos recursos y crear la implementación.

Si no puede proporcionar AWS las credenciales al dispositivo, puede aprovisionar los AWS recursos que el dispositivo principal necesita para funcionar. También puede implementar las herramientas de desarrollo en un dispositivo principal para usarlas como dispositivo de desarrollo. Esto le permite conceder menos permisos al dispositivo al ejecutar el instalador. Para obtener más información, consulte [Instale el software AWS IoT Greengrass principal con aprovisionamiento manual de recursos](manual-installation.md).

**importante**  <a name="install-greengrass-core-requirements-note"></a>
Antes de descargar el software AWS IoT Greengrass Core, compruebe que su dispositivo principal cumpla los [requisitos](greengrass-nucleus-component.md#greengrass-v2-requirements) para instalar y ejecutar el software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Configuración del entorno del dispositivo](#set-up-device-environment)
+ [Proporcione AWS las credenciales al dispositivo](#provide-installer-aws-credentials-auto)
+ [Descargue el software AWS IoT Greengrass principal](#download-greengrass-core-v2-auto)
+ [Instale el software principal AWS IoT Greengrass](#run-greengrass-core-v2-installer-auto)

### Configuración del entorno del dispositivo
<a name="set-up-device-environment"></a>

Siga los pasos de esta sección para configurar un dispositivo Linux o Windows para usarlo como su dispositivo principal de AWS IoT Greengrass .

#### Configuración de un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Para configurar un dispositivo Linux para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior. Los siguientes comandos muestran cómo instalar OpenJDK en su dispositivo.
   + Para distribuciones basadas en Debian o en Ubuntu:

     ```
     sudo apt install default-jdk
     ```
   + Para distribuciones basadas en Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + En Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + En Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Cuando se complete la instalación, ejecute el siguiente comando para comprobar que Java se ejecuta en su dispositivo Linux.

   ```
   java -version
   ```

   El comando imprime la versión de Java que se ejecuta en el dispositivo. Por ejemplo, en una distribución basada en Debian, el resultado podría ser similar al siguiente ejemplo.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Opcional) Cree el usuario y el grupo predeterminado del sistema que ejecutan los componentes del dispositivo. También puede optar por permitir que el instalador del software AWS IoT Greengrass principal cree este usuario y grupo durante la instalación con el argumento del `--component-default-user` instalador. Para obtener más información, consulte [Argumentos del instalador](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Compruebe que el usuario que ejecuta el software AWS IoT Greengrass principal (normalmente`root`) tiene permiso para ejecutar `sudo` con cualquier usuario y grupo.

   1. Ejecute el siguiente comando para abrir el archivo `/etc/sudoers`.

      ```
      sudo visudo
      ```

   1. Compruebe que el permiso del usuario se parezca al siguiente ejemplo.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. (Opcional) Para [ejecutar funciones de Lambda en contenedores](run-lambda-functions.md), debe habilitar la versión 1 de [cgroups](https://en.wikipedia.org/wiki/Cgroups), y habilitar y montar los cgroups de *memoria* y de *dispositivos*. Si no tiene previsto ejecutar funciones de Lambda en contenedores, puede omitir este paso.

   Para habilitar estas opciones de cgroups, arranque el dispositivo con los siguientes parámetros del kernel de Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Para obtener más información acerca de cómo ver y configurar los parámetros del kernel de su dispositivo, consulte la documentación del sistema operativo y del gestor de arranque. Siga las instrucciones para configurar permanentemente los parámetros del kernel.

1. Instale todas las demás dependencias necesarias en su dispositivo tal y como se indica en la lista de requisitos de [Requisitos de los dispositivos](greengrass-nucleus-component.md#greengrass-v2-requirements).

#### Configuración de un dispositivo de Windows
<a name="set-up-windows-device-environment"></a>

**nota**  
Esta característica está disponible para la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).<a name="set-up-windows-device-environment-procedure"></a>

**Para configurar un dispositivo Windows para AWS IoT Greengrass V2**

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior.

1. Compruebe si Java está disponible en la variable del sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) y agréguelo si no lo está. La LocalSystem cuenta ejecuta el software AWS IoT Greengrass principal, por lo que debe agregar Java a la variable de sistema PATH en lugar de a la variable de usuario PATH de su usuario. Haga lo siguiente:

   1. Pulse la tecla Windows para abrir el menú de inicio.

   1. Escriba **environment variables** para buscar las opciones del sistema en el menú de inicio.

   1. En los resultados de la búsqueda del menú de inicio, elija **Editar las variables de entorno del sistema** para abrir la ventana de **Propiedades del sistema**.

   1. Elija **Variables de entorno...** para abrir la ventana **Variables de entorno**.

   1. En **Variables del sistema**, elija **Ruta** y, luego, **Editar**. En la ventana **Editar variables de entorno**, puede ver cada ruta en una línea independiente.

   1. Compruebe si la ruta a la carpeta de la instalación de Java `bin` está presente. La ruta puede tener un aspecto similar al siguiente ejemplo.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Si la carpeta de la instalación de Java `bin` no aparece en **Ruta**, elija **Nueva** para agregarla y, a continuación, pulse **Aceptar**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Abra el símbolo del sistema de Windows (`cmd.exe`) como administrador.

1. <a name="set-up-windows-device-environment-create"></a>Cree el usuario predeterminado en la LocalSystem cuenta del dispositivo Windows. *password*Sustitúyalo por una contraseña segura.

   ```
   net user /add ggc_user password
   ```
**sugerencia**  <a name="windows-password-expiration-tip"></a>
Según su configuración de Windows, es posible que la contraseña del usuario caduque en una fecha futura. Para garantizar que sus aplicaciones de Greengrass sigan funcionando, controle cuándo caduca la contraseña y actualícela antes de que caduque. También puede configurar la contraseña del usuario para que nunca caduque.  
Para comprobar cuándo caducan un usuario y su contraseña, ejecute el siguiente comando.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Para configurar la contraseña de un usuario para que no caduque nunca, ejecute el siguiente comando.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Si utilizas Windows 10 o una versión posterior, donde el [`wmic`comando está en desuso](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic), ejecuta el siguiente PowerShell comando.  

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Descargue e instale la [PsExecutilidad](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) de Microsoft en el dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilice la PsExec utilidad para almacenar el nombre de usuario y la contraseña del usuario predeterminado en la instancia de Credential Manager de la LocalSystem cuenta. *password*Sustitúyala por la contraseña de usuario que configuraste anteriormente.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Si **PsExec License Agreement** se abre, elija **Accept** para aceptar la licencia y ejecute el comando.
**nota**  
En los dispositivos Windows, la LocalSystem cuenta ejecuta el núcleo de Greengrass y debe usar la PsExec utilidad para almacenar la información de usuario predeterminada en la LocalSystem cuenta. El uso de la aplicación Credential Manager almacena esta información en la cuenta de Windows del usuario que ha iniciado sesión actualmente, en lugar de en la LocalSystem cuenta.

### Proporcione AWS las credenciales al dispositivo
<a name="provide-installer-aws-credentials-auto"></a>

Proporcione AWS las credenciales del dispositivo para que el instalador pueda aprovisionar los AWS recursos necesarios. Para obtener más información sobre los permisos necesarios, consulte [Política de IAM mínima para que el instalador aprovisione recursos](provision-minimal-iam-policy.md).

**Para proporcionar AWS credenciales al dispositivo**
+ <a name="installer-export-aws-credentials"></a>Proporcione sus AWS credenciales al dispositivo para que el instalador pueda aprovisionar los recursos de IAM AWS IoT y los de su dispositivo principal. Para aumentar la seguridad, le recomendamos que obtenga credenciales temporales para un rol de IAM que permita únicamente los permisos mínimos necesarios para el aprovisionamiento. Para obtener más información, consulte [Política de IAM mínima para que el instalador aprovisione recursos](provision-minimal-iam-policy.md).
**nota**  
El instalador no guarda ni almacena sus credenciales.

  En el dispositivo, realice una de las siguientes acciones para recuperar las credenciales y ponerlas a disposición del instalador del software AWS IoT Greengrass principal:
  + (Recomendado) Utilice credenciales temporales de AWS IAM Identity Center

    1. Proporcione el ID de clave de acceso, la clave de acceso secreta y el token de sesión desde IAM Identity Center. Para obtener más información, consulte la **Actualización manual de credenciales** en [Obtener y actualizar las credenciales temporales](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html#how-to-get-temp-credentials) en la *Guía del usuario de IAM Identity Center.*

    1. Ejecute los siguientes comandos para proporcionar las credenciales al software AWS IoT Greengrass principal.

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
       ```

------
  + Use credenciales de seguridad temporales de un rol de (IAM):

    1. Proporcione el ID de clave de acceso, la clave de acceso secreta y el token de sesión desde un rol de IAM que asuma. Para obtener más información acerca de cómo recuperar estas credenciales, consulte [Solicitud de credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) en la *Guía del usuario de IAM*.

    1. Ejecute los siguientes comandos para proporcionar las credenciales al software AWS IoT Greengrass principal.

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
       ```

------
  + Use credenciales a largo plazo de un usuario de IAM:

    1. Proporcione el ID de clave de acceso y la clave de acceso secreta del usuario de IAM. Puede crear un usuario de IAM para el aprovisionamiento y luego eliminarlo. Para la política de IAM que debe proporcionarse al usuario, consulte [Política de IAM mínima para que el instalador aprovisione recursos](provision-minimal-iam-policy.md). Para obtener información acerca de cómo recuperar credenciales a largo plazo, consulte [Administración de las claves de acceso de los usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) en la *Guía de usuario de IAM*.

    1. Ejecute los siguientes comandos para proporcionar las credenciales al software AWS IoT Greengrass principal.

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       ```

------

    1. (Opcional) Si creó un usuario de IAM para aprovisionar su dispositivo de Greengrass, elimínelo.

    1. (Opcional) Si utilizó el ID de clave de acceso y la clave de acceso secreta de un usuario de IAM existente, actualice las claves del usuario para que dejen de ser válidas. Para obtener más información, consulte [Actualización de claves de acceso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) en la *Guía de usuario de AWS Identity and Access Management *.

### Descargue el software AWS IoT Greengrass principal
<a name="download-greengrass-core-v2-auto"></a>

Puede descargar la última versión del software AWS IoT Greengrass Core desde la siguiente ubicación:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**nota**  
Puede descargar una versión específica del software AWS IoT Greengrass Core desde la siguiente ubicación. *version*Sustitúyala por la versión que se va a descargar.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Para descargar el software AWS IoT Greengrass principal**

1. <a name="installation-download-ggc-software-step"></a>En su dispositivo principal, descargue el software AWS IoT Greengrass Core en un archivo denominado`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Al descargar este software, acepta el [acuerdo de licencia del software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Opcional) Verificación de la firma del software del núcleo de Greengrass
**nota**  
Esta característica está disponible en la versión 2.9.5 y versiones posteriores del núcleo de Greengrass.

   1. Use el siguiente comando para verificar la firma del artefacto del núcleo de Greengrass:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. La invocación `jarsigner` produce un resultado que indica los resultados de la verificación.

      1. Si el archivo zip del núcleo de Greengrass está firmado, el resultado contiene la siguiente declaración:

         ```
         jar verified.
         ```

      1. Si el archivo zip del núcleo de Greengrass no está firmado, el resultado contiene la siguiente declaración:

         ```
         jar is unsigned.
         ```

   1. Si ha proporcionado la opción `-certs` Jarsigner junto con las opciones `-verify` y `-verbose`, el resultado también incluye información detallada del certificado de firmante.

1. <a name="installation-unzip-ggc-software-step"></a>Descomprime el software AWS IoT Greengrass Core en una carpeta de tu dispositivo. *GreengrassInstaller*Sustitúyalo por la carpeta que desee usar.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Opcional) Ejecute el siguiente comando para ver la versión del software AWS IoT Greengrass principal.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**importante**  <a name="installer-folder-2.4.0-warning"></a>
Si instala una versión del núcleo de Greengrass anterior a la v2.4.0, no elimine esta carpeta después de instalar el software Core. AWS IoT Greengrass El software AWS IoT Greengrass Core utiliza los archivos de esta carpeta para ejecutarse.  
Si descargó la última versión del software, instale la versión 2.4.0 o posterior y podrá eliminar esta carpeta después de instalar el software AWS IoT Greengrass principal.

### Instale el software principal AWS IoT Greengrass
<a name="run-greengrass-core-v2-installer-auto"></a>

Ejecute el instalador con argumentos que especifiquen lo siguiente:
+ <a name="install-argument-aws-resources"></a>Cree los AWS recursos que el dispositivo principal necesita para funcionar.
+ <a name="install-argument-component-default-user"></a>Especifique si desea usar el usuario del sistema `ggc_user` para ejecutar los componentes de software en el dispositivo principal. En los dispositivos Linux, este comando también especifica el uso del grupo del sistema `ggc_group` y el instalador crea el usuario y el grupo del sistema por usted.
+ <a name="install-argument-system-service"></a>Configure el software AWS IoT Greengrass Core como un servicio del sistema que se ejecute durante el arranque. En los dispositivos Linux, esto requiere el sistema de inicio [Systemd](https://en.wikipedia.org/wiki/Systemd).
**importante**  <a name="windows-system-service-requirement-important-note"></a>
En los dispositivos principales de Windows, debe configurar el software AWS IoT Greengrass principal como un servicio del sistema.

Para configurar un dispositivo de desarrollo con herramientas de desarrollo local, especifique el argumento `--deploy-dev-tools true`. Una vez finalizada la instalación, la implementación de las herramientas de desarrollo local puede tardar hasta un minuto. 

Para obtener más información acerca de los argumentos que puede especificar, consulte [Argumentos del instalador](configure-installer.md).

**nota**  
<a name="jvm-tuning-note"></a>Si utilizas un AWS IoT Greengrass dispositivo con memoria limitada, puedes controlar la cantidad de memoria que utiliza el software AWS IoT Greengrass Core. Para controlar la asignación de memoria, puede configurar las opciones de tamaño de montón de la JVM en el parámetro de configuración `jvmOptions` del componente núcleo. Para obtener más información, consulte [Control de la asignación de memoria con las opciones de JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Para instalar el software AWS IoT Greengrass Core**

1. Use un editor de texto para crear un archivo de configuración llamado `config.yaml` para proporcionárselo al instalador.

   <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copie el siguiente contenido YAML en el archivo. Este archivo de configuración parcial especifica los parámetros del sistema y los parámetros del núcleo de Greengrass.

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       configuration:
         fipsMode: "true"
         iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com"
         iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"
         greengrassDataPlaneEndpoint: "iotData"
   ```
   + *us-west-2*Sustitúyalo por el Región de AWS lugar donde creó los recursos.
   + Reemplace el *iotDataEndpoint* por su punto de conexión de datos de AWS IoT .
   + Reemplace el *iotCredEndpoint* por su punto de conexión de credenciales de AWS IoT .

1. Ejecute el instalador AWS IoT Greengrass principal. Reemplace los valores de los argumentos en su comando de la siguiente manera.
**nota**  
Windows tiene una limitación de longitud de ruta de 260 caracteres. Si usa Windows, use una carpeta raíz como `C:\greengrass\v2` o `D:\greengrass\v2` para mantener las rutas de los componentes de Greengrass por debajo del límite de 260 caracteres.<a name="installer-replace-arguments"></a>

   1. `/greengrass/v2`o bien*C:\$1greengrass\$1v2*: la ruta a la carpeta raíz que se utilizará para instalar el software AWS IoT Greengrass Core.

   1. *GreengrassInstaller*. La ruta a la carpeta en la que desempaquetó el instalador del software AWS IoT Greengrass Core.

   1. *region*. El Región de AWS lugar en el que encontrar o crear recursos.

   1. *MyGreengrassCore*. El nombre del AWS IoT dispositivo principal de Greengrass. Si el objeto no existe, el instalador la crea. El instalador descarga los certificados para autenticarse como tal. AWS IoT Para obtener más información, consulte [Autenticación y autorización de dispositivos para AWS IoT Greengrass](device-auth.md).
**nota**  <a name="install-argument-thing-name-constraint"></a>
El nombre del objeto no puede contener dos puntos (`:`).

   1. *MyGreengrassCoreGroup*. El nombre del grupo de AWS IoT cosas de su dispositivo principal de Greengrass. Si el grupo de objetos no existe, el instalador lo crea y le agrega un objeto. Si el grupo de objetos existe y tiene una implementación activa, el dispositivo principal descarga y ejecuta el software que especifique la implementación.
**nota**  <a name="install-argument-thing-group-name-constraint"></a>
El nombre del grupo de objetos no puede contener dos puntos (`:`).

   1. *GreengrassV2IoTThingPolicy*. El nombre de la AWS IoT política que permite a los dispositivos principales de Greengrass comunicarse con AWS IoT y. AWS IoT Greengrass Si la AWS IoT política no existe, el instalador crea una AWS IoT política permisiva con este nombre. Puede restringir los permisos de esta política según su caso de uso. Para obtener más información, consulte [AWS IoT Política mínima para los dispositivos AWS IoT Greengrass V2 principales](device-auth.md#greengrass-core-minimal-iot-policy).

   1. *GreengrassV2TokenExchangeRole*. El nombre de la función de IAM que permite al dispositivo principal de Greengrass obtener AWS credenciales temporales. Si el rol no existe, el instalador lo crea y asocia una política denominada `GreengrassV2TokenExchangeRoleAccess`. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

   1. *GreengrassCoreTokenExchangeRoleAlias*. El alias de la función de IAM que permite al dispositivo principal de Greengrass obtener credenciales temporales más adelante. Si el alias del rol no existe, el instalador lo crea y lo dirige al rol de IAM que especifique. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user ggc_user:ggc_group \
     --provision true \
     --init-config ./GreengrassInstaller/config.yaml \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --aws-region region ^
     --thing-name MyGreengrassCore ^
     --thing-group-name MyGreengrassCoreGroup ^
     --thing-policy-name GreengrassV2IoTThingPolicy ^
     --tes-role-name GreengrassV2TokenExchangeRole ^
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ^
     --component-default-user ggc_user ^
     --provision true ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --aws-region region `
     --thing-name MyGreengrassCore `
     --thing-group-name MyGreengrassCoreGroup `
     --thing-policy-name GreengrassV2IoTThingPolicy `
     --tes-role-name GreengrassV2TokenExchangeRole `
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias `
     --component-default-user ggc_user `
     --provision true `
     --setup-system-service true
   ```

------
**importante**  <a name="windows-system-service-installer-argument-important-note"></a>
En los dispositivos principales de Windows, debe especificar si `--setup-system-service true` desea configurar el software AWS IoT Greengrass Core como un servicio del sistema.

   El instalador imprime los siguientes mensajes si la operación es exitosa:
   + Si especifica `--provision`, el instalador imprime `Successfully configured Nucleus with provisioned resource details` si configuró los recursos correctamente.
   + Si especifica `--deploy-dev-tools`, el instalador imprime `Configured Nucleus to deploy aws.greengrass.Cli component` si creó la implementación correctamente.
   + Si especifica `--setup-system-service true`, el instalador imprime `Successfully set up Nucleus as a system service` si configuró y ejecutó el software como un servicio.
   + Si no especifica `--setup-system-service true`, el instalador imprime `Launched Nucleus successfully` si se ejecutó correctamente y ejecutó el software.

1. Omita este paso si instaló la versión 2.0.4 o una versión posterior de [Núcleo de Greengrass](greengrass-nucleus-component.md). Si descargó la versión más reciente del software, instaló la versión 2.0.4 o una versión posterior.

   Ejecute el siguiente comando para establecer los permisos de archivo necesarios para la carpeta raíz del software AWS IoT Greengrass Core. `/greengrass/v2`Sustitúyala por la carpeta raíz que especificó en el comando de instalación y */greengrass* sustitúyala por la carpeta principal de la carpeta raíz.

   ```
   sudo chmod 755 /greengrass/v2 && sudo chmod 755 /greengrass
   ```

<a name="install-greengrass-core-run-software"></a>Si instaló el software AWS IoT Greengrass principal como un servicio del sistema, el instalador ejecutará el software automáticamente. De no ser así, debe ejecutar el software manualmente. Para obtener más información, consulte [Ejecute el software AWS IoT Greengrass principal](run-greengrass-core-v2.md).

**nota**  
De forma predeterminada, el rol de IAM que crea el instalador no permite el acceso a los artefactos de componentes de los buckets de S3. Para implementar componentes personalizados que definan artefactos en Amazon S3, debe agregar permisos al rol para permitir que su dispositivo principal recupere artefactos de componentes. Para obtener más información, consulte [Cómo permitir el acceso a los buckets de S3 para los artefactos del componente](device-service-role.md#device-service-role-access-s3-bucket).  
Si aún no tiene un bucket de S3 para los artefactos de los componentes, puede agregar estos permisos más adelante, después de crear un bucket.

<a name="install-greengrass-core-next-steps-intro"></a>Para obtener más información sobre cómo configurar y utilizar el software AWS IoT Greengrass, consulte lo siguiente:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md)
+ [Desarrollo de componentes de AWS IoT Greengrass](develop-greengrass-components.md)
+ [Implemente AWS IoT Greengrass componentes en los dispositivos](manage-deployments.md)
+ [Interfaz de la línea de comandos de Greengrass](gg-cli.md)

## Componentes propios que cumplen con las normas de FIPS
<a name="FIPS-compliance"></a>


|  |  | 
| --- | --- | 
| aws.greengrass.Nucleus | data.iot-fips.us-east-1.amazonaws.com | 
|  | greengrass-fips.us-east-1.amazonaws.com | 
|  | data.credentials.iot-fips.us-east-1.amazonaws.com | 
| aws.greengrass.TokenExchangeService | data.credentials.iot-fips.us-east-1.amazonaws.com | 
| aws.greengrass.Cli |  | 
| aws.greengrass.StreamManager | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v2/developerguide/FIPS.html) El administrador de flujos no es compatible con el punto AWS IoT Analytics final FIPS  | 
| aws.greengrass.LogManager | logs-fips. us-east-1.amazonaws.com | 
| aws.greengrass.crypto.Pkcs11Provider |  | 
| aws.greengrass.ShadowManager |  | 
| aws.greengrass.DockerApplicationManager | consejos electrónicos. us-east-1.amazonaws.com | 
| aws.greengrass.SecretManager | administrador de secretos - fips. us-east-1.amazonaws.com | 
| aws.greengrass.telemetry.NucleusEmitter |  | 
| aws.greengrass.clientdevices.IPDetector |  | 
| aws.greengrass.DiskSpooler |  | 

# Resiliencia en AWS IoT Greengrass
<a name="disaster-recovery-resiliency"></a>

La infraestructura global de AWS se basa en regiones y zonas de disponibilidad de Amazon Web Services. Cada región de Región de AWS proporciona varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de uno o varios centros de datos. 

Para obtener más información, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Además de la infraestructura global de AWS, AWS IoT Greengrass ofrece varias características que le ayudan con sus necesidades de resiliencia y copia de seguridad de los datos.
+ Puede configurar un dispositivo principal de Greengrass para escribir registros en el sistema de archivos local y en los Registros de CloudWatch. Si el dispositivo principal pierde la conectividad, puede seguir registrando mensajes en el sistema de archivos. Cuando se vuelve a conectar, escribe los mensajes de registro en los Registros de CloudWatch. Para obtener más información, consulte [Supervisión de los registros de AWS IoT Greengrass](monitor-logs.md).
+ Si un dispositivo principal se queda sin alimentación durante una implementación, se reanudará la implementación cuando se reinicie el software AWS IoT Greengrass Core.
+ Si el dispositivo principal pierde conectividad a Internet, los dispositivos de cliente de Greengrass pueden seguir comunicándose a través de la red local.
+ Puede crear componentes de Greengrass que lean flujos del [administrador de flujos](manage-data-streams.md) y envíen los datos a destinos de almacenamiento locales.

# Seguridad de la infraestructura en AWS IoT Greengrass
<a name="infrastructure-security"></a>

Como servicio gestionado, AWS IoT Greengrass está protegido por los procedimientos de seguridad de red AWS global que se describen en el documento técnico [Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Utiliza las llamadas a la API AWS publicadas para acceder a AWS IoT Greengrass través de la red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.2 o con una versión posterior. Recomendamos TLS 1.3 o una versión posterior. Los clientes también deben ser compatibles con conjuntos de cifrado con confidencialidad directa total (PFS), como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de IAM. También puede utilizar [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

En un AWS IoT Greengrass entorno, los dispositivos utilizan certificados X.509 y claves criptográficas para conectarse y autenticarse en él. Nube de AWS Para obtener más información, consulte [Autenticación y autorización de dispositivos para AWS IoT Greengrass](device-auth.md).

# Análisis de configuración y vulnerabilidad en AWS IoT Greengrass
<a name="vulnerability-analysis-and-management"></a>

Los entornos de IoT pueden constar de un gran número de dispositivos que tienen diversas capacidades, son de larga duración y están distribuidos geográficamente. Estas características hacen que la configuración del dispositivo sea compleja y propensa a errores. Y dado que los dispositivos a menudo están limitados en potencia informática, memoria y capacidades de almacenamiento, esto limita el uso del cifrado y otras formas de seguridad en los propios dispositivos. Además, los dispositivos a menudo usan software con vulnerabilidades conocidas. Estos factores hacen que los dispositivos de IoT sean un objetivo atractivo para los piratas informáticos y dificultan la protección continuada de los mismos.

AWS IoT Device Defender aborda estos desafíos proporcionando herramientas para identificar los problemas de seguridad y las desviaciones de las mejores prácticas. Puede utilizarlos AWS IoT Device Defender para analizar, auditar y supervisar los dispositivos conectados a fin de detectar comportamientos anormales y mitigar los riesgos de seguridad. AWS IoT Device Defender puede auditar los dispositivos para asegurarse de que cumplen con las mejores prácticas de seguridad y detectar un comportamiento anormal en los dispositivos. Esto permite aplicar políticas de seguridad coherentes en todos sus dispositivos y responder rápidamente cuando los dispositivos se ven comprometidos. IForpara obtener más información, consulte los siguientes temas:
+ El [componente Device Defender](device-defender-component.md)
+ [AWS IoT Device Defender](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html) en la *Guía para desarrolladores de AWS IoT Core *.

En AWS IoT Greengrass los entornos, debe tener en cuenta las siguientes consideraciones:
+ Es su responsabilidad proteger los dispositivos físicos, el sistema de archivos en sus dispositivos y la red local.
+ AWS IoT Greengrass no impone el aislamiento de red para los componentes de Greengrass definidos por el usuario, se ejecuten o no en un contenedor de Greengrass. Por lo tanto, es posible que los componentes de Greengrass se comuniquen con cualquier otro proceso que se ejecute en el sistema o fuera a través de la red.

# Integridad del código en AWS IoT Greengrass V2
<a name="code-integrity"></a>

AWS IoT Greengrass implementa componentes de software desde la Nube de AWS a dispositivos que ejecutan el software AWS IoT Greengrass Core. Estos componentes de software incluyen los [componentes proporcionados por AWS](public-components.md) y los [componentes personalizados](create-components.md) que puede cargar en su Cuenta de AWS. Cada componente incluye una receta. La receta define los metadatos del componente y cualquier cantidad de artefactos, que son componentes binarios, como el código compilado y los recursos estáticos. Los artefactos de los componentes se almacenan en Amazon S3.

A medida que desarrolle e implemente los componentes de Greengrass, siga estos pasos básicos que funcionan con los artefactos de los componentes en su Cuenta de AWS y en sus dispositivos:

1. Cree y cargue artefactos en buckets de S3.

1. Cree un componente a partir de una receta y artefactos en el servicio de AWS IoT Greengrass, que calcula un [hash criptográfico](https://en.wikipedia.org/wiki/Cryptographic_hash_function) de cada artefacto.

1. Implemente un componente en los dispositivos principales de Greengrass, que descargan y verifican la integridad de cada artefacto.

AWS es responsable de mantener la integridad de los artefactos después de cargarlos en buckets de S3, incluso cuando implementa componentes en los dispositivos principales de Greengrass. Usted es responsable de proteger los artefactos de software antes de subirlos a los buckets de S3. También es responsable de proteger el acceso a los recursos en su Cuenta de AWS, incluidos los buckets de S3 en los que carga los artefactos del componente.

**nota**  
Amazon S3 ofrece una característica llamada bloqueo de objetos de S3 que puede usar para protegerse contra los cambios en los artefactos del componente en los buckets de S3 de su Cuenta de AWS. Puede usar el bloqueo de objetos de S3 para evitar que se eliminen o se sobrescriban los artefactos del componente. Para obtener más información, consulte el [uso del bloqueo de objetos de S3 ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Cuando AWS publica un componente público y cuando carga un componente personalizado, AWS IoT Greengrass calcula un resumen criptográfico para cada artefacto del componente. AWS IoT Greengrass actualiza la receta del componente para incluir el resumen de cada artefacto y el algoritmo hash usado para calcular ese resumen. Este resumen garantiza la integridad del artefacto, ya que si el artefacto cambia durante en la Nube de AWS o durante la descarga, el resumen del archivo no coincidirá con el resumen que AWS IoT Greengrass almacena en la receta del componente. Para obtener más información, consulte los [artefactos en la referencia de la receta del componente](component-recipe-reference.md#manifest-artifacts-definition).

Al implementar un componente en un dispositivo principal, el software principal AWS IoT Greengrass descarga la receta del componente y cada artefacto del componente que define la receta. El software principal de AWS IoT Greengrass calcula el resumen de cada archivo de artefacto descargado y lo compara con el resumen de ese artefacto de la receta. Si los resúmenes no coinciden, se produce un error en la implementación y el software AWS IoT Greengrass Core elimina los artefactos descargados del sistema de archivos del dispositivo. Para obtener más información sobre cómo se protegen las conexiones entre los dispositivos principales y AWS IoT Greengrass, consulte [Cifrado en tránsito](encryption-in-transit.md).

Usted es responsable de proteger los archivos del artefacto de componente en los sistemas de archivos del dispositivo principal. El software principal de AWS IoT Greengrass guarda los artefactos en la carpeta `packages` en la carpeta raíz de Greengrass. Puede usar AWS IoT Device Defender para analizar, auditar y monitorear los dispositivos principales. Para obtener más información, consulte [Análisis de configuración y vulnerabilidad en AWS IoT Greengrass](vulnerability-analysis-and-management.md).

# AWS IoT Greengrass y puntos finales de VPC de interfaz ()AWS PrivateLink
<a name="vpc-interface-endpoints"></a>

Puede establecer una conexión privada entre la VPC y el plano de AWS IoT Greengrass control mediante la creación de un punto final de la *VPC* de interfaz. Puede usar este punto final para administrar los componentes, las implementaciones y los dispositivos principales del servicio. AWS IoT Greengrass Los puntos finales de la interfaz funcionan con una tecnología que le permite acceder de AWS IoT Greengrass APIs forma privada sin una puerta de enlace a Internet, un dispositivo NAT, una conexión VPN o una conexión AWS Direct Connect. [AWS PrivateLink](https://aws.amazon.com/privatelink) Las instancias de su VPC no necesitan direcciones IP públicas para comunicarse con ellas. AWS IoT Greengrass APIs El tráfico entre tu VPC y AWS IoT Greengrass no sale de la red de Amazon.

Cada punto de conexión de la interfaz está representado por una o más [interfaces de red elásticas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) en las subredes. 

Para obtener más información, consulte [Puntos de conexión de VPC de interfaz (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) en la *Guía del usuario de Amazon VPC*.

**Topics**
+ [Consideraciones sobre los puntos AWS IoT Greengrass finales de VPC](#vpc-endpoint-considerations)
+ [Cree un punto final de VPC de interfaz para las operaciones del plano AWS IoT Greengrass de control](#create-vpc-endpoint-control-plane)
+ [Crear una política de puntos de conexión de VPC para AWS IoT Greengrass](#vpc-endpoint-policy)
+ [Opere un dispositivo AWS IoT Greengrass central en VPC](#vpc-operate-device-vpce)

## Consideraciones sobre los puntos AWS IoT Greengrass finales de VPC
<a name="vpc-endpoint-considerations"></a>

Antes de configurar un punto de enlace de VPC de interfaz AWS IoT Greengrass, consulte las [propiedades y limitaciones del punto de enlace de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations) en la Guía del usuario de Amazon *VPC*. Además, tenga en cuenta las siguientes consideraciones:
+ AWS IoT Greengrass admite realizar llamadas a todas las acciones de la API de su plano de control desde su VPC. El plano de control incluye operaciones como [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)y [ListEffectiveDeployments](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListEffectiveDeployments.html). El plano de control *no* incluye operaciones como [ResolveComponentCandidates](device-auth.md#iot-policies)[Discover](greengrass-discover-api.md), que son operaciones del plano de datos.
+ Los puntos de enlace de VPC para actualmente no AWS IoT Greengrass se admiten en las regiones de China AWS .

## Cree un punto final de VPC de interfaz para las operaciones del plano AWS IoT Greengrass de control
<a name="create-vpc-endpoint-control-plane"></a>

Puede crear un punto final de VPC para el plano de AWS IoT Greengrass control mediante la consola Amazon VPC o el (). AWS Command Line Interface AWS CLI Para obtener más información, consulte [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) en la *Guía del usuario de Amazon VPC*.

Cree un punto final de VPC para AWS IoT Greengrass usar el siguiente nombre de servicio: 
+ com.amazonaws. *region*.greengrass

Si habilita el DNS privado para el punto final, puede realizar solicitudes a la API para AWS IoT Greengrass utilizar su nombre de DNS predeterminado para la región, por ejemplo. `greengrass.us-east-1.amazonaws.com` El DNS privado está habilitado de forma predeterminada.

Para más información, consulte [Acceso a un servicio a través de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint) en la *Guía del usuario de Amazon VPC*.

## Crear una política de puntos de conexión de VPC para AWS IoT Greengrass
<a name="vpc-endpoint-policy"></a>

Puede adjuntar una política de punto de conexión a su punto de conexión de VPC que controle el acceso a las operaciones del plano de control de AWS IoT Greengrass . La política especifica la siguiente información:
+ La entidad principal que puede realizar acciones.
+ Acciones que la entidad principal puede realizar.
+ Los recursos sobre los que la entidad principal puede realizar acciones.

Para más información, consulte [Control del acceso a los servicios con puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) en la *Guía del usuario de Amazon VPC*.

**Example Ejemplo: política de puntos finales de VPC para acciones AWS IoT Greengrass**  
El siguiente es un ejemplo de una política de puntos finales para AWS IoT Greengrass. Cuando se adjunta a un punto final, esta política otorga acceso a las AWS IoT Greengrass acciones enumeradas a todos los principales de todos los recursos.  

```
{
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Allow",
            "Action": [
                "greengrass:CreateDeployment",
                "greengrass:ListEffectiveDeployments"
            ],
            "Resource": "*"
        }
    ]
}
```

## Opere un dispositivo AWS IoT Greengrass central en VPC
<a name="vpc-operate-device-vpce"></a>

Puede operar un dispositivo principal de Greengrass y realizar implementaciones en VPC sin acceso público a Internet. Como mínimo, debe configurar los siguientes puntos de conexión de VPC con los alias de DNS correspondientes. Para obtener más información sobre cómo crear y utilizar puntos de conexión de VPC, consulte [Crear un punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) en la *Guía del usuario de Amazon VPC*.

**nota**  
La función de VPC para crear automáticamente un registro DNS está deshabilitada para las credenciales AWS IoT data y AWS IoT . Para conectarse a estos puntos de conexión, debe crear manualmente un registro DNS privado. Para obtener más información, consulte [DNS privado para puntos de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-private-dns). Para obtener más información sobre las limitaciones de la AWS IoT Core VPC, consulte Limitaciones de los puntos finales de la [VPC](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-limitations). 

### Requisitos previos
<a name="vpc-endpoint-prerequisites"></a>
+ Debe instalar el software AWS IoT Greengrass principal siguiendo los pasos de aprovisionamiento manual. Para obtener más información, consulte [Instale el software AWS IoT Greengrass principal con aprovisionamiento manual de recursos](manual-installation.md).

### Limitaciones
<a name="vpc-endpoint-limitaions"></a>
+ El funcionamiento de un dispositivo principal de Greengrass en VPC no es compatible en las regiones de China y AWS GovCloud (US) Regions.
+ [Para obtener más información sobre las limitaciones de los puntos de AWS IoT data enlace de VPC del proveedor de AWS IoT credenciales, consulte Limitaciones.](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-limitations)

### Configuración de su dispositivo principal de Greengrass para que funcione en VPC
<a name="vpc-endpoint-operate-gg-core"></a>

****

1. Obtenga los AWS IoT puntos de conexión que desee y Cuenta de AWS guárdelos para usarlos más adelante. El dispositivo usa estos puntos de conexión para conectarse a AWS IoT. Haga lo siguiente:

   1. Obtenga el punto final AWS IoT de datos para su. Cuenta de AWS

      ```
      aws iot describe-endpoint --endpoint-type iot:Data-ATS
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
      }
      ```

   1. Obtenga el punto final de AWS IoT credenciales para su Cuenta de AWS.

      ```
      aws iot describe-endpoint --endpoint-type iot:CredentialProvider
      ```

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      ```
      {
        "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
      }
      ```

1. Cree una interfaz de Amazon VPC para los puntos de enlace AWS IoT data y AWS IoT las credenciales:

   1. Vaya a la consola de [puntos de conexión](https://console.aws.amazon.com/vpc/home#/endpoints) de **VPC**, en **Nube virtual privada** en el menú de la izquierda, elija **Puntos de enlace** y después **Crear punto de conexión**.

   1. En la página **Crear punto de conexión**, especifique la siguiente información.
      + Elija **Servicio de AWS** en **Categoría de servicio**.
      + En **Nombre del servicio**, busque introduciendo la palabra clave `iot`. En la lista de servicios de `iot` que se muestra, elija el punto de conexión. 

        Si crea un punto de enlace de VPC para el plano de AWS IoT Core datos, elija el punto de enlace de la API del plano de AWS IoT Core datos para su región. El punto de conexión tendrá el formato `com.amazonaws.region.iot.data`. 

        Si crea un punto de enlace de VPC para el proveedor de AWS IoT Core credenciales, elija el punto de enlace del proveedor de AWS IoT Core credenciales para su región. El punto de conexión tendrá el formato `com.amazonaws.region.iot.credentials`.
**nota**  
El nombre del servicio para el plano de AWS IoT Core datos en la región de China tendrá este formato`cn.com.amazonaws.region.iot.data`. La región de China no admite la creación de puntos finales de VPC para el proveedor de AWS IoT Core credenciales.
      + Para la **VPC** y **las subredes**, elija la VPC en la que desee crear el punto final y las zonas de disponibilidad (AZs) en las que desee crear la red del punto final.
      + En **Habilitar nombre de DNS**, asegúrese de que **Habilitar para este punto de conexión** no está seleccionado. Ni el plano AWS IoT Core de datos ni el proveedor de AWS IoT Core credenciales admiten todavía nombres DNS privados.
      + En **Grupo de seguridad**, elija los grupos de seguridad que deban asociarse a las interfaces de red de punto de conexión.
      + Puede agregar o eliminar etiquetas si lo desea. Las etiquetas son pares de nombre-valor que se utilizan para asociar al punto de conexión. 

   1. Para crear su punto de conexión de VPC, elija **Crear punto de conexión**.

1. Después de crear el AWS PrivateLink punto final, en la pestaña **Detalles** del dispositivo, verá una lista de nombres de DNS. Puede utilizar uno de estos nombres DNS que ha creado en esta sección para [configurar su zona alojada privada](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#connect-iot-core-create-phz-lns).

1. Cree un punto de conexión de Amazon S3. Para obtener más información consulte [Crear un punto de conexión de VPC de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#s3-creating-vpc).

1. Si utiliza los [componentes de Greengrass proporcionados por AWS](https://docs.aws.amazon.com/greengrass/v2/developerguide/public-components.html), es posible que se necesiten configuraciones y puntos de conexión adicionales. Para ver los requisitos de los puntos de conexión, seleccione el componente de la lista de componentes proporcionados por AWS y consulte la sección de requisitos. Por ejemplo, los [requisitos del componente del administrador de registros](log-manager-component.md#log-manager-component-requirements) indican que este componente debe poder realizar las solicitudes salientes al punto de conexión `logs.region.amazonaws.com`.

   Si utiliza su propio componente, es posible que deba revisar las dependencias y realizar pruebas adicionales para determinar si se requieren puntos de conexión adicionales.

1. En la configuración del núcleo de Greengrass, `greengrassDataPlaneEndpoint` debe estar configurado en **iotdata**. Para obtener más información, consulte la [Configuración del núcleo de Greengrass](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration).

1. Si se encuentra en la región `us-east-1`, defina el parámetro de configuración `s3EndpointType` en **REGIONAL** en la configuración del núcleo de Greengrass. Esta característica está disponible para las versiones 2.11.3 y posteriores del núcleo de Greengrass.

**Example Ejemplo: configuración de componentes**  

```
{
"aws.greengrass.Nucleus": {
   "configuration": {
      "awsRegion": "us-east-1",
      "iotCredEndpoint": "xxxxxx.credentials.iot.region.amazonaws.com",
      "iotDataEndpoint": "xxxxxx-ats.iot.region.amazonaws.com",
      "greengrassDataPlaneEndpoint": "iotdata",
      "s3EndpointType": "REGIONAL"
      ...
     }
   }
}
```

En la siguiente tabla, se proporciona información sobre los alias de DNS privados personalizados correspondientes.


| Servicio | Nombre del servicio de punto de conexión de VPC | Tipo de punto de conexión de VPC | Alias de DNS privado personalizado | Notas | 
| --- | --- | --- | --- | --- | 
|  AWS IoT data  | `com.amazonaws.region.iot.data` | Interfaz |  `prefix-ats.iot.region.amazonaws.com`  |  El registro DNS privado debe coincidir con el AWS IoT data punto final de su cuenta:`aws iot describe–endpoint ––endpoint–type iot:Data-ATS`.  | 
| AWS IoT Credenciales | `com.amazonaws.region.iot.credentials` | Interfaz | `prefix.credentials.iot.region.amazonaws.com` | El registro DNS privado debe coincidir con el punto final de AWS IoT las credenciales de su cuenta:`aws iot describe–endpoint ––endpoint–type iot:CredentialProvider`. | 
| Amazon S3 | `com.amazonaws.region.s3` | Interfaz |  | El registro DNS se crea automáticamente. | 

# Mejores prácticas de seguridad para AWS IoT Greengrass
<a name="security-best-practices"></a>

Este tema contiene las mejores prácticas de seguridad para AWS IoT Greengrass.

## Conceda los mínimos permisos posibles
<a name="least-privilege"></a>

Siga el principio de privilegio mínimo para los componentes ejecutándolos como usuarios sin privilegios. Los componentes no deben ejecutarse como raíz a menos que sea absolutamente necesario.

Utilice el conjunto mínimo de permisos en roles de IAM. Limite el uso del comodín `*` para las propiedades `Action` y `Resource` en las políticas de IAM. En su lugar, declare un conjunto finito de acciones y recursos cuando sea posible. Para obtener más información acerca de los privilegios mínimos y otras prácticas recomendadas de política, consulte [Prácticas recomendadas sobre las políticas](security_iam_id-based-policy-examples.md#security_iam_service-with-iam-policy-best-practices).

La mejor práctica de privilegios mínimos también se aplica a AWS IoT las políticas que asocie a su núcleo de Greengrass.

## No codifique las credenciales en los componentes de Greengrass
<a name="no-hardcoded-credentials"></a>

No codifique las credenciales en los componentes de Greengrass definidos por el usuario. Para proteger mejor sus credenciales:
+ Para interactuar con AWS los servicios, defina los permisos para acciones y recursos específicos en la función de [servicio principal de dispositivos de Greengrass](device-service-role.md).
+ Utilice el [componente de administrador de secretos](secret-manager-component.md) para almacenar sus credenciales. O bien, si la función usa el AWS SDK, use las credenciales de la cadena de proveedores de credenciales predeterminada.

## No registre información confidencial
<a name="protect-pii"></a>

Debe evitar el registro de credenciales y otra información de identificación personal (PII). Le recomendamos que implemente las siguientes medidas de seguridad, aunque el acceso a los registros locales en un dispositivo principal requiera privilegios de root y el acceso a los CloudWatch registros requiera permisos de IAM.
+ No utilice información confidencial en las rutas de temas de MQTT.
+ No utilice información confidencial en nombres, tipos y atributos de dispositivo (objeto) en el registro de AWS IoT Core .
+ No registre información confidencial en los componentes de Greengrass o funciones de lambda definidas por el usuario.
+ No utilice información confidencial en los nombres ni en los IDs recursos de Greengrass:
  + Dispositivos principales
  + Componentes
  + Implementaciones
  + Loggers

## Mantenga sincronizado el reloj del dispositivo
<a name="device-clock"></a>

Es importante que la hora del dispositivo sea precisa. Los certificados X.509 tienen una fecha y una hora de caducidad. El reloj del dispositivo se utiliza para comprobar que un certificado de servidor sigue siendo válido. Los relojes de dispositivos pueden variar con el tiempo o las baterías pueden descargarse.

Para obtener más información, consulte las prácticas recomendadas [Mantener sincronizado el reloj del dispositivo](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-clock) en la *Guía del desarrollador de AWS IoT Core *.

## Recomendaciones de conjunto de cifrado
<a name="cipher-suites"></a>

Greengrass selecciona de forma predeterminada los conjuntos de cifrado TLS más recientes disponibles en el dispositivo. Considere deshabilitar el uso de conjuntos de cifrado antiguos en el dispositivo. Por ejemplo, los conjuntos de cifrado CBC. 

Para obtener más información, consulte la [configuración de cifrado de Java](https://www.java.com/configure_crypto.html).

## Véase también
<a name="security-best-practices-see-also"></a>
+ [Prácticas recomendadas de seguridad para AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html) en la *Guía del desarrollador de AWS IoT *
+ [Diez reglas de oro de seguridad para las soluciones de IoT industrial](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/) en el *Internet de las cosas en el blog AWS oficial*