Autorización de los dispositivos principales para interactuar con los servicios de AWS - AWS IoT Greengrass

Autorización de los dispositivos principales para interactuar con los servicios de AWS

Los dispositivos principales de AWS IoT Greengrass utilizan el proveedor de credenciales de AWS IoT Core para autorizar las llamadas a los servicios de AWS. El proveedor de credenciales de AWS IoT Core permite a los dispositivos utilizar sus certificados X.509 como identidad única del dispositivo para autenticar las solicitudes de AWS. Esto elimina la necesidad de almacenar un ID de clave de acceso de AWS y una clave de acceso secreta en los dispositivos principales de AWS IoT Greengrass. Para obtener más información, consulte Autorización de llamadas a los servicios de AWS en la Guía para desarrolladores de AWS IoT Core.

Al ejecutar el software AWS IoT Greengrass Core, puede optar por aprovisionar los recursos de AWS que requiere el dispositivo principal. Esto incluye el rol de AWS Identity and Access Management (IAM) que asume su dispositivo principal a través del proveedor de credenciales de AWS IoT Core. Utilice el argumento --provision true para configurar un rol y políticas que permitan al dispositivo principal obtener credenciales temporales de AWS. Este argumento también configura un alias del rol de AWS IoT que apunta a este rol de IAM. Puede especificar el nombre del rol de IAM y el alias del rol de AWS IoT que se van a usar. 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.

  • Alias del rol de AWS IoT: 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 Core.

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.

Puede adquirir credenciales temporales de AWS para este rol de IAM a fin de realizar operaciones de AWS en sus componentes personalizados. Para obtener más información, consulte Interacción con servicios de AWS.

Permisos de rol de servicio para dispositivos principales

El rol permite que el siguiente servicio asuma el rol:

  • credentials.iot.amazonaws.com

Si utiliza 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. 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
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
v2.4.x
{ "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
{ "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

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.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
  2. 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.

  3. Ejecute el siguiente comando para asociar la política al rol del dispositivo principal. Sustituya GreengrassV2TokenExchangeRole 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.