明示的な拒否と暗黙的な拒否の違い
該当するポリシーに Deny
ステートメントが含まれている場合、リクエストは明示的に拒否されます。リクエストに適用されるポリシーに Allow
ステートメントと Deny
ステートメントが含まれている場合は、Deny
ステートメントが Allow
ステートメントより優先されます。リクエストは明示的に拒否されます。
該当する Deny
ステートメントがなく、該当する Allow
ステートメントもない場合は、暗黙的な拒否が発生します。IAM プリンシパルは、デフォルトでアクセスが拒否されされるため、アクションを実行するには明示的に許可を受ける必要があります。そうでない場合は、アクセスは暗黙的に拒否されます。
承認戦略を設計する場合、プリンシパルのリクエストを成功させるには、作成するポリシーに Allow
ステートメントを含める必要があります。ただし、明示的な拒否と暗黙的な拒否の任意の組み合わせを選択できます。
例えば、許可されたアクション、暗黙的に拒否されたアクション、および明示的に拒否されたアクションを含む、次のポリシーを作成できます。AllowGetList
ステートメントは、Get
または List
プレフィックスで始まる IAM アクションに対して、読み取り専用のアクセスを許可します。iam:CreatePolicy
など、IAM の他のすべてのアクションは、暗黙的に拒否されます。DenyReports
ステートメントは、iam:GetOrganizationsAccessReport
などのReport
サフィックスを含むアクションへのアクセスを拒否することで、IAM レポートへのアクセスを明示的に拒否します。誰かがこのプリンシパルに別のポリシーを追加して、iam:GenerateCredentialReport
などのIAM レポートへのアクセス許可を付与した場合は、この明示的拒否のために、レポート関連のリクエストは引き続き拒否されます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetList", "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" }, { "Sid": "DenyReports", "Effect": "Deny", "Action": "iam:*Report", "Resource": "*" } ] }