Differenza tra rifiuto esplicito e implicito - AWS Identity and Access Management

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": "*" } ] }