Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
IAM 用户在重新创建后无法访问 S3 存储桶
2 分钟阅读
内容级别:中级
3
如果删除并重新创建用户,请使用用户 ARN 更新 S3 存储桶策略以授予用户对存储桶的访问权限。
客户抱怨说,在 IAM 控制台中重新创建用户后,IAM 用户无法访问 S3 存储桶。客户认为新用户已经通过 S3 存储桶策略中的 ARN 授予了权限,因为旧用户和新用户具有相同的用户名。 然而,一旦删除了旧用户,S3 存储桶策略中的用户 ARN 被更改为旧用户的唯一 ID,实际上并未授予新用户任何权限,因此新用户在访问 S3 存储桶时被拒绝访问。 为解决此问题,客户应使用用户的 ARN 更新 S3 存储桶策略以授予用户对存储桶的访问权限。。
请参阅以下重现该问题的步骤:
- AWS CLI 用户配置:
$ aws configure --profile s3testuser AWS Access Key ID [None]: OldAccessKeyID AWS Secret Access Key [None]: OldSecretAccessKey Default region name [None]: us-east-1 Default output format [None]: json $ export AWS_PROFILE=s3testuser $ aws sts get-caller-identity { "UserId": "AIDACKCEVSQ6C2EXAMPLE", <========== 旧用户 ID。 "Account": "111122223333", "Arn": "arn:aws:iam::111122223333:user/s3testuser" }
- S3 存储桶策略授予用户存储桶权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/s3testuser" <========== 用户 ARN。 }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucketnamehere", "arn:aws:s3:::mybucketnamehere/*" ] } ] }
- 用户可以访问存储桶:
$ aws s3 ls s3://mybucketnamehere 2024-06-21 02:27:27 80755 1.JPG $ aws s3 cp s3://mybucketnamehere/1.JPG . download: s3://mybucketnamehere/1.JPG to ./1.JPG
-
从 IAM 控制台中删除用户。
-
S3 存储桶策略发生变化:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "AIDACKCEVSQ6C2EXAMPLE" <========== 从用户 ARN 变为用户 ID。 }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucketnamehere", "arn:aws:s3:::mybucketnamehere/*" ] } ] }
- 使用相同用户名重新创建用户并配置用户配置文件:
$ aws configure --profile s3testuser AWS Access Key ID [****************DX7D]: NewAccessKeyID AWS Secret Access Key [****************HfeF]: NewSecretAccessKey Default region name [us-east-1]: Default output format [json]: $ export AWS_PROFILE=s3testuser $ aws sts get-caller-identity { "UserId": "AIDAT2GQOK7BGGEXAMPLE", <========== 新用户 ID。 "Account": "111122223333", "Arn": "arn:aws:iam::111122223333:user/s3testuser" }
- 新用户被拒绝访问:
$ aws s3 ls s3://mybucketnamehere An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied $ aws s3 cp s3://mybucketnamehere/1.JPG . fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
- 使用用户 ARN 更新 S3 存储桶策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/s3testuser" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucketnamehere", "arn:aws:s3:::mybucketnamehere/*" ] } ] }
- 新用户成功访问 S3 存储桶:
$ aws s3 ls s3://mybucketnamehere 2024-06-21 02:27:27 80755 1.JPG $ aws s3 cp s3://mybucketnamehere/1.JPG . download: s3://mybucketnamehere/1.JPG to ./1.JPG
总结:如果删除并重新创建用户,请使用用户 ARN 更新 S3 存储桶策略以授予用户对存储桶的访问权限。
参考文献: [1] AWS IAM 用户指南 - 策略和权限
没有评论
相关内容
- AWS 官方已更新 2 个月前
- AWS 官方已更新 7 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前