为 CloudFormation Hook 授予 IAM 权限 - AWS CloudFormation

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

为 CloudFormation Hook 授予 IAM 权限

默认情况下,你的全新用户 AWS 账户 无权使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 AWS API 管理 Hook。要向用户授予权限,IAM 管理员可以创建 IAM 策略。管理员随后可以向角色添加 IAM 策略,用户可以代入角色。

使用本主题中的策略示例创建您自己的自定义 IAM 策略,以授予用户使用 Hooks 的权限。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅 IAM 用户指南中的使用客户托管策略定义自定义 IAM 权限

本主题涵盖执行以下操作所需的权限:

  • 管理 Hook — 在您的账户中创建、修改和禁用 Hook。

  • 公开发布 Hook — 注册、测试和发布您的自定义 Hook,使其在 CloudFormation 注册表中公开发布。

  • 查看调用结果-在您的账户中访问和查询 Hook 调用的结果。

创建 IAM 策略时,您可以在《服务授权参考》的 “操作、资源和条件密钥” AWS CloudFormation部分中找到与cloudformation服务前缀关联的所有操作、资源和条件键的文档。

允许用户管理 Hook

如果您需要允许用户管理扩展(包括 Hook),但又无法在 CloudFormation 注册表中将其公开,则可以使用以下示例 IAM 策略。

重要

ActivateTypeSetTypeConfiguration API 调用共同在您的账户中创建 Hook。当你授予用户调用 SetTypeConfiguration API 的权限时,你会自动授予他们修改和禁用现有 Hook 的能力。您不能使用资源级权限来限制对此 API 调用的访问权限。因此,请确保仅向账户中的授权用户授予此权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:ActivateType", "cloudformation:DescribeType", "cloudformation:ListTypes", "cloudformation:SetTypeConfiguration" ], "Resource": "*" } ] }

管理 Hook 的用户可能需要一些相关的权限。例如,要在控制 CloudFormation 台中查看控制目录中的控件,用户必须拥有 IAM 策略中的controlcatalog:ListControls权限。要在注册表中将自定义 Hook CloudFormation 注册为私有扩展,用户必须拥有 IAM 策略中的cloudformation:RegisterType权限。

允许用户公开发布自定义 Hook

以下示例 IAM 策略特别侧重于发布功能。如果您需要允许用户在 CloudFormation 注册表中公开扩展(包括 Hook),请使用此政策。

重要

公开发布 Hook 可以让其他人使用 AWS 账户。确保只有经过授权的用户才拥有这些权限,并且已发布的扩展程序符合贵组织的质量和安全标准。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:DescribePublisher", "cloudformation:DescribeTypeRegistration", "cloudformation:ListTypes", "cloudformation:ListTypeVersions", "cloudformation:PublishType", "cloudformation:RegisterPublisher", "cloudformation:RegisterType", "cloudformation:TestType" ], "Resource": "*" } ] }

允许用户请求调用结果

查看 Hook 调用结果所需的 IAM 权限会根据发出的 API 请求而变化。

  • 要授予请求所有 Hook 结果、特定 Hook 的结果或特定挂钩和调用状态的结果的权限,您必须授予对该cloudformation:ListAllHookResults操作的访问权限。

  • 要通过指定 Hook 目标来授予请求结果的权限,必须授予cloudformation:ListHookResults操作访问权限。此权限允许 API 调用者在调用时指定TargetTypeTargetId参数ListHookResults

以下显示了用于请求 Hook 调用结果的基本权限策略的示例。使用此策略的 IAM 身份(用户或角色)有权使用所有可用参数组合请求所有调用结果。

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

控制可以指定哪些更改集

以下示例 IAM 策略通过指定挂钩的目标向cloudformation:ListHookResults操作授予请求结果的权限。但是,如果目标是名为的更改集,它也会拒绝该操作example-changeset

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:ListHookResults" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "cloudformation:ListHookResults" ], "Resource": "*", "Condition": { "StringEquals": { "cloudformation:ChangeSetName": "example-changeset" } } } ] }

控制可以指定哪些挂钩

以下示例 IAM 策略仅在请求中提供挂钩的 ARN 时才向cloudformation:ListAllHookResults操作授予请求调用结果的权限。它拒绝对指定的 Hook ARN 执行操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:ListAllHookResults" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "cloudformation:ListAllHookResults" ], "Resource": "*", "Condition": { "Null": { "cloudformation:TypeArn": "true" } } }, { "Effect": "Deny", "Action": [ "cloudformation:ListAllHookResults" ], "Resource": "*", "Condition": { "ArnEquals": { "cloudformation:TypeArn": "arn:aws:cloudformation:us-east-1:123456789012:type/hook/MyCompany-MyHook" } } } ] }