Cross-service prevenzione sostitutiva confusa
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 AWS, l'impersonificazione intersettoriale può portare al confuso problema del sostituto. Cross-service l'impersonificazione può verificarsi quando un servizio (il servizio chiamante) chiama 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 mette a disposizione strumenti che consentono di proteggere i dati relativi a tutti i servizi con responsabili del servizio a cui è stato concesso l'accesso alle risorse dell'account.
Consigliamo di utilizzare le chiavi di contesto aws: SourceArn e aws: SourceAccount global condition nelle policy delle risorse per limitare le autorizzazioni che Amazon Bedrock AgentCore concede a un altro servizio alla risorsa. Utilizzare aws:SourceArn se si desidera consentire l’associazione di una sola risorsa all’accesso tra servizi. Utilizzare aws:SourceAccount se si desidera consentire l’associazione di qualsiasi risorsa in tale account all’uso tra servizi.
Il modo più efficace per proteggersi dal problema “confused deputy” è quello di utilizzare la chiave di contesto della condizione globale aws:SourceArn con 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:servicename: *:123456789012: *.
Se il valore aws:SourceArn non contiene l’ID account, ad esempio un ARN di un bucket Amazon S3, è necessario utilizzare entrambe le chiavi di contesto delle condizioni globali per limitare le autorizzazioni.
L'esempio seguente mostra come utilizzare le chiavi di contesto e global condition per evitare il confuso problema del aws:SourceArn viceaws:SourceAccount. AgentCore
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AssumeRolePolicy", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:*" } } } ] }