首页 文章

当桶设置为public时,IAM用户只能访问S3存储桶

提问于
浏览
0

我将've been trying to test my first lambda function, however I' m只能在将存储桶策略设置为public时成功进行测试 . 我想只提供对我的IAM用户的访问权限,但每当我尝试这样做时,我都会收到“拒绝访问”错误 . 我确认IAM用户确实具有管理员访问权限 .

以下是存储桶策略中的相关片段,其中我将Principal设置为我的IAM用户的ARN,这导致“拒绝访问”错误:

"Principal": {
     "AWS": "arn:aws:iam::12_DIGIT_USER_ID:user/adminuser"
}

将Principal设置为public,如下所示,允许lambda成功运行:

"Principal": {
     "AWS": "*"
}

显然,我想避免使用公共存储桶,并且每个博客帖子和StackOverflow问题的解决方案似乎都是设置类似于上面第一个代码片段的存储桶策略,但我绝对无法弄清楚为什么它对我不起作用 . 任何帮助将不胜感激 .

2 回答

  • 1

    问题是您在用户和资源权限之间混淆 .

    您只需将Resource to Resource权限设置为策略,将其分配给具有lambda.amazonaws.com信任关系的Role,然后将该Role分配给Lambda函数 .

    enter image description here

    enter image description here

    希望能帮助到你 .

  • 2

    授予访问Amazon S3中资源的权限时:

    • 如果您希望授予公共访问权限,请在存储桶本身上使用 Bucket Policy

    • 如果您要授予 specific users or groups of users 的权限,请将权限直接添加到IAM中的用户/组(不需要 principal

相关问题