【问题标题】:How to allow users to launch EC2 instances only from Service Catalog?如何允许用户仅从 Service Catalog 启动 EC2 实例?
【发布时间】:2017-03-16 11:46:50
【问题描述】:

我创建了一个服务目录产品组合和产品,旨在允许用户启动他们自己的质量保证环境。我为一些用户提供了 AWS 托管策略“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,但从我目前阅读的内容来看,这两种方法似乎都不可能。有没有办法授予这种级别的细粒度权限,以便用户只能启动他们选择的特定服务目录产品中的资源?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-iam


    【解决方案1】:

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

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

    • IAM 用户 自己授予权限,或
    • 为产品的启动约束分配一个启动角色

    来自Applying a Launch Constraint 文档:

    没有启动限制,最终用户必须使用自己的 IAM 凭证启动和管理产品。为此,他们必须拥有 AWS CloudFormation、产品使用的 AWS 服务和 AWS Service Catalog 的权限。通过使用启动角色,您可以改为将最终用户的权限限制在他们需要的最低限度。

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

    【讨论】:

    • 优秀的答案。我最终偶然发现了这一点,但它在文档中并不像我希望的那样明显。您说得很清楚 - 可以使用配置产品的 IAM 用户的权限启动产品,也可以将 IAM 角色分配为启动约束,以向用户授予非凡的权限。对于发现此问题的任何其他人,我将补充说,我在初始错误的其余部分中使用了 STS AWS CLI 调用“decode-authorization-message”来确定实际错误是我需要 IAM:passRole授予我的实例 IAM 角色的权限。
    猜你喜欢
    • 2014-04-08
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多