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中获取即可。
相关推荐
IAM角色是通过实例配置文件分配的,服务可以通过ec2元数据API的aws-sdk的透明用法来访问它们。 使用aws-sdk时,将对EC2元数据API进行调用,该API提供临时凭证,这些凭证随后用于对AWS服务的调用。 问题陈述 问题...
无后端 Dropbox 克隆此示例使用 Auth0 及其与 AWS API(S3、SES、DynamoDB、EC2 等)的集成以及强大的 IAM 策略。 演示: :这是如何工作的? 用户使用 Auth0(任何身份提供者)登录Auth0 向浏览器返回一个 JSON Web ...
具有S3访问您的存储桶的IAM角色,必须命名为“ ec2_role” AWS用户必须具有EC2和S3权限以及IAM Pass角色(请参阅下文),以扩展具有对S3的访问权限的实例 确保.pem文件的名称与您的AWS账户上的键名完全相同。 实验...
该ip2instance在具有IAM角色的AWS ec2实例上运行,该角色有权承担其他角色 各种国外AWS账户中的其他角色列表 有权描述实例 允许应用到运行ip2instance的ec2实例的角色承担目标角色 可以在以下位置找到有关设置这些...
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 ...
* 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)
设置环境以在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 ...
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...
Terraform-aws-iam 该存储库是一组用于定义IAM资源的Terraform模块。 快速开始 获取模块并运行的最简单方法是为其创建Terraform定义,将此代码段复制到名为main.tf的文件中: ... " ec2.amazonaws.com " ,
codedeploy-springboot...创建用于传达S3服务的IAM角色转到IAM服务->角色->创建角色 单击EC2,然后单击下一步:权限 单击下一步:标签->下一步:回顾 单击创建角色将EC2-S3Role附加到EC2实例并重新启动CodeDeploy-agent
用作EC2实例配置文件的IAM角色-此角色应具有opsworks register , deregister和assign访问权限Opsworks Stack和实例要注册的图层。 #用法克隆仓库并运行pip install -r requirements.txt 。 使用generate_config....