本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
IAM在 Amazon EC2 实例上运行的应用程序的角色
在 Amazon EC2 实例上运行的应用程序需要凭证才能访问其他 AWS 服务。要以安全的方式提供这些证书,请使用IAM角色。角色可提供临时权限,以供应用程序在访问其他 AWS 资源时使用。角色的权限将确定允许访问资源的应用程序。
对于 Auto Scaling 组中的实例,您必须创建启动模板或启动配置,并选择要与实例关联的实例配置文件。实例配置文件是IAM角色的容器,它允许 Amazon EC2 在实例启动时将IAM角色传递给实例。首先,创建一个具有访问 AWS 资源所需的所有权限的IAM角色。然后,创建实例配置文件并将该角色分配给它。
注意
作为最佳实践,我们强烈建议您创建该角色,使其拥有应用程序所需的最低其他 AWS 服务 权限。
前提条件
创建在 Amazon 上运行的应用程序EC2可以担任的IAM角色。选择适当的权限,以便随后获得该角色的应用程序可以进行所需的特定API调用。
如果您使用IAM控制台而不是控制台中的一个 AWS SDKs, AWS CLI 则控制台会自动创建实例配置文件,并为其指定与其对应的角色相同的名称。
创建IAM角色(控制台)
打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在左侧的导航窗格中,选择角色。
-
选择 Create role(创建角色)。
-
对于选择可信实体,选择 AWS 服务。
-
对于您的用例,请选择,EC2然后选择 “下一步”。
-
如果可能,选择要用作权限策略的策略,或选择 Create policy(创建策略)以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅《IAM用户指南》中的创建IAM策略。在您创建策略后,关闭该选项卡并返回到您的原始选项卡。选中您希望服务具有的权限策略旁边的复选框。
-
(可选)设置权限边界。这是一项可用于服务角色的高级功能。有关更多信息,请参阅《IAM用户指南》中的IAM实体的权限边界。
-
选择下一步。
-
在 Name, review, and create(命名、检查并创建)页面上,对于 Role name(角色名称),请输入一个角色名称以帮助标识此角色的作用。此名称在您的 AWS 账户中必须唯一。由于其他 AWS 资源可能会引用该角色,因此您无法在角色创建后对其名称进行编辑。
-
检查该角色,然后选择创建角色。
IAM权限
使用IAM基于身份的策略来控制对新IAM角色的访问权限。需要对使用指定实例配置文件的启动模板创建或更新 Auto Scaling 组的IAM身份(用户或角色)拥有iam:PassRole
权限。
以下示例策略仅授予传递名称以开头的IAM角色的权限
。qateam-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/qateam-*
", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } } ] }
重要
有关 Amazon A EC2 uto Scaling 如何验证使用启动模板的 Auto Scaling 组的iam:PassRole
操作权限的信息,请参阅ec2:RunInstances 和 iam:PassRole 的权限验证。
创建启动模板
使用创建启动模板时 AWS Management Console,在高级详细信息部分,从IAM实例配置文件中选择角色。有关更多信息,请参阅 使用高级设置创建启动模板。
使用中的create-launch-template命令创建启动模板时 AWS CLI,请指定您的IAM角色的实例配置文件名称,如以下示例所示。
aws ec2 create-launch-template --launch-template-name
my-lt-with-instance-profile
--version-descriptionversion1
\ --launch-template-data '{"ImageId":"ami-04d5cc9b88example
","InstanceType":"t2.micro
","IamInstanceProfile":{"Name":"my-instance-profile
"}}'
另请参阅
有关帮助您开始学习和使用 Amazon IAM 角色的更多信息EC2,请参阅: