`

aws ec2的iam role深度解析

阅读更多

Aws ec2 iam role

 

访问aws的各种service api的时候,都要先进行身份认证,有下面几种情况。

1.通过aws console web界面访问

用户名,口令,MFA(可选)

 

2.aws cli 

需要在~/.aws目录下的credentials文件里面配置

aws_access_key_id

aws_secret_access_key

 

3.develop sdk

环境变量,配置文件,~/.aws目录下的credentials文件中配置均可

aws_access_key_id

aws_secret_access_key

 

可以看出来,除了console以外,其它情况下,都需要提供credential。

 

上面提到的credential是通过iam user登陆到aws console界面后创建的。credential的权限同iam user的权限是一样的。设想一下,如果root用户的credential信息被人利用,那么他可以做任何事情。所以,aws建议

不要生成root用户的credential,也就是aws_access_key_id和aws_secret_access_key,而是

创建其他的iam user,通过iam user获取credential,然后再分给其它人,程序或者工具使用。

 

虽然是使用iam user的credential,但是如果被人盗用,同样会产生很严重的后果。所以,对于

运行在ec2上的application来说,如果把credential配置在ec2的某个地方(环境变量,配置文件),

仍然存在很大的安全隐患,而且,如果以后credential发生变更,也会增加维护的成本。

 

所以,基于以上安全和维护的原因,aws ec2为application提供了一种类似于托管的方式,application

需要访问web service api的时候,由sdk内部实现直接向ec2 instance获取动态的临时credential,然后再用取得的credential发起https认证请求。这样一来,application就不需要理会credential的事情了。当然,

前提是需要配置好ec2的IAM role。

 

IAM role的创建:

Signin aws console -〉My Security Credentials -〉 Roles -〉Create new role -〉Select(Amazon EC2 role type) -〉Attach Policy -〉Next Step -〉Input Role name -〉Create role

 

通过console创建完IAM role的时候,会自动创建一个同名的instance profile,然后ec2 instance配置

iam role的时候,实际选择的是这个instance profile。在Attach Policy的时候,需要根据application实际需要访问哪些aws的service和resource进行相应的选取。

 

Attach IAM role:

1〉可以在创建ec2 instance的时候,指定instance profile

2〉对于执行中的ec2 instance,也可以attach指定的instance profile

 

 

可以通过ec2 meta-data来查看security-credentials信息:

 

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role_name

 

{

  "Code" : "Success",

  "LastUpdated" : "2012-04-26T16:39:16Z",

  "Type" : "AWS-HMAC",

  "AccessKeyId" : "xxxx",

  "SecretAccessKey" : "yyyy",

  "Token" : "token",

  "Expiration" : "2017-05-17T15:09:54Z"

}

 

application 使用aws sdk的话,sdk内部会自动为我们做这件事情,然后利用credentials对https request

进行签名。其实,ec2内部是通过role name调用sts(AWS Security Token Service)来获取credentials信息的。这种动态获取的credentials是有生存周期的,过期自动失效,ec2 instance会在过期之前自动获取新的credentials,sdk不需要关注过期的问题,ec2 instance会把有效的credentials保存在meta-data中,sdk只需要从meta-data中获取即可。

 

0
0
分享到:
评论

相关推荐

    kube2iam:kube2iam为在Kubernetes上运行的Pod提供了不同的AWS IAM角色

    IAM角色是通过实例配置文件分配的,服务可以通过ec2元数据API的aws-sdk的透明用法来访问它们。 使用aws-sdk时,将对EC2元数据API进行调用,该API提供临时凭证,这些凭证随后用于对AWS服务的调用。 问题陈述 问题...

    auth0-s3-sample:演示如何结合使用 AWS API 和 IAM 策略来构建与 Amazon S3 安全交互的无后端应用程序

    无后端 Dropbox 克隆此示例使用 Auth0 及其与 AWS API(S3、SES、DynamoDB、EC2 等)的集成以及强大的 IAM 策略。 演示: :这是如何工作的? 用户使用 Auth0(任何身份提供者)登录Auth0 向浏览器返回一个 JSON Web ...

    aws-ml-experimenter:用于在Amazon EC2上运行ML模型并使用Shiny分析结果的框架

    具有S3访问您的存储桶的IAM角色,必须命名为“ ec2_role” AWS用户必须具有EC2和S3权限以及IAM Pass角色(请参阅下文),以扩展具有对S3的访问权限的实例 确保.pem文件的名称与您的AWS账户上的键名完全相同。 实验...

    ip2instance:在多个AWS账户中搜索实例IP地址

    该ip2instance在具有IAM角色的AWS ec2实例上运行,该角色有权承担其他角色 各种国外AWS账户中的其他角色列表 有权描述实例 允许应用到运行ip2instance的ec2实例的角色承担目标角色 可以在以下位置找到有关设置这些...

    卷积云:使用AWS CDK创建易于使用的ECS集群的库

    Vpc } from "@aws-cdk/aws-ec2"import { Role } from "@aws-cdk/aws-iam"import { Stack } from "@aws-cdk/core"import { Ec2Cluster , DeployFiles , ScalingPlan } from '@cohalz/cirrocumulus'import * as path ...

    aws-sigv4-proxy:该项目使用Sigv4签名并代理HTTP请求

    * IAM role for Amazon EC2 or ECS task role More information can be found in the [ developer guide ]( https : //docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html)

    dynamoDBLocal

    设置环境以在AWS EC2上运行visualApp应用程序: 1.Create an AWS EC2 instance and add the IAM role that has administrative privileges.2.SCP Upload the visualAPP.tar application onto EC2 using AWS ...

    testKinesisApp

    1. Create an AWS EC2 instance and add the IAM role that has administrative privileges. 2. SCP Upload the visualAPP.tar application onto EC2 using AWS credentials and EC2 IP address 3. SSH into the EC...

    tierratelematics-terraformaws

    Terraform-aws-iam 该存储库是一组用于定义IAM资源的Terraform模块。 快速开始 获取模块并运行的最简单方法是为其创建Terraform定义,将此代码段复制到名为main.tf的文件中: ... " ec2.amazonaws.com " ,

    codedeploy-springboot

    codedeploy-springboot...创建用于传达S3服务的IAM角色转到IAM服务->角色->创建角色 单击EC2,然后单击下一步:权限 单击下一步:标签->下一步:回顾 单击创建角色将EC2-S3Role附加到EC2实例并重新启动CodeDeploy-agent

    opsworks_spot_fleet:在Opsworks中使用Spot Fleet。 自动注册和注销

    用作EC2实例配置文件的IAM角色-此角色应具有opsworks register , deregister和assign访问权限Opsworks Stack和实例要注册的图层。 #用法克隆仓库并运行pip install -r requirements.txt 。 使用generate_config....

Global site tag (gtag.js) - Google Analytics