使用 SDK 时 AWS 承担角色访问被拒绝
AWS assume role access denied while using SDK
我正在使用 go sdk 创建一个新角色并承担它。两者都是由同一个 IAM 用户完成的。
角色信任关系如下:
{
"Statement": [{
"Effect": "Allow",
"Principal": { "AWS": "<an admin user>" },
"Action": [ "sts:AssumeRole" ]
}]
}
稍后尝试将对象添加到存储桶时,我可以创建一个会话令牌,
但 PutObject 操作因 AccessDenied 而失败。
存储桶策略是:
{
"Effect": "Allow",
"Action":"s3:*",
"Resource": [
"arn:aws:s3:::<name of the bucket>/*"
],
"Condition": {}
}
如果您担任的角色未通过角色策略授予对 S3 存储桶的访问权限,则您需要将该角色作为委托人添加到存储桶策略中。
这里有一个方便的工具; https://awspolicygen.s3.amazonaws.com/policygen.html 有助于生成存储桶策略。但它最终应该看起来像:
{
"Effect": "Allow",
"Action":"s3:*",
"Principal": {
"AWS": ["arn:aws:iam::<accountid>:role/<name of assumed role>"]
},
"Resource": [
"arn:aws:s3:::<name of the bucket>/*"
],
"Condition": {}
}
我正在使用 go sdk 创建一个新角色并承担它。两者都是由同一个 IAM 用户完成的。 角色信任关系如下:
{
"Statement": [{
"Effect": "Allow",
"Principal": { "AWS": "<an admin user>" },
"Action": [ "sts:AssumeRole" ]
}]
}
稍后尝试将对象添加到存储桶时,我可以创建一个会话令牌, 但 PutObject 操作因 AccessDenied 而失败。 存储桶策略是:
{
"Effect": "Allow",
"Action":"s3:*",
"Resource": [
"arn:aws:s3:::<name of the bucket>/*"
],
"Condition": {}
}
如果您担任的角色未通过角色策略授予对 S3 存储桶的访问权限,则您需要将该角色作为委托人添加到存储桶策略中。
这里有一个方便的工具; https://awspolicygen.s3.amazonaws.com/policygen.html 有助于生成存储桶策略。但它最终应该看起来像:
{
"Effect": "Allow",
"Action":"s3:*",
"Principal": {
"AWS": ["arn:aws:iam::<accountid>:role/<name of assumed role>"]
},
"Resource": [
"arn:aws:s3:::<name of the bucket>/*"
],
"Condition": {}
}