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à.
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. Per evitare che ciò accada, AWS fornisce strumenti che ti aiutano a proteggere il tuo account se fornisci a terzi (i cosiddetti cross-account) o ad altri AWS servizi (noti come cross-service) l'accesso alle risorse del tuo account.
A volte, potresti dover concedere a terzi l'accesso alle tue AWS risorse (accesso delegato). Ad esempio, decidete di assumere una società terza chiamata Example Corp per monitorare Account AWS e ottimizzare i costi. Per tenere traccia delle vostre spese giornaliere, Example Corp deve accedere alle vostre AWS risorse. Example Corp controlla anche molti altri Account AWS per altri clienti. Puoi utilizzare un IAM ruolo per stabilire una relazione di fiducia tra il tuo account Account AWS e quello di Example Corp. Un aspetto importante di questo scenario è l'ID esterno, un identificatore opzionale che è possibile utilizzare in una politica di fiducia dei ruoli per designare chi può assumere il IAM ruolo. La funzione principale dell'ID esterno è quella di risolvere e prevenire il problema del "confused deputy" (delegato confuso).
Alcuni AWS servizi (servizi di chiamata) utilizzano il proprio AWS service principal per accedere alle AWS risorse di altri AWS servizi (denominati servizi). In alcune di queste interazioni di servizio è possibile configurare i servizi di chiamata in modo che comunichino con le risorse di un servizio chiamato in un altro modo Account AWS. Un esempio di ciò è la configurazione AWS CloudTrail per la scrittura su un bucket Amazon S3 centrale che si trova in un altro. Account AWS Al servizio di chiamata CloudTrail viene concesso l'accesso al bucket s3 utilizzando la policy del bucket s3 aggiungendo un'istruzione allow per cloudtrail.amazonaws.com.
Quando il responsabile di un AWS servizio chiamante accede a una risorsa di un servizio chiamato, la politica delle risorse del servizio chiamato autorizza solo il responsabile del servizio e non l'attore che ha configurato il AWS servizio chiamante. Ad esempio, un bucket Amazon S3 che si fida del responsabile del CloudTrail servizio senza condizioni potrebbe ricevere CloudTrail i log configurati da un amministratore fidato, ma anche i CloudTrail log da un attore non autorizzato Account AWS che lo utilizza Account AWS, se conosce il nome del bucket Amazon S3.
Il confuso problema del vicedirettore sorge quando un attore sfrutta la fiducia del responsabile del AWS servizio per accedere a risorse a cui non è destinato ad avere accesso.
Prevenzione del problema "confused deputy" tra account
Il seguente diagramma illustra il problema "confused deputy" tra account.
![Descrizione di un problema "confused deputy".](images/confuseddeputyproblem2.png)
In questo scenario sono validi i requisiti riportati di seguito:
-
AWS 1 è tuo Account AWS.
-
AWS 1: ExampleRole è un ruolo nel tuo account. La policy di affidabilità di questo ruolo considera attendibile Example Corp specificando l'account AWS di Example Corp come account che può assumere il ruolo.
Ecco che cosa succede:
-
Quando inizi a utilizzare il servizio di Example Corp, fornisci il ARN numero AWS 1: ExampleRole a Example Corp.
-
Example Corp utilizza quel ruolo ARN per ottenere credenziali di sicurezza temporanee per accedere alle risorse del tuo. Account AWS In questo modo, l'Utente A considera Example Corp come "deputy" attendibile che può agire per conto dell'Utente A stesso.
-
Anche un altro AWS cliente inizia a utilizzare il servizio di Example Corp, e questo cliente fornisce anche il ARN servizio AWS 1: ExampleRole for Example Corp da utilizzare. Presumibilmente l'altro cliente ha imparato o indovinato il numero AWS 1: ExampleRole, che non è un segreto.
-
Quando l'altro cliente chiede a Example Corp di accedere alle AWS risorse del suo account (quello che afferma di essere), Example Corp utilizza AWS 1: ExampleRole per accedere alle risorse del tuo account.
Questo è il modo in cui altri clienti possono ottenere l'accesso non autorizzato alle risorse di un utente, in questo caso dell'Utente A. Poiché il cliente Utente B è stato in grado di ingannare Example Corp e lo ha indotto ad agire involontariamente sulle risorse, Example Corp è ora un "confused deputy".
Example Corp può risolvere il problema "confused deputy" chiedendo di includere la condizione di verifica ExternalId
nella policy di affidabilità del ruolo. Example Corp genera un valore ExternalId
univoco per ogni cliente e lo utilizza nella sua richiesta per assumere il ruolo. Il valore ExternalId
deve essere univoco tra i clienti di Example Corp e controllato da Example Corp, non dai suoi clienti. Questo è il motivo per cui i clienti lo ricevono da Example Corp e non lo creano in autonomia. In questo modo si evita che Example Corp si comporti in modo confuso e consenta l'accesso alle risorse di un altro account. AWS
In questo scenario, immagina che l'ID univoco di Example Corp per te sia 12345 e quello per l'altro cliente sia 67890. Questi ID sono semplificati per comodità in questo scenario. In genere, questi identificatori sono. GUIDs Supponendo che questi identificatori siano univoci tra i clienti di Example Corp, sono valori sensibili da utilizzare per l'ID esterno.
Example Corp ti fornisce il valore ID esterno 12345. È necessario aggiungere un elemento Condition
alla policy di affidabilità del ruolo che richieda che il valore sts:ExternalId
sia 12345, come segue:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID
"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
L'elemento Condition di questa politica consente a Example Corp di assumere il ruolo solo quando la AssumeRole API chiamata include il valore ID esterno 12345. Example Corp si assicura che ogni volta che assume un ruolo per conto di un cliente, includa sempre il valore dell'ID esterno del cliente nella chiamata. AssumeRole Anche se un altro cliente fornisce a Example Corp il tuoARN, non può controllare l'ID esterno che Example Corp include nella sua richiesta a. AWS In questo modo è possibile evitare che un cliente non autorizzato acceda alle tue risorse.
Il diagramma seguente illustra tale processo.
![Come mitigare un problema "confused deputy".](images/confuseddeputymitigation2.png)
-
Come in precedenza, quando si inizia a utilizzare il servizio di Example Corp, si fornisce il numero AWS 1: ExampleRole a ARN Example Corp.
-
Quando Example Corp utilizza quel ruolo ARN per assumere il ruolo AWS 1: ExampleRole, Example Corp include l'ID esterno (12345) nella chiamata. AssumeRole API L'ID esterno corrisponde alla politica di fiducia del ruolo, quindi la AssumeRole API chiamata ha esito positivo e Example Corp ottiene le credenziali di sicurezza temporanee per accedere alle risorse del tuo. Account AWS
-
Anche un altro AWS cliente inizia a utilizzare il servizio di Example Corp e, come in precedenza, fornisce anche il ARN servizio AWS 1: ExampleRole for Example Corp da utilizzare.
-
Ma questa volta, quando Example Corp tenta di assumere il ruolo AWS 1: ExampleRole, fornisce l'ID esterno associato all'altro cliente (67890). L'altro cliente non ha modo di modificare questa operazione. Example Corp opera in questo modo perché la richiesta di utilizzare il ruolo proviene dall'altro cliente, pertanto 67890 indica la circostanza in cui Example Corp sta operando. Poiché hai aggiunto una condizione con il tuo ID esterno (12345) alla politica di fiducia AWS 1: ExampleRole, la chiamata ha esito negativo. AssumeRole API All'altro cliente viene impedito di ottenere l'accesso non autorizzato alle risorse nel tuo account (indicato dalla "X" rossa nel diagramma).
L'ID esterno consente di impedire a qualsiasi altro cliente di ingannare Example Corp e indurre l'azienda ad accedere involontariamente alle risorse.
Prevenzione del problema "confused deputy" tra servizi
Il diagramma seguente illustra il problema dell'assistente confuso tra servizi utilizzando l' CloudTrail esempio di interazione con Amazon S3, in cui un attore non autorizzato scrive i log su un bucket Amazon S3 CloudTrail a cui non è autorizzato ad accedere.
![A un attore non autorizzato viene concesso l'accesso a un bucket Amazon S3 in un altro account utilizzando CloudTrail il service principal.](images/cross-service-confused-deputy1.png)
Per evitare che un attore non autorizzato utilizzi la fiducia di un AWS responsabile per accedere alle tue risorse, i responsabili del AWS servizio includono informazioni sulla AWS risorsa e sull' AWS organizzazione per Account AWS conto della quale agiscono.
Queste informazioni sono disponibili in valori chiave globali che possono essere utilizzati in una politica delle risorse o in una politica di controllo delle risorse per le richieste effettuate dai responsabili del AWS servizio. Ti consigliamo di utilizzareleggi: SourceArn, leggi: SourceAccountleggi: SourceAccount, o leggi: SourceOrgPaths nelle politiche relative alle risorse laddove al responsabile del AWS servizio sia concessa l'autorizzazione ad accedere a una delle tue risorse. Queste chiavi di condizione consentono di verificare, nell'ambito delle politiche relative alle risorse o alle politiche di controllo delle risorse, che i responsabili dei AWS servizi che accedono alle risorse lo facciano per conto delle AWS risorse Account AWS, o come previsto dall' AWS Organizations utente.
-
aws:SourceArn
Da utilizzare per consentire a un responsabile del AWS servizio di accedere alle risorse per conto di una risorsa specifica, ad esempio un AWS CloudTrail percorso o una AppStream flotta specifici. -
aws:SourceAccount
Da utilizzare per consentire a un responsabile del AWS servizio di accedere alle risorse per conto di una determinata persona Account AWS. -
aws:SourceOrgID
Da utilizzare per consentire a un responsabile AWS del servizio di accedere alle risorse dell'utente per conto di una persona specifica AWS Organizations. -
aws:SourceOrgPaths
Da utilizzare per consentire al responsabile del AWS servizio di accedere alle risorse per conto di un AWS Organizations percorso specifico.
Il diagramma seguente illustra lo scenario sostitutivo confuso tra servizi in cui una risorsa viene configurata con la chiave di contesto della condizione aws:SourceAccount
globale e un attore non autorizzato di un altro account tenta di accedere a AWS risorse a cui non è destinato ad avere accesso.
![A un attore non autorizzato viene negato l'accesso a un bucket Amazon S3 in un altro account utilizzando CloudTrail il service principal.](images/cross-service-confused-deputy2.png)
L'utilizzo di aws:SourceArn
aws:SourceAccount
aws:SourceOrgID
, e chiavi di condizione aws:SourceOrgPaths
globali in una policy ti aiuta a garantire che i responsabili del servizio accedano alle tue risorse per tuo conto. Ti consigliamo di utilizzare queste chiavi di condizione ogni volta che l'accesso a una delle tue risorse viene concesso a un responsabile AWS del servizio.
Nota
Alcune Servizio AWS interazioni prevedono controlli aggiuntivi che aiutano a proteggersi da problemi amministrativi confusi tra diversi servizi che mettono alla prova l'accesso degli utenti a una risorsa. Ad esempio, quando viene concessa una KMS chiave a un utente Servizio AWS, AWS KMS utilizza il contesto di crittografia associato alla risorsa e la concessione di chiavi per contribuire alla protezione da problemi relativi alla confusione tra i vari servizi.
Consulta la documentazione dei servizi che utilizzi per ulteriori informazioni sui meccanismi specifici dei servizi che possono aiutare a evitare la confusione tra i vari servizi e se, aws:SourceArn
aws:SourceAccount
aws:SourceOrgID
, sono supportati. aws:SourceOrgPaths
Cross-service ha confuso la protezione sostitutiva con le politiche basate sulle risorse
La seguente politica di esempio concede l'cloudtrail.amazonaws.com
accesso principale del servizio al bucket Amazon S3, arn:aws:s3: ::amzn-s3-demo-bucket1, solo quando il responsabile del servizio agisce per conto di 111122223333. Account AWS
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudTrailAclCheck",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111122223333"
}
}
},
{
"Sid": "AWSCloudTrailWrite",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/[optionalPrefix]/Logs/myAccountID/*
",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111122223333"
}
}
}
]
}
Questa policy bucket di esempio concede al servizio l'appstream.amazonaws.com
accesso principale allo script powershell examplefile.psh all'interno di s3://amzn-s3-demo-bucket2 solo quando agisce per conto della AppStream flotta Amazon specificata, specificando la flotta con cui arn. aws:SourceArn
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"appstream.amazonaws.com"
]
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/examplefile.psh
",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333
:fleet/ExampleFleetName
"
}
}
}
]
}
Cross-service ha confuso la protezione dei deputati con le politiche di controllo delle risorse
È possibile utilizzare le politiche di controllo delle risorse (RCP) per applicare controlli sostitutivi confusi tra diversi servizi alle risorse supportate. Servizi AWS RCPsconsentono di applicare centralmente alle proprie risorse controlli sostitutivi confusi tra diversi servizi. È possibile utilizzare chiavi di condizione AWS Organizations, aws:SourceOrgId
analogamente a quelle aws:SourceOrgPaths
RCPs associate alle unità organizzative (OU) o Account AWS all'interno dell'organizzazione, senza aggiungere dichiarazioni a politiche specifiche basate sulle risorse. Per ulteriori informazioni sui RCPs servizi supportati, consulta le politiche di controllo delle risorse (RCPs) nella Guida per l'AWS Organizations utente.
L'esempio seguente RCP nega ai responsabili AWS del servizio l'accesso ai bucket Amazon S3 nei tuoi account membro aws:SourceOrgID
quando non è uguale a o-. ExampleOrg Un'autorizzazione corrispondente deve essere presente nella policy basata sulle risorse del bucket Amazon S3 per consentire i principali di AWS servizio con un ID uguale a o-. SourceOrg ExampleOrg
Questa policy applica il controllo solo sulle richieste dei responsabili del servizio ("Bool":
{"aws:PrincipalIsAWSService": "true"}
) che dispongono della aws:SourceAccount
chiave present ("Null": {"aws:SourceAccount":
"false"}
), in modo che le integrazioni di servizi che non richiedono l'uso della chiave di condizione e le chiamate da parte dei principali non siano influenzate. Se la chiave aws:SourceAccount
condizionale è presente nel contesto della richiesta, la condizione Null verrà valutata vera, causando l'applicazione. aws:SourceOrgID
È possibile utilizzare aws:SourceAccount
invece che aws:SourceOrgID
nell'operatore di condizione Null in modo che il controllo si applichi ancora se la richiesta proviene da un account che non appartiene a un'organizzazione.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RCPEnforceConfusedDeputyProtectionForS3",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:*"
],
"Resource": "*",
"Condition": {
"StringNotEqualsIfExists": {
"aws:SourceOrgID": "o-ExampleOrg
"
},
"Null": {
"aws:SourceAccount": "false"
},
"Bool": {
"aws:PrincipalIsAWSService": "true"
}
}
}
]
}