Prevenzione del confused deputy tra servizi - Database Amazon Quantum Ledger (Amazon QLDB)

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

Con "confused deputy" si intende un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire una certa operazione può costringere un'entità con più privilegi a eseguire tale operazione. Nel frattempo AWS, l'impersonificazione tra servizi può portare al confuso 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 il problema del «Confused Deputy», AWS fornisce strumenti che consentono di proteggere i dati relativi a tutti i servizi, con responsabili del servizio a cui è stato concesso l'accesso alle risorse del vostro account.

Consigliamo di utilizzare le chiavi di contesto aws:SourceArne aws:SourceAccountglobal condition nelle politiche delle risorse per limitare le autorizzazioni che Amazon QLDB fornisce a un altro servizio alla risorsa. Se utilizzi entrambe le chiavi di contesto della condizione globale, il aws:SourceAccount valore e l'account nel aws:SourceArn valore devono utilizzare lo stesso ID account quando vengono utilizzati nella stessa dichiarazione politica.

La tabella seguente elenca i valori possibili delle operazioni dell'API aws:SourceArn for ExportJournalToS3e StreamsJournalToKinesisQLDB. Queste operazioni rientrano nell'ambito di questo problema di sicurezza perché chiamano AWS Security Token Service (AWS STS) per assumere un ruolo IAM specificato dall'utente.

Operazione API Servizio chiamato leggi: SourceArn
ExportJournalToS3 AWS STS (AssumeRole)

Consente a QLDB di assumere il ruolo di qualsiasi risorsa QLDB nell'account:

arn:aws:qldb:us-east-1:123456789012:*

Attualmente, QLDB supporta solo questo ARN wildcard per le esportazioni di riviste.

StreamsJournalToKinesis AWS STS (AssumeRole)

Consente a QLDB di assumere il ruolo per uno specifico stream QLDB:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/IiPT4brpZCqCq3f4MTHbYy

Nota: è possibile specificare un ID di flusso nell'ARN solo dopo la creazione della risorsa di flusso. Utilizzando questo ARN, puoi consentire l'utilizzo del ruolo solo per un singolo flusso QLDB.

Consente a QLDB di assumere il ruolo per qualsiasi flusso QLDB di un registro:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*

Consente a QLDB di assumere il ruolo di qualsiasi stream QLDB nell'account:

arn:aws:qldb:us-east-1:123456789012:stream/*

Consente a QLDB di assumere il ruolo di qualsiasi risorsa QLDB nell'account:

arn:aws:qldb:us-east-1:123456789012:*

Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare la chiave di contesto della condizione globale aws:SourceArncon l'ARN completo della risorsa. Se non conosci l'ARN completo della risorsa o se stai specificando più risorse, usa la chiave di condizione di contesto aws:SourceArn globale con caratteri jolly (*) per le parti sconosciute dell'ARN, ad esempio. arn:aws:qldb:us-east-1:123456789012:*

Il seguente esempio di politica di fiducia per un ruolo IAM mostra come utilizzare le chiavi di contesto aws:SourceArn e aws:SourceAccount global condition per evitare il confuso problema del vice. Con questa politica di fiducia, QLDB può assumere il ruolo di qualsiasi flusso QLDB presente nell'account solo per il registro. 123456789012 myExampleLedger

Per utilizzare questa politica, sostituisci us-east-1, 123456789012 myExampleLedgere nell'esempio con le tue informazioni.

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }