Prevenzione del confused deputy tra servizi - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prevenzione del confused deputy tra servizi

Il problema confused deputy è un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire un'azione può costringere un'entità maggiormente privilegiata a eseguire l'azione. In AWS, l'impersonificazione tra servizi può portare alla confusione del problema del vicesceriffo. La rappresentazione tra servizi può verificarsi quando un servizio (il servizio chiamante) effettua una chiamata a un altro servizio (il servizio chiamato). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare che ciò accada, AWS fornisce strumenti che consentono di proteggere i dati per tutti i servizi con responsabili del servizio a cui è stato concesso l'accesso alle risorse del tuo account.

Per limitare le autorizzazioni che AWS IoT fornisce un altro servizio alla risorsa, si consiglia di utilizzare le chiavi di contesto aws:SourceArne la condizione aws:SourceAccountglobale nelle politiche delle risorse. Se si utilizzano entrambe le chiavi di contesto delle condizioni globali, il valore aws:SourceAccount e l'account nel valore aws:SourceArn devono utilizzare lo stesso ID account nella stessa istruzione di policy.

Il modo più efficace per proteggersi dal confuso problema del vice è utilizzare la chiave di contesto della condizione aws:SourceArn globale con l'Amazon Resource Name (ARN) completo della risorsa. In AWS IoT, aws:SourceArn devi rispettare il formato: arn:aws:iot:region:account-id:resource-type/resource-id per le autorizzazioni specifiche della risorsa oarn:aws:iot:region:account-id:*. Il resource-id può essere il nome o l'ID della risorsa consentita o una dichiarazione con caratteri jolly della risorsa consentita. IDs Assicurati che region corrisponde al tuo AWS IoT Regione e account-id corrisponde all'ID del tuo account cliente.

L'esempio seguente mostra come prevenire il problema del confuso vice utilizzando le chiavi aws:SourceArn e il contesto della condizione aws:SourceAccount globale in AWS IoT politica di fiducia nei ruoli. Per ulteriori esempi, consulta Esempi dettagliati di prevenzione confusa.

{ "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

Se si verificano errori di negazione dell'accesso, può essere dovuto all'integrazione del servizio con AWS Security Token Service (STS) non supporta le chiavi di aws:SourceAccount contesto aws:SourceArn e.

Esempi dettagliati di prevenzione confusa

Questa sezione fornisce esempi dettagliati di come prevenire il problema della confusione dei vicesceriffi utilizzando le chiavi aws:SourceArn e il contesto della condizione aws:SourceAccount globale in AWS IoT politica di fiducia nei ruoli.

Provisioning del parco istanze

È possibile configurare il provisioning della flotta utilizzando una risorsa modello di provisioning. Quando un modello di provisioning fa riferimento a un ruolo di provisioning, la policy di fiducia di quel ruolo può includere le aws:SourceArn chiavi e condition. aws:SourceAccount Queste chiavi limitano le risorse per le quali la configurazione può richiamare la richiesta. sts:AssumeRole

Il ruolo con la seguente policy di trust può essere assunto solo dal principale IoT (iot.amazonaws.com) per il modello di provisioning specificato in. 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

In just-in-time provisioning (JITP), è possibile utilizzare il modello di provisioning come risorsa separata dalla CA o definire il corpo del modello e il ruolo come parte della configurazione del certificato CA. Il valore di in aws:SourceArn AWS IoT la policy di trust dei ruoli dipende dalla definizione del modello di provisioning.

Se si definisce il modello di provisioning come risorsa separata, il valore di aws:SourceArn può essere. "arn:aws:iot:region:account-id:provisioningtemplate/example_template" È possibile utilizzare lo stesso esempio di policy inProvisioning del parco istanze.

Se si definisce il modello di provisioning all'interno di una risorsa di certificato CA, il valore di aws:SourceArn può essere "arn:aws:iot:region:account-id:cacert/cert_id" o. "arn:aws:iot:region:account-id:cacert/*" È possibile utilizzare un carattere jolly quando l'identificatore della risorsa, ad esempio l'ID di un certificato CA, è sconosciuto al momento della creazione.

Il ruolo con la seguente policy di fiducia può essere assunto solo dal principale IoT (iot.amazonaws.com) per il certificato CA specificato inSourceArn.

{ "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" } } } ] }

Quando si crea un certificato CA, è possibile fare riferimento a un ruolo di provisioning nella configurazione di registrazione. La politica di fiducia del ruolo di provisioning può essere utilizzata aws:SourceArn per limitare le risorse per cui il ruolo può essere assunto. Tuttavia, durante la egisterCACertificate chiamata R iniziale per registrare il certificato CA, non avresti il certificato CA da specificare nella aws:SourceArn condizione. ARN

Per ovviare a questo problema, ad esempio, per specificare la politica di attendibilità del ruolo di provisioning per lo specifico certificato CA registrato presso AWS IoT Core, è possibile effettuare le seguenti operazioni:

  • Innanzitutto, chiama R egisterCACertificate senza fornire il RegistrationConfig parametro.

  • Dopo la registrazione del certificato CA con AWS IoT Core, chiamaci pdateCACertificate U.

    Nella pdateCACertificate chiamata U, fornisci una policy RegistrationConfig che includa la policy di trust del ruolo ARN di provisioning aws:SourceArn impostata sul certificato CA appena registrato.

Fornitore di credenziali

Per AWS IoT Core fornitore di credenziali, usa lo stesso Account AWS lo usi per creare l'alias del ruolo in aws:SourceAccount e specificare un'istruzione che corrisponda alla risorsa del tipo ARN di risorsa rolealias in. aws:SourceArn Quando si crea un ruolo da utilizzare con IAM AWS IoT Core provider di credenziali, è necessario includere nella aws:SourceArn condizione gli alias ARNs di ruolo che potrebbero dover assumere il ruolo, autorizzando così la richiesta interservizio. sts:AssumeRole

Il ruolo con la seguente politica di fiducia può essere assunto solo dal responsabile di AWS IoT Core provider di credenziali (credentials.iot.amazonaws.com) per roleAlias quanto specificato in. SourceArn Se un principale tenta di recuperare le credenziali per un alias di ruolo diverso da quello specificato nella aws:SourceArn condizione, la richiesta verrà rifiutata, anche se l'altro alias del ruolo fa riferimento allo stesso ruolo. IAM

{ "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" } } } ] }