Sno*_*ash 16 amazon-web-services terraform
这个AWS角色究竟做了什么?
最相关的比特似乎是:
"Action": "sts:AssumeRole",和
"Service": "ec2.amazonaws.com"
完整的角色在这里:
resource "aws_iam_role" "test_role" {
name = "test_role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
Run Code Online (Sandbox Code Playgroud)
来自:https://www.terraform.io/docs/providers/aws/r/iam_role.html
Mar*_*ins 31
要理解这一点的含义,有必要了解IAM角色如何工作的一些细节.
IAM角色与其结构中的用户类似,但不是由一组固定的凭据访问,而是通过假定角色来使用它,这意味着请求并获取允许采取具有以下权限的特权的临时API凭证被授予该角色.
该sts:AssumeRole操作是获取此类临时凭证的方式.要使用它,用户或应用程序使用一些已获取的凭据(例如用户的固定访问密钥)来调用此API,并返回(如果允许)一组新凭据作为角色.这是AWS服务可以代表您调用其他AWS服务的机制,IAM实例配置文件通过该机制在EC2中工作,用户可以通过该机制临时切换AWS控制台中的访问级别或帐户.
该假设的作用的政策决定哪个校长(用户,其他角色,AWS服务)被允许调用sts:AssumeRole这个角色.在此示例中,EC2服务本身具有访问权限,这意味着EC2能够使用此角色代表您执行操作.
这个角色的资源单独是没有用的,因为它没有任何相关政策IAM,因此不授予任何权限.因此,aws_iam_role资源将始终伴随至少一个其他资源来指定其访问权限.做这件事有很多种方法:
aws_iam_role_policy直接附加政策中的作用.在这种情况下,策略将描述允许角色执行的一组AWS动作,以及可选的其他约束.aws_iam_policy创建一个独立的策略,然后利用aws_iam_policy_attachment这一政策有一个或多个角色,用户和组关联.如果您希望将单个策略附加到多个角色和/或用户,则此方法很有用.policy属性aws_s3_bucket设置了特定于存储桶的策略; Principal策略文档中的元素可用于指定哪些主体(例如角色)可以采取某些操作.IAM是一个灵活的系统,支持几种不同的访问控制方法.哪种方法适合您将在很大程度上取决于您的组织如何处理安全性和访问控制问题:从角色管理策略,使用aws_iam_role_policy和aws_iam_policy_attachment通常适用于拥有集中安全团队来监督整个帐户访问的组织,同时服务 - 特定策略将访问控制决策委派给负责每个单独对象的人员或团队.作为深度防御策略的一部分,这两种方法可以结合使用,例如使用角色和用户级策略进行"边界"访问控制(控制外部访问)和服务级策略进行内部访问控制(控制内部访问控制之间的交互)您帐户中的对象).
有关角色的更多详细信息,请参阅AWS IAM指南IAM角色.另请参阅访问管理,其中介绍了IAM中访问控制的一般概念.