如何限制 IAM 身份对特定 Amazon EC2 资源的访问?
我想限制 AWS Identity and Access Management (IAM) 身份对特定 Amazon Elastic Compute Cloud (Amazon EC2) 资源的访问。
简短描述
Amazon EC2 对资源级权限或条件提供部分支持。可以使用资源级权限来控制如何允许 IAM 身份访问特定 Amazon EC2 资源。
还可以使用 ABAC(基于标签的授权)来控制对 AWS 资源的访问。有关详细信息,请参阅 IAM 教程: 根据标签定义对 AWS 资源的访问权限。
解决方法
使用以下 IAM 策略示例,根据使用案例限制对 Amazon EC2 实例的访问。然后,将策略附加到想要限制访问的 IAM 身份。
将访问权限限制为仅启动、停止或重启实例
以下策略示例将 IAM 身份的访问权限限制为仅启动、停止或重启 EC2 实例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances" ], "Resource": [ "arn:aws:ec2:*:AccountId:instance/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/Owner": "Bob" } } } ] }
注意: 请将 Owner 替换为您的标签键,将 Bob 替换为您的标签值,并将 AccountId 替换为您的 AWS 账户 ID。
要按 AWS 区域限制其他 Amazon EC2 资源,请确保这些操作支持资源级权限和条件。
按标签限制 EC2 实例的启动
以下策略示例使用 Owner 标签键将 IAM 身份的访问权限限制为仅启动 EC2 实例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:AccountId:instance/*" ], "Condition": { "StringNotLike": { "aws:RequestTag/Owner": "*" } } }, { "Sid": "AllowRunInstances", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "AllowCreateTagsOnLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:AccountId:*/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": [ "RunInstances" ] } } } ] }
注意: 请将 Owner 替换为您的标签键,并将 AccountId 替换为您的账户 ID。
按实例类型限制 EC2 实例的启动
以下策略示例将 IAM 身份的访问权限限制为仅使用 t3.* 实例类型启动 EC2 实例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:AccountId:instance/*" ], "Condition": { "StringNotLike": { "ec2:InstanceType": "t3.*" } } }, { "Sid": "AllowRunInstances", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "AllowCreateTagsOnLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:AccountId:*/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": [ "RunInstances" ] } } } ] }
**注意:**请将实例类型 t3.* 替换为您的实例类型,例如 t3.nano。另外,将 AccountId 替换为您的账户 ID。
有关更多信息,请参阅 Amazon EC2 实例类型命名规范。
相关信息
如何创建 IAM 策略以通过标签控制对 Amazon EC2 资源的访问?
- 语言
- 中文 (简体)

相关内容
AWS 官方已更新 2 年前