Differenza tra rifiuto esplicito e implicito
Una richiesta genera un rifiuto esplicito se policy applicabile include un'istruzione Deny
. Se le policy applicabili a una richiesta includono un'istruzione Allow
e un'istruzione Deny
, l'istruzione Deny
prevale sull'istruzione Allow
. La richiesta viene rifiutata esplicitamente.
Una rifiuto implicito si verifica quando non c'è un'istruzione Deny
applicabile ma non c'è neanche un'istruzione Allow
applicabile. Poiché a un principale IAM viene rifiutato l'accesso per impostazione predefinita, questo deve essere autorizzato esplicitamente a eseguire un'operazione. In caso contrario, l'accesso viene negato implicitamente.
Quando progetti una strategia di autorizzazione, devi creare policy con istruzioni Allow
per consentire alle entità principali di eseguire richieste. Tuttavia, puoi scegliere qualsiasi combinazione di rifiuti espliciti e impliciti.
Ad esempio, è possibile creare la seguente policy che include operazioni consentite, operazioni rifiutate implicitamente e operazioni rifiutate esplicitamente. La dichiarazione AllowGetList
permette l'accesso in sola lettura alle operazioni IAM che iniziano con i prefissi Get
e List
. Tutte le altre azioni in IAM, come iam:CreatePolicy
, sono rifiutate implicitamente. La dichiarazione DenyReports
impedisce esplicitamente l'accesso ai report IAM impedendo l'accesso alle operazioni che includono il suffisso Report
, come iam:GetOrganizationsAccessReport
. Se qualcuno aggiunge un'altra policy a questo principale per concedere l'accesso ai report IAM, come iam:GenerateCredentialReport
, le richieste relative ai report vengono ancora rifiutate a causa di questo rifiuto esplicito.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetList", "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" }, { "Sid": "DenyReports", "Effect": "Deny", "Action": "iam:*Report", "Resource": "*" } ] }