2012-07-21 24 views
6

Ho un utente nel mio conto IAM chiamato "testuser" che ha privilegi di amministratore, in questo modo:Perché il mio criterio di bucket di AWS S3 non ignora il mio criterio IAM?

{ 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "*", 
     "Resource": "*" 
    } 
    ] 
} 

E poi ho una politica di mio secchio S3 che nega l'accesso degli utenti, in questo modo:

{ 
    "Statement": [ 
    { 
    "Effect": "Deny", 
    "Principal": { 
    "AWS": "my-account-id:user/testuser" 
    }, 
    "Action": "s3:*", 
    "Resource": "arn:aws:s3:::my-bucket-name/*" 
    } 
    ] 
} 

Quindi, il rifiuto esplicito nella politica del bucket S3 dovrebbe ignorare l'autorizzazione dal criterio IAM, giusto? Ma quando accedo come testuser, ho ancora accesso a tutto in quel bucket - ho persino accesso a modificare o rimuovere il criterio bucket per quel bucket (e anche ogni altro bucket). Perché il mio rifiuto esplicito non fa nulla?

+0

Con l'accesso a tutto per voi significa solo che elenca i contenuti secchio o si può anche ottenere/mettere i file? –

+0

Voglio dire tutto: visualizzare file, aggiungere file, visualizzare la politica del bucket, modificare la politica del bucket, ecc. – Dasmowenator

risposta

6

provare a utilizzare il modulo ARN completo per l'ID utente nella politica secchio:

"Principal": { 
    "AWS":["arn:aws:iam::accountid:user/testuser"] 
} 
+0

grazie per la risposta: sfortunatamente questo non ha avuto alcun effetto – Dasmowenator

+7

Le politiche che hai specificato dovrebbero impedire a 'testuser' di ottenere/mettendo/eliminando oggetti all'interno del bucket, ma _non_ impedisce loro di elencare il contenuto del bucket. Per questo dovresti usare '" Resource ": [" arn: aws: s3 ::: my-bucket-name/* "," arn: aws: s3 ::: my-bucket-name "]' in la regola deny (perché azioni come 'ListBucket' sono controllate dal bucket ARN piuttosto che dal bucket/* uno). –

+0

Grazie - lo ha corretto – Dasmowenator