AWS IAM 策略:多个操作和多个资源
AWS IAM policy: Multiple Actions and Multiple Resources
这是关于 AWS IAM 策略的问题,多个资源的多个操作(可能不相关)。我有参数 'myparam' 用 'mykey' 加密,我有如下单独块的策略,一个用于参数,一个用于密钥,它有效。
{
{
"Action": [
"ssm:GetParameter",
],
"Effect": "Allow",
"Resource": "MY-ARN:MY-ACC:parameter/myparam"
},
{
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "MY-ARN:MY-ACC::key/mykey"
}
}
根据文档,我们可以组合多个操作和资源,如果我按以下方式组合,这行得通吗?
{
{
"Action": [
"ssm:GetParameter",
"kms:Decrypt"
],
"Resource": [
"MY-ARN:MY-ACC:parameter/myparam"
"MY-ARN:MY-ACC::key/mykey"
],
"Effect": "Allow"
}
}
在这种情况下,操作到资源的映射是如何发生的?我找不到关于此 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html 的任何文档
如果我有关联的资源或关联的 Actiosn 那么它是有道理的,你对此有何评论?
If I combine the same as below, Does this work?
是的确实如此。
为了验证我重新创建你的场景mykey
和myparam
以及添加到测试lambda的执行角色的内联策略。
事实上,当您使用 IAM 控制台创建此类权限时,创建的内联 json 策略将具有 第二种形式 ,而不是第一种一:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"ssm:GetParameter"
],
"Resource": [
"arn:aws:kms:*:xxx:key/e15f691e-5dde-473c-8f24-3af45994aeaf",
"arn:aws:ssm:*:xxx:parameter/myparam"
]
}
]
}
更重要的是,Actons
到 Resources
中的 项目 的顺序是无关紧要的。因此你也可以有(不同的行动顺序):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ssm:GetParameter",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:*:xxx:key/e15f691e-5dde-473c-8f24-3af45994aeaf",
"arn:aws:ssm:*:xxx:parameter/myparam"
]
}
]
}
这意味着仅当给定资源支持时,IAM 才会测试对资源的操作。
如果经常首选第一种形式,因为它更易于阅读和管理。如果将所有内容都放在一条语句中,则很难为这样的语句命名、编辑和调试。
这是关于 AWS IAM 策略的问题,多个资源的多个操作(可能不相关)。我有参数 'myparam' 用 'mykey' 加密,我有如下单独块的策略,一个用于参数,一个用于密钥,它有效。
{
{
"Action": [
"ssm:GetParameter",
],
"Effect": "Allow",
"Resource": "MY-ARN:MY-ACC:parameter/myparam"
},
{
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "MY-ARN:MY-ACC::key/mykey"
}
}
根据文档,我们可以组合多个操作和资源,如果我按以下方式组合,这行得通吗?
{
{
"Action": [
"ssm:GetParameter",
"kms:Decrypt"
],
"Resource": [
"MY-ARN:MY-ACC:parameter/myparam"
"MY-ARN:MY-ACC::key/mykey"
],
"Effect": "Allow"
}
}
在这种情况下,操作到资源的映射是如何发生的?我找不到关于此 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html 的任何文档 如果我有关联的资源或关联的 Actiosn 那么它是有道理的,你对此有何评论?
If I combine the same as below, Does this work?
是的确实如此。
为了验证我重新创建你的场景mykey
和myparam
以及添加到测试lambda的执行角色的内联策略。
事实上,当您使用 IAM 控制台创建此类权限时,创建的内联 json 策略将具有 第二种形式 ,而不是第一种一:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"ssm:GetParameter"
],
"Resource": [
"arn:aws:kms:*:xxx:key/e15f691e-5dde-473c-8f24-3af45994aeaf",
"arn:aws:ssm:*:xxx:parameter/myparam"
]
}
]
}
更重要的是,Actons
到 Resources
中的 项目 的顺序是无关紧要的。因此你也可以有(不同的行动顺序):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ssm:GetParameter",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:*:xxx:key/e15f691e-5dde-473c-8f24-3af45994aeaf",
"arn:aws:ssm:*:xxx:parameter/myparam"
]
}
]
}
这意味着仅当给定资源支持时,IAM 才会测试对资源的操作。
如果经常首选第一种形式,因为它更易于阅读和管理。如果将所有内容都放在一条语句中,则很难为这样的语句命名、编辑和调试。