Amazon web services AWS IAM策略:多个操作和多个资源

Amazon web services AWS IAM策略:多个操作和多个资源,amazon-web-services,amazon-iam,aws-kms,ssm,Amazon Web Services,Amazon Iam,Aws Kms,Ssm,这是关于AWS IAM政策的问题,涉及多个资源的多个行动(可能不相关)。我有参数“myparam”用“mykey”加密,我有如下单独的策略块,一个用于param,一个用于key,它可以工作 { { "Action": [ "ssm:GetParameter", ], "Effect": "Allow", "Resource": "MY-ARN:MY-ACC:parameter/myparam"

这是关于AWS IAM政策的问题,涉及多个资源的多个行动(可能不相关)。我有参数“myparam”用“mykey”加密,我有如下单独的策略块,一个用于param,一个用于key,它可以工作

{
    {
        "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"
    }

}
在这种情况下,如何将操作映射到资源?我找不到这方面的任何文档 如果我有相关的资源或相关的活动,那么这是有意义的,你对此有何评论

如果我结合如下相同的,这是否有效

{
    {
        "Action": [
            "ssm:GetParameter",
            "kms:Decrypt"
        ],

        "Resource": [ 
            "MY-ARN:MY-ACC:parameter/myparam"
            "MY-ARN:MY-ACC::key/mykey"
        ],
        "Effect": "Allow"
    }

}
是的

验证我是否使用
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
中项目的顺序是不相关的。因此,您还可以有(不同的操作顺序):

这意味着IAM将仅在给定资源支持资源的情况下测试资源的操作


第一种形式通常是首选的,因为它更易于阅读和管理。如果将所有内容都放在一个语句中,则很难命名、编辑和调试这样的语句

@Krishna没问题。希望这有助于澄清问题。您好,Marcin-只是一个问题:如果我有参数,比如myparam1和myparam2,在参考资料部分,如果我有以下行,“MY-ARN:MY-ACC:parameter/myparam/*”,我相信“getParameter”将访问这两个参数。但是这行“MY-ARN:MY-ACC:parameter/myparam*”会不会让“getParameter”同时访问这两个参数?