Prevención de la sustitución confusa entre servicios - AWS IoT Core

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.

Prevención de la sustitución confusa entre servicios

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 AWS, la suplantación de identidad entre 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 puede 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 le ayudan a proteger sus datos para todos los servicios cuyos directores de servicio tengan acceso a los recursos de su cuenta.

Para limitar los permisos que AWS IoT proporciona otro servicio al recurso, recomendamos utilizar las claves de contexto de condición aws:SourceAccountglobal aws:SourceArny las claves de contexto en las políticas de recursos. 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.

La forma más eficaz de protegerse contra el confuso problema de los diputados es utilizar la clave de contexto de condición aws:SourceArn global con el nombre completo del recurso de Amazon (ARN) del recurso. En AWS IoT, aws:SourceArn debe cumplir con el formato: arn:aws:iot:region:account-id:resource-type/resource-id para permisos específicos de un recurso oarn:aws:iot:region:account-id:*. El identificador del recurso puede ser el nombre o el identificador del recurso permitido o una declaración comodín del recurso permitido. IDs Asegúrese de que region coincide con tu AWS IoT Región y el account-id coincide con el ID de su cuenta de cliente.

El siguiente ejemplo muestra cómo evitar el confuso problema del diputado mediante las claves de contexto de condición aws:SourceAccount global aws:SourceArn y las claves de contexto del AWS IoT política de confianza de roles. Para obtener más ejemplos, consulte Ejemplos detallados de prevención confusa de los diputados.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*" } } } ] }
nota

Si recibe errores de denegación de acceso, puede deberse a la integración del servicio con AWS Security Token Service (STS) no admite las claves de aws:SourceAccount contexto aws:SourceArn y.

Ejemplos detallados de prevención confusa de los diputados

Esta sección proporciona ejemplos detallados de cómo prevenir el confuso problema de los diputados mediante el uso de las claves de contexto aws:SourceArn y condición aws:SourceAccount global del AWS IoT política de confianza de roles.

Aprovisionamiento de flotas

Puede configurar el aprovisionamiento de flotas mediante un recurso de plantilla de aprovisionamiento. Cuando una plantilla de aprovisionamiento hace referencia a una función de aprovisionamiento, la política de confianza de esa función puede incluir las claves y las aws:SourceArn claves de condición. aws:SourceAccount Estas claves limitan los recursos para los que la configuración puede invocar la solicitud. sts:AssumeRole

El rol con la siguiente política de confianza solo lo puede asumir el principal de IoT (iot.amazonaws.com) para la plantilla de aprovisionamiento especificada en. SourceArn

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template" } } } ] }

JITP

En just-in-time provisioning (JITP), puede utilizar la plantilla de aprovisionamiento como un recurso independiente de la CA o definir el cuerpo de la plantilla y la función como parte de la configuración del certificado de la CA. El valor de en el aws:SourceArn AWS IoT la política de confianza de roles depende de cómo se defina la plantilla de aprovisionamiento.

Si define la plantilla de aprovisionamiento como un recurso independiente, el valor de aws:SourceArn puede ser. "arn:aws:iot:region:account-id:provisioningtemplate/example_template" Puede utilizar el mismo ejemplo de política enAprovisionamiento de flotas.

Si define la plantilla de aprovisionamiento en un recurso de certificado de CA, el valor de aws:SourceArn puede ser "arn:aws:iot:region:account-id:cacert/cert_id" o. "arn:aws:iot:region:account-id:cacert/*" Puede usar un comodín cuando se desconoce el identificador del recurso, como el ID de un certificado de CA, en el momento de la creación.

El rol con la siguiente política de confianza solo lo puede asumir el principal de IoT (iot.amazonaws.com) para el certificado de CA especificado en elSourceArn.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e" } } } ] }

Al crear un certificado de CA, puede hacer referencia a una función de aprovisionamiento en la configuración de registro. La política de confianza de la función de aprovisionamiento se puede utilizar aws:SourceArn para restringir los recursos de los que se puede asumir la función. Sin embargo, durante la egisterCACertificate llamada R inicial para registrar el certificado de CA, no dispondría ARN del certificado de CA para especificar en la aws:SourceArn condición.

Para solucionar este problema, es decir, especificar la función de aprovisionamiento, confíe en la política del certificado de CA específico en el que esté registrado AWS IoT Core, puede hacer lo siguiente:

  • Primero, llama a R egisterCACertificate sin proporcionar el RegistrationConfig parámetro.

  • Una vez registrado el certificado de CA en AWS IoT Core, pdateCACertificatellámalo.

    En la pdateCACertificate llamada U, proporcione una RegistrationConfig que incluya la política de confianza de la función de aprovisionamiento aws:SourceArn establecida en el certificado ARN de CA recién registrado.

Proveedor de credenciales

En AWS IoT Core proveedor de credenciales, utilice el mismo Cuenta de AWS se utiliza para crear el alias del rol en aws:SourceAccount y especificar una sentencia que coincida con el recurso del tipo ARN de recurso rolealias en. aws:SourceArn Al crear un IAM rol para usarlo con AWS IoT Core proveedor de credenciales, debe incluir en la aws:SourceArn condición cualquier alias ARNs de rol que pueda necesitar para asumir el rol, autorizando así la solicitud de servicios cruzados. sts:AssumeRole

El rol con la siguiente política de confianza solo lo puede asumir el director de AWS IoT Core proveedor de credenciales (credentials.iot.amazonaws.com) para lo roleAlias especificado en. SourceArn Si un director intenta recuperar las credenciales de un alias de rol distinto del especificado en la aws:SourceArn condición, se denegará la solicitud, incluso si ese otro alias de rol hace referencia al mismo IAM rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias" } } } ] }