本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 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 策略。
重要
ActivateType
和 SetTypeConfiguration
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 调用者在调用时指定TargetType
和TargetId
参数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
" } } } ] }