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角色不同于IAM用户或组,它不直接与个人或应用程序关联,而是被用作一个临时的安全身份,允许AWS服务或外部实体(如AWS Lambda函数或EC2实例)代执行特定任务时获得必要的权限。使用IAM角色可以避免共享访问密钥...
IAM角色常用于允许EC2实例、Lambda函数或其他服务以安全的方式访问其他AWS资源。 在Terraform中,我们使用HCL来定义和配置资源。HCL是一种简洁且声明式的语言,用于描述Terraform配置。以下是一个基本的IAM角色配置...
《PyPI与AWS CDK:aws-cdk.aws-iam-1.65.0的深度解析》 PyPI,全称Python Package Index,是Python编程语言的官方软件包仓库,为开发者提供了大量的开源库和模块,方便他们快速构建和部署项目。在Python的生态系统...
3. **安全控制**:结合AWS IAM(Identity and Access Management),可以通过实例的"Role"标签来限制实例的权限,确保安全策略得以实施。 4. **监控与报告**:使用"CostCenter"标签,可以追踪每个实例的费用归属,...
role = aws_iam_role.example.name } ``` 以上代码示例展示了如何使用HCL创建一个IAM角色并附加`AmazonS3ReadOnlyAccess`托管策略。 总结,AWS托管的IAM策略提供了一种便捷的方式来管理和控制AWS资源的访问权限。...
IAM角色是通过实例配置文件分配的,服务可以通过ec2元数据API的aws-sdk的透明用法来访问它们。 使用aws-sdk时,将对EC2元数据API进行调用,该API提供临时凭证,这些凭证随后用于对AWS服务的调用。 问题陈述 问题...
EC2实例角色用于赋予运行在EC2实例上的应用程序访问AWS服务的权限,而无需在实例上存储凭据。例如,一个实例可能需要访问S3来读取输入数据或存储输出数据,此时应配置一个包含适当`s3:*`权限的IAM实例配置文件。 ...
role = aws_iam_role.ec2_s3_access.name policy_arn = aws_iam_policy.s3_access.arn } ``` 5. **关联EC2实例和IAM角色**:最后,我们需要确保EC2实例在启动时使用这个IAM角色: ```hcl data "aws_iam_instance...
例如,当一个EC2实例需要访问其他AWS服务时,它可以通过STS获取一个角色的临时凭证,而不是拥有长期有效的访问密钥。 **aws_role_credentials库** `aws_role_credentials`库简化了与AWS角色凭证的交互过程。它允许...
无后端 Dropbox 克隆此示例使用 Auth0 及其与 AWS API(S3、SES、DynamoDB、EC2 等)的集成以及强大的 IAM 策略。 演示: :这是如何工作的? 用户使用 Auth0(任何身份提供者)登录Auth0 向浏览器返回一个 JSON Web ...
描述中提到的“服务提供商上载aws-iam-role”意味着某个服务或应用程序正在与 AWS IAM 角色交互。IAM 角色是一种身份,它拥有可以在 AWS 中执行操作的权限。与用户不同,角色不与特定的个人关联,而是设计为被服务、...
### AWS命令行界面(CLI)用户指南全解析 #### AWS CLI 是什么? AWS CLI (Command Line Interface) 是一种强大的工具,允许用户通过命令行接口来管理和控制 Amazon Web Services (AWS) 的各种服务。通过简单的...
例如,`iam_user.tf`可能包含用户定义,`iam_group.tf`管理组,`iam_role.tf`创建角色,`iam_policy.tf`定义策略,而`main.tf`通常会导入所有这些资源,并协调它们之间的依赖关系。 使用Terraform进行IAM管理的优势...
具有S3访问您的存储桶的IAM角色,必须命名为“ ec2_role” AWS用户必须具有EC2和S3权限以及IAM Pass角色(请参阅下文),以扩展具有对S3的访问权限的实例 确保.pem文件的名称与您的AWS账户上的键名完全相同。 实验...
aws ec2 run-instances --image-id ami-0c94855ba95c71c99 --count 1 --instance-type t2.micro ``` 2. **S3操作**:上传、下载、列出S3存储桶中的对象。 ```bash aws s3 cp localfile s3://mybucket/ aws s3...
`terraform-aws-cross-account-role` 是一个Terraform模块,专门设计用于创建IAM(Identity and Access Management)角色,以支持在不同的AWS账户之间安全地进行权限委托。 首先,IAM角色是AWS中的一个重要概念,它...
vpc = ec2.Vpc(self, "MyVPC") cluster = emr.CfnCluster(self, "MyCluster", visible_to_all_users=True, job_flow_role=iam.Role(self, "EMRJobFlowRole", assumed_by=iam.ServicePrincipal(...
CDK 提供了一种抽象层次,让开发者可以使用高级语义来构建和部署AWS资源,如EC2实例、S3存储桶、DynamoDB表等,包括我们现在讨论的Amazon Kendra索引。 **aws_cdk.aws_kendra 库** `aws_cdk.aws_kendra` 是AWS CDK...
该ip2instance在具有IAM角色的AWS ec2实例上运行,该角色有权承担其他角色 各种国外AWS账户中的其他角色列表 有权描述实例 允许应用到运行ip2instance的ec2实例的角色承担目标角色 可以在以下位置找到有关设置这些...