我们有AWS IAM的评估订单吗



我正试图找出我的一个用户的IAM策略的一个问题。我的政策规定,如果服务不在我们的列表中,则拒绝访问。我正在尝试为apigateway的所有操作授予我的用户访问权限。我提供了以下政策。但它拒绝访问除GET、OPTIONS、HEAD之外的所有操作。我一开始有野字符*,会被个别动作覆盖野字符设置。我正在努力了解IAM的评估顺序。单个操作是否覆盖*?

{
"Statement": [
{
"Resource": "*",
"Effect": "Deny",
"NotAction": [
"apigateway:*"  
"apigateway:GET",
"apigateway:OPTIONS",
"apigateway:HEAD"
]
}
]
}

在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"
]
}
]
}

这一行来自AWS文档:

任何策略中的明确拒绝都会覆盖任何允许的

相关内容

  • 没有找到相关文章

最新更新