关于AWS IAM Role如何配置临时token访问S3 小结

7 篇文章 0 订阅
5 篇文章 0 订阅

1. 这篇文章主要是想记录一下如何通过token本地访问、测试S3而不是直接使用IAM User的Access keys。简而言之就是通过StsClient assumeRole获取临时的credentials然后生成S3Client。

详细的IAM, STS相关的官网文档可以参考这里

2. 第一步先在这里创建一个IAM User

 1) 输入UserName,并且编程接口,然后下一步直接Next不赋予权限,Tag可以忽略。

2) Review界面如图:

3. 然后创建IAM Role。

1) 输入你的AccountID,并且为了安全,可以输入external ID,这里假设输入的是“Required”,如图:

 

 2) Attach权限,选择“AmazonS3FullAccess”,如图:

3) 输入IAM Role名称,假设这里输入的是“TestUserRoleForS3”,如图:

4) 创建Role之后,就能得到Role ARN,如图:

 4. 现在已经给TestUser添加了Role了,那么接下来就是配置TesUser的policy来assume role了。

1) TestUser的Permissions配置的右下角“Add inline policy”,如图:

2)  然后,输入以下的policy并假设命名为“TestUserRoleSTS”,如图:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::123456789101:role/TestUserRoleForS3"
        }
    ]
}

5. 以上配置IAM role使得我们可以通过Sts Client来获取Credentials并且访问S3,具体的代码可以参考:关于应用程序中使用STS切换IAM角色

6. 如果需要授权多个aws account来assume role,修改Trust Relationship里面的Principal。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::abc**********:root",
          "arn:aws:iam::123*********:root"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

注:

1. 如果遇见User is not authorized to perform: iam:PassRole on resource,可能是生成Credentials的时候缺少了external id配置;

2. 如果需要通过cli方式验证结果,可以参考:关于 AWS IAM Role 的最佳实践

1. Python版本的assume role可以参考:管理对 Amazon S3 资源的访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值