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

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

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

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

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

关于AWS IAM Role如何配置临时token访问S3 小结_第1张图片

2) Review界面如图:

关于AWS IAM Role如何配置临时token访问S3 小结_第2张图片

3. 然后创建IAM Role。

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

 关于AWS IAM Role如何配置临时token访问S3 小结_第3张图片

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

关于AWS IAM Role如何配置临时token访问S3 小结_第4张图片

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

关于AWS IAM Role如何配置临时token访问S3 小结_第5张图片

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

关于AWS IAM Role如何配置临时token访问S3 小结_第6张图片

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

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

关于AWS IAM Role如何配置临时token访问S3 小结_第7张图片

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

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

关于AWS IAM Role如何配置临时token访问S3 小结_第8张图片

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 资源的访问

你可能感兴趣的:(#,AWS,IAM,AWS,#,AWS,S3,AWS,IAM,User,IAM,Role)