IAM策略能否限制为仅针对临时会话(GetSessionToken)?

0

【以下的问题经过翻译处理】 我想创建一个IAM用户,该用户只能用于创建临时会话令牌和在S3中列出存储桶。然后,临时会话还应该能够进行PutObject、GetObject和DeleteObject操作。我不认为使用GetSessionToken是可能的,因为临时会话会像原始帐户一样受到限制。但我不确定是否有一些特殊的主体或其他条件(比如检查会话令牌)可以让这个工作?

这是我的基本策略...

(代码部分省略)

我需要在这里使用AssumeRole吗,这样临时会话就能获得不同的权限吗?

谢谢!

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

如果我理解正确,您希望仅在请求者使用临时凭证时允许S3操作。

在这种情况下,您可以使用“Null”条件运算符来检查“aws:TokenIssueTime”全局条件键的存在;正如文档所述,“如果用户正在使用临时凭据,则键aws:TokenIssueTime存在并具有值。” 文档中也提供了一个例子,“用户在使用Amazon EC2 API时必须不使用临时凭据(该键必须不存在)。”(这与您的情况相反)。

如果您计划将策略附加到IAM用户,则应该是这样的:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "my_s3_bucket_arn/*",
            "Condition": {
                "Null": {
                    "aws:TokenIssueTime": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "my_s3_bucket_arn",
            "Condition": {
                "Null": {
                    "aws:TokenIssueTime": "false"
                }
            }
        }
    ]
}

注意:IAM身份基础策略(附加到IAM用户、组或角色)没有“Principal”元素。

上述策略检查“aws:TokenIssueTime”是否不是空,这意味着实体应该使用临时凭证;在这种情况下,如果用户使用“GetSessionToken”或假定角色获得临时凭证,则可以调用允许的S3 API操作。

我希望这回答了您的问题!

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则