A diferença entre negações explícitas e implícitas
Uma solicitação resultará em uma negação explícita aplicável se uma política aplicável incluir uma instrução Deny
. Se as políticas aplicáveis a uma solicitação incluírem uma instrução Allow
e uma instrução Deny
, a instrução Deny
superará a instrução Allow
. A solicitação será negada explicitamente.
Uma negação implícita ocorre quando não há uma instrução Deny
aplicável, mas também nenhuma instrução Allow
aplicável. Como o acesso da entidade principal do IAM é negado por padrão, ela deve ter permissão explícita para executar uma ação. Caso contrário, o acesso será implicitamente negado.
Ao projetar sua estratégia de autorização, você deve criar políticas com instruções Allow
para permitir que suas entidades principais façam solicitações com êxito. No entanto, você pode escolher qualquer combinação de negações implícitas e explícitas.
Por exemplo, é possível criar a seguinte política que inclui ações permitidas, ações negadas implicitamente e ações negadas explicitamente. A declaração AllowGetList
permite acesso do tipo somente leitura a ações do IAM que comecem com os prefixos Get
e List
. Todas as outras ações no IAM, como iam:CreatePolicy
, são negadas implicitamente. A declaração DenyReports
nega explicitamente o acesso a relatórios do IAM, negando acesso a ações que incluem o sufixo Report
, como iam:GetOrganizationsAccessReport
. Se alguém adicionar outra política a essa entidade principal para conceder acesso a relatórios do IAM, como iam:GenerateCredentialReport
, solicitações relacionadas a relatórios ainda serão negadas por causa dessa negação explícita.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetList", "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" }, { "Sid": "DenyReports", "Effect": "Deny", "Action": "iam:*Report", "Resource": "*" } ] }