我想要限制用户的访问权限,以使其只能从标记的 Amazon 系统映像 (AMI) 启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如何限制访问权限以使用 AMI 标签启动 EC2 实例?

要限制用户的访问权限以使用标记的 AMI 启动 EC2 实例,从现有实例创建一个 AMI(或使用现有的 AMI),然后将标签添加到该 AMI。然后,使用标签条件创建自定义 IAM 策略,该条件将用户权限限制为仅使用标记的 AMI 启动实例。

在本例的 IAM 策略中,有三个语句 ID (Sid):

  • Sid ReadOnlyAccess 允许用户使用 Describe* 查看您账户中的任何 EC2 资源,包括以 Describe 开头的所有 EC2 操作。Sid ReadOnlyAccess 还允许用户获取控制台输出和 EC2 实例的屏幕截图。有关更多信息,请参阅 GetConsoleOutputGetConsoleScreenshotDescribeAlarmsGetMetricStatistics 的 CloudWatch 权限允许在 Amazon EC2 控制台中显示 EC2 实例的基本运行状况信息。ListInstanceProfiles 的 IAM 权限允许启动 EC2 实例时在“配置实例详细信息”页面的 IAM 角色列表中列出现有实例配置文件。不过,ListInstanceProfiles API 不允许用户将 IAM 角色连接到 EC2 实例。
  • Sid ActionsRequiredtoRunInstancesInVPC 通过指定每个资源的 ARN,授予用户在 us-east-1 中使用资源级权限通过任何实例、密钥对、安全组、卷、网络接口或子网执行 RunInstances API 的权限。
  • 如果 AMI 拥有设置为“Prod”的环境标签且实例位于 us-east-1 中,则 Sid LaunchingEC2withAMIsAndTags 允许用户使用 AMI 启动 EC2 实例。对位于 in us-east-1 中的任何 AMI,资源级权限设置为 ARN,并且条件匹配 EC2:资源标签/环境标签密钥的值和密钥值“Prod”。

此策略允许用户在启动 EC2 实例时列出角色,但用户无法启动连接角色的实例,除非其拥有 iam:PassRole 权限。此策略不允许用户创建新的安全组。除非用户拥有 EC2:CreateSecurityGroup 权限,否则必须选择现有的安全组才能启动 EC2 实例。EC2:CreateSecurityGroup 仅授予创建安全组的访问权限 - 此操作不会添加或修改任何规则。要添加入站规则,用户必须拥有入站 EC2:AuthorizeSecurityGroupIngress API 操作和出站 EC2:AuthorizeSecurityGroupEgress API 操作的权限。

以下 IAM 策略使用 RunInstances 操作所需资源的资源级权限。有关 RunInstances 所需资源的更多信息,请参阅 RunInstances 的资源级权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:GetMetricStatistics",
                "iam:ListInstanceProfiles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ActionsRequiredtoRunInstancesInVPC",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:us-east-1:AccountId:instance/*",
                "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
                "arn:aws:ec2:us-east-1:AccountId:security-group/*",
                "arn:aws:ec2:us-east-1:AccountId:volume/*",
                "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
                "arn:aws:ec2:us-east-1:AccountId:subnet/*"
            ]
        },
        {
            "Sid": "LaunchingEC2withAMIsAndTags",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Environment": "Prod"
                }
            }
        }
    ]
}

此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 5 月 9 日