我试图找出我的一个用户的IAM策略存在的一个问题。 我有政策,如果服务不在我们的列表中,则拒绝访问。我正在尝试授予我的用户访问apigateway的所有操作的权限。我已提供以下政策。但它拒绝接受GET,OPTIONS,HEAD以外的所有行动。我在开头有野性字符*,将个别操作覆盖野性字符设置。我想了解IAM的评估顺序。个别操作是否会覆盖*?
{
"Statement": [
{
"Resource": "*",
"Effect": "Deny",
"NotAction": [
"apigateway:*"
"apigateway:GET",
"apigateway:OPTIONS",
"apigateway:HEAD"
]
}
]
}
答案 0 :(得分:2)
在AWS IAM中,默认情况下拒绝所有请求。因此,您只需要为所需操作授予权限,而默认情况下将拒绝所有其他操作。
发出请求时,AWS服务会决定是否给定 请求应被允许或拒绝。评估逻辑如下 这些规则:
默认情况下,所有请求都被拒绝。 (通常,始终允许使用帐户资源为帐户中的资源发出的请求。)
显式允许会覆盖此默认值。
显式拒绝会覆盖任何允许。
评估政策的顺序对评估结果没有影响。评估所有策略,结果始终是允许或拒绝请求。
因此,通常将Allow
政策写为:
{
"Statement": [
{
"Resource": "*",
"Effect": "Allow",
"Action": [
"apigateway:GET",
"apigateway:OPTIONS",
"apigateway:HEAD"
]
}
]
}
但是,如果您怀疑其他政策可能会授予用户不受欢迎的操作,您可以将Deny
政策写为:
{
"Statement": [
{
"Resource": "*",
"Effect": "Deny",
"NotAction": [
"apigateway:GET",
"apigateway:OPTIONS",
"apigateway:HEAD"
]
}
]
}