Amazon web services 如何允许用户仅从服务目录启动EC2实例?

Amazon web services 如何允许用户仅从服务目录启动EC2实例?,amazon-web-services,amazon-ec2,amazon-iam,Amazon Web Services,Amazon Ec2,Amazon Iam,我创建了一个服务目录组合和产品,旨在允许用户启动自己的质量保证环境。我在下面为一部分用户提供了AWS Managed Policy ServiceCatalogEndUserFullAccess,以便他们可以启动产品,但在本例中,他们似乎还需要对模板创建的资源拥有单独的权限,即EC2和ELB { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [

我创建了一个服务目录组合和产品,旨在允许用户启动自己的质量保证环境。我在下面为一部分用户提供了AWS Managed Policy ServiceCatalogEndUserFullAccess,以便他们可以启动产品,但在本例中,他们似乎还需要对模板创建的资源拥有单独的权限,即EC2和ELB

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "catalog-user:*",
            "cloudformation:CreateStack",
            "cloudformation:DeleteStack",
            "cloudformation:DescribeStackEvents",
            "cloudformation:DescribeStacks",
            "cloudformation:GetTemplateSummary",
            "cloudformation:SetStackPolicy",
            "cloudformation:ValidateTemplate",
            "cloudformation:UpdateStack",
            "servicecatalog:DescribeProduct",
            "servicecatalog:DescribeProductView",
            "servicecatalog:DescribeProvisioningParameters",
            "servicecatalog:ListLaunchPaths",
            "servicecatalog:ProvisionProduct",
            "servicecatalog:SearchProducts",
            "s3:GetObject"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "servicecatalog:DescribeRecord",
            "servicecatalog:ListRecordHistory",
            "servicecatalog:ScanProvisionedProducts",
            "servicecatalog:TerminateProvisionedProduct",
            "servicecatalog:UpdateProvisionedProduct"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "servicecatalog:userLevel": "self"
            }
        }
    }
]
}
因此,模板在CloudFormation中失败,并返回如下错误:

API:ec2:runInstances - You are not authorized to perform this operation.

理想情况下,我想限制用户仅从服务目录启动EC2的能力,或者更具体地说,从我们的临时VPC启动EC2的能力,但从我目前阅读的内容来看,这两者都不可能。有没有办法授予这种粒度级别的权限,以便用户只能启动他们选择的特定服务目录产品中的资源

您的策略已授予用户使用服务目录的权限,但这不足以允许他们启动实际资源

有两种方法可以授予启动资源的权限,例如Amazon EC2:

向IAM用户本身授予权限,或 为产品的启动约束分配启动角色 从文件:

如果没有启动约束,最终用户必须使用自己的IAM凭据启动和管理产品。为此,他们必须拥有AWS CloudFormation、产品使用的AWS服务和AWS服务目录的权限。通过使用启动角色,您可以将最终用户的权限限制到他们所需的最低限度


因此,创建一个具有启动EC2实例所需权限的启动角色,但只授予用户从服务目录启动产品所需的最低权限。

回答非常好。我最终偶然发现了这一点,但在文档中它并不像我希望的那样明显。您已经说得很清楚了-产品可以通过提供它们的IAM用户的权限启动,或者您可以将IAM角色分配为启动约束,以向用户授予额外的普通权限。对于发现此错误的任何其他人,我将补充说,我在初始错误的其余部分使用了STS AWS CLI调用“decode authorization message”,以确定实际错误是我需要具有IAM:passRole权限才能将IAM角色授予我的实例。