为在EC2实例上运行的应用程序指定权限 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为在EC2实例上运行的应用程序指定权限

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

如果在您的堆栈的 Amazon EC2 实例上运行的应用程序需要访问其他AWS资源,例如 Amazon S3 存储桶,则它们必须具有相应的权限。要授予这些权限,您可使用实例配置文件。在创建 Stac AWS OpsWorks ks 堆栈时,您可以为每个实例指定实例配置文件。

“Add Stack (添加堆栈)”页中的“Advanced (高级)”选项。

您还可以通过编辑层配置来为层的实例指定配置文件。

实例配置文件指定了IAM角色。在实例上运行的应用程序可以代入该角色来访问AWS资源,但须遵守该角色的策略授予的权限。有关应用程序如何扮演角色的更多信息,请参阅使用API调用代入角色

您可以采用以下任一方式创建实例配置文件:

实例配置文件必须具有信任关系和授予AWS资源访问权限的附加策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

实例配置文件必须具有这种信任关系, AWS OpsWorks Stacks 才能代表您采取行动。如果您使用默认服务角色,请勿修改信任关系。如果您正在创建自定义服务角色,请指定信任关系,如下所示:

  • 如果您在IAM控制台中使用创建角色向导,请在向导第二页的 “AWS服务角色” 下指定 Amazon EC2 角色类型。

  • 如果您使用的是 AWS CloudFormation 模板,则可以在模板的 “资源” 部分中添加类似以下内容的内容。

    "Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } }

当您创建您的实例配置文件时,您可将适当的策略附加到该配置文件的角色。创建堆栈后,必须使用IAM控制台或将相应的策略附加API到配置文件的角色。例如,以下策略授予对名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶中所有对象的完全访问权限。Replace(替换) region 以及 amzn-s3-demo-bucket,其值与您的配置相符。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:region::amzn-s3-demo-bucket/*" } ] }

有关如何创建和使用实例配置文件的示例,请参阅使用 Amazon S3 存储桶

如果您的应用程序使用实例配置文件API从EC2实例调用 AWS OpsWorks 堆栈,则除了对 AWS OpsWorks 堆栈和其他AWS服务iam:PassRole执行适当的操作外,该策略还必须允许该操作。iam:PassRole 权限允许 AWS OpsWorks Stacks 代表您担任该服务角色。有关 AWS OpsWorks 堆栈的更多信息API,请参阅AWS OpsWorks API参考

以下是允许您从EC2实例调用任何 AWS OpsWorks Stacks 操作以及任何 Amazon EC2 或 Amazon S3 操作的IAM策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole" ], "Resource": "arn:aws:ec2:region:account_id:instance/*", "Condition": { "StringEquals": { "iam:PassedToService": "opsworks.amazonaws.com" } } } ] }
注意

如果您不允许iam:PassRole,则任何调用 AWS OpsWorks Stacks 操作的尝试都会失败,并出现如下错误:

User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole

有关在EC2实例上使用角色获取权限的更多信息,请参阅AWS Identity and Access Management 用户指南中的授予在 Amazon EC2 实例上运行的应用程序访问AWS资源的权限。