基于身份的策略示例 Amazon Service Catalog - Amazon Service Catalog
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

基于身份的策略示例 Amazon Service Catalog

最终用户的控制台访问权限

AWSServiceCatalogEndUserFullAccessAWSServiceCatalogEndUserReadOnlyAccess 策略授予对 Amazon Service Catalog 最终用户控制台视图的访问权限。当拥有其中任一策略的用户 Amazon Service Catalog 在中进行选择时 Amazon Web Services Management Console,最终用户控制台视图将显示他们有权启动的产品。

在最终用户成功启动您授予访问权限的产品之前,您必须向他们提供其他 IAM 权限,以允许他们使用产品 Amazon CloudFormation 模板中的每个底层 Amazon 资源。 Amazon Service Catalog 例如,如果产品模板包含 Amazon Relational Database Service(Amazon RDS),则您必须向用户授予用于启动产品的 Amazon RDS 权限。

要了解如何允许最终用户启动产品,同时强制执行对 Amazon 资源的最低访问权限,请参阅。使用 Amazon Service Catalog 约束

如果应用 AWSServiceCatalogEndUserReadOnlyAccess 策略,则您的用户将具有最终用户控制台的访问权限,但他们没有启动产品和管理预配置产品所需的权限。您可以使用 IAM 直接向最终用户授予这些权限,但是如果您想限制最终用户对 Amazon 资源的访问权限,则应将该策略附加到启动角色。然后,您可以使用 Amazon Service Catalog 将启动角色应用于产品的启动约束。有关应用启动角色、启动角色限制和示例启动角色的更多信息,请参阅Amazon Service Catalog 启动约束

注意

如果您向用户授予 Amazon Service Catalog 管理员的 IAM 权限,则会改为显示管理员控制台视图。除非您希望最终用户具有管理员控制台视图的访问权限,否则不要授予他们这些权限。

最终用户的产品访问权限

在最终用户可以使用您授予访问权限的产品之前,您必须向他们提供其他 IAM 权限,以允许他们使用产品 Amazon CloudFormation 模板中的每个底层 Amazon 资源。例如,如果产品模板包含 Amazon Relational Database Service(Amazon RDS),则您必须向用户授予用于启动产品的 Amazon RDS 权限。

如果应用 AWSServiceCatalogEndUserReadOnlyAccess 策略,则您的用户将具有最终用户控制台视图的访问权限,但他们没有启动产品和管理预配置产品所需的权限。您可以在 IAM 中直接向最终用户授予这些权限,但是如果您想限制最终用户对 Amazon 资源的访问权限,则应将该策略附加到启动角色。然后,您可以使用 Amazon Service Catalog 将启动角色应用于产品的启动约束。有关应用启动角色、启动角色限制和示例启动角色的更多信息,请参阅Amazon Service Catalog 启动约束

管理预配置产品的示例策略

您可以创建自定义策略来帮助满足组织的安全要求。以下示例介绍如何自定义每个操作的访问级别,以提供用户、角色和账户级支持。您可以向用户授予查看、更新、终止和管理以下预配置产品的访问权限:1) 由该用户创建的预配置产品;2) 由其他用户使用该用户的角色创建的预配置产品;或 3) 由该用户登录的账户创建的预配置产品。这种访问模式是分层的 - 授予账户级访问权限时会同时授予角色级和用户级访问权限,添加角色级访问权限时会授予用户级访问权限,但不会授予账户级访问权限。您可以在策略 JSON 中使用 Condition 块作为 accountLevelroleLeveluserLevel 来指定上述权限。

这些示例也适用于 Amazon Service Catalog API 写入操作的访问级别:UpdateProvisionedProductTerminateProvisionedProduct,以及读取操作:DescribeRecordScanProvisionedProducts、和ListRecordHistoryScanProvisionedProductsListRecordHistory API 操作使用 AccessLevelFilterKey 作为输入,该键的值对应于此处讨论的 Condition 块级别 (accountLevel 等同于“Account”的 AccessLevelFilterKey 值、“Role”的 roleLevel 值和“User”的 userLevel 值)。有关更多信息,请参阅《Service Catalog 开发人员指南》

预配置产品的管理员完全访问权限

下面的策略允许自由读写账户级目录中的预配置产品和记录。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "servicecatalog:*" ], "Resource":"*", "Condition": { "StringEquals": { "servicecatalog:accountLevel": "self" } } } ] }

该策略的功能等同于下面的策略:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "servicecatalog:*" ], "Resource":"*" } ] }

不在任何策略中 Amazon Service Catalog 为指定Condition区块被视为指定"servicecatalog:accountLevel"访问权限。注意,accountLevel 访问权限包含 roleLeveluserLevel 访问权限。

预配置产品的最终用户访问权限

下面的策略将用户的访问权限限制为只能读写自己创建的预配置产品和关联记录。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:DescribeRecord", "servicecatalog:ListLaunchPaths", "servicecatalog:ListRecordHistory", "servicecatalog:ProvisionProduct", "servicecatalog:ScanProvisionedProducts", "servicecatalog:SearchProducts", "servicecatalog:TerminateProvisionedProduct", "servicecatalog:UpdateProvisionedProduct" ], "Resource": "*", "Condition": { "StringEquals": { "servicecatalog:userLevel": "self" } } } ] }

预配置产品的管理员部分访问权限

如果将下面的两个策略应用到同一个用户,可产生称作“管理员部分访问权限”的访问类型 - 即提供完全的只读访问和有限的写入访问。这意味着用户能够查看账户级目录中的任何预配置产品或关联记录,但无法对不归该用户所有的任何预配置产品或记录执行任何操作。

第一个策略允许用户对自己创建的预配置产品执行写入操作,但不允许对其他用户创建的预配置产品执行写入操作。第二个策略允许用户对所有用户、角色或账户创建的预配置产品执行读取操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ListLaunchPaths", "servicecatalog:ProvisionProduct", "servicecatalog:SearchProducts", "servicecatalog:TerminateProvisionedProduct", "servicecatalog:UpdateProvisionedProduct" ], "Resource": "*", "Condition": { "StringEquals": { "servicecatalog:userLevel": "self" } } } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "servicecatalog:DescribeRecord", "servicecatalog:ListRecordHistory", "servicecatalog:ScanProvisionedProducts" ], "Resource": "*", "Condition": { "StringEquals": { "servicecatalog:accountLevel": "self" } } } ] }