View a markdown version of this page

在您的账户中激活 Guard Hook - CloudFormation

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

在您的账户中激活 Guard Hook

以下主题向您展示如何在您的账户中激活 Guard Hook,这使其可以在激活的账户和地区使用。

激活 Guard Hook(控制台)

激活 Guard Hook 以在您的账户中使用
  1. 登录 AWS 管理控制台 并打开 CloudFormation 控制台,地址为https://console.aws.amazon.com/cloudformation。

  2. 在屏幕顶部的导航栏上,选择要在 AWS 区域 其中创建 Hook 的位置。

  3. 在左侧的导航窗格中,选择 Hooks 。

  4. 在 “挂钩” 页面上,选择 “创建挂钩”,然后选择 “With Guard” 。

  5. 如果您尚未创建任何警卫规则,请创建您的警卫规则,将其存储在 Amazon S3 中,然后返回此过程。请参阅中的示例规则编写 Guard 规则来评估 Guard Hooks 的资源以开始使用。

    如果您已经创建了 Guard 规则并将其存储在 S3 中,请继续执行下一步。

    注意

    存储在 S3 中的对象必须具有以下文件扩展名之一:.guard.zip、或.tar.gz。

  6. 对于 Guard Hook 源代码,将您的警卫规则存储在 S3 中,请执行以下操作:

    • 对于 S3 URI,指定规则文件的 S3 路径或使用浏览 S3 按钮打开一个对话框来浏览和选择 S3 对象。

    • (可选)对于对象版本,如果您的 S3 存储桶启用了版本控制,则可以选择 S3 对象的特定版本。

      每次调用 Guard Hook 时,Guard Hook 都会从 S3 下载您的规则。为防止意外更改或删除,我们建议在配置 Guard Hook 时使用某个版本。

  7. (可选)对于 Guard 输出报告的 S3 存储桶,指定一个 S3 存储桶来存储 Guard 输出报告。此报告包含您的 Guard 规则验证结果。

    要配置输出报告目标,请选择以下选项之一:

    • 选中 “使用存储在 my Guard 规则中的相同存储分区” 复选框以使用您的 Guard 规则所在的同一个存储分区。

    • 选择不同的 S3 存储桶名称来存储 Guard 输出报告。

  8. (可选)展开 Guard 规则输入参数,然后在 S3 中存储您的防护规则输入参数下提供以下信息:

    • 对于 S3 URI,指定参数文件的 S3 路径或使用浏览 S3 按钮打开一个对话框来浏览和选择 S3 对象。

    • (可选)对于对象版本,如果您的 S3 存储桶启用了版本控制,则可以选择 S3 对象的特定版本。

  9. 选择下一步。

  10. 对于挂钩名称,选择以下选项之一:

    • 提供一个简短的描述性名称,该名称将在后面添加Private::Guard::。例如,如果输入MyTestHook,则完整的 Hook 名称变为Private::Guard::MyTestHook。

    • 使用以下格式提供完整的 Hook 名称(也称为别名):Provider::ServiceName::HookName

  11. 对于挂钩目标,选择要评估的内容:

    • 堆栈 -在用户创建、更新或删除堆栈时评估堆栈模板。

    • 资源 -评估用户更新堆栈时单个资源的变化。

    • 变更集 -在用户创建变更集时评估计划的更新。

    • 云控制 API — 评估由云控制 API 发起的创建、更新或删除操作。

  12. 对于操作,选择哪些操作(创建、更新、删除)将调用您的 Hook。

  13. 对于 Hook 模式,选择 Hook 在规则评估失败时如何响应:

    • 警告 -向用户发出警告,但允许操作继续。这对于非关键验证或信息检查很有用。

    • 失败 -阻止操作继续进行。这有助于执行严格的合规或安全政策。

  14. 对于执行角色,选择 Hook 为从 S3 检索您的警卫规则而代入的 IAM 角色,并可以选择写回详细的 Guard 输出报告。您可以 CloudFormation 允许自动为您创建执行角色,也可以指定已创建的角色。

  15. 选择下一步。

  16. (可选)对于挂钩过滤器,请执行以下操作:

    1. 对于资源过滤器,指定哪些资源类型可以调用挂钩。这样可以确保仅针对相关资源调用 Hook。

    2. 对于筛选条件,选择应用堆栈名称和堆栈角色筛选器的逻辑:

      • 所有堆栈名称和堆栈角色 — 只有当所有指定的过滤器都匹配时,才会调用 Hook。

      • 任何堆栈名称和堆栈角色 — 如果至少有一个指定的过滤器匹配,则将调用 Hook。

      注意

      对于 Cloud Control API 操作,所有堆栈名称和堆栈角色过滤器都将被忽略。

    3. 对于堆栈名称,在 Hook 调用中包括或排除特定的堆栈。

      • 对于 “包含”,指定要包含的堆栈名称。当你有一小部分特定堆栈要作为目标时,请使用此选项。只有此列表中指定的堆栈才会调用 Hook。

      • 对于排除,指定要排除的堆栈名称。当你想在大多数堆栈上调用 Hook 但不包括一些特定的堆栈时,请使用此选项。除此处列出的堆栈外,所有堆栈都将调用 Hook。

    4. 对于堆栈角色,根据其关联的 IAM 角色在 Hook 调用中包含或排除特定堆栈。

      • 对于包含,指定一个或多个 IAM 角色 ARN 以定位与这些角色相关的堆栈。只有这些角色启动的堆栈操作才会调用 Hook。

      • 对于排除,为要排除的堆栈指定一个或多个 IAM 角色 ARN。除指定角色启动的堆栈外,将在所有堆栈上调用 Hook。

  17. 选择下一步。

  18. 在 “查看并激活” 页面上,查看您的选择。要进行更改,请在相关部分选择编辑。

  19. 当你准备好继续操作时,选择 Act ivate Hook 。

激活防护钩 (AWS CLI)

在继续操作之前,请确认您已创建警卫规则和将在此 Hook 中使用的执行角色。有关更多信息,请参阅编写 Guard 规则来评估 Guard Hooks 的资源和为 Guard Hook 创建执行角色。

激活 Guard Hook 以便在您的账户中使用 (AWS CLI)
  1. 要开始激活 Hook,请使用以下activate-type命令,将占位符替换为您的特定值。此命令授权 Hook 使用您的 AWS 账户指定执行角色。

    aws cloudformation activate-type --type HOOK \ --type-name AWS::Hooks::GuardHook \ --publisher-id aws-hooks \ --type-name-alias Private::Guard::MyTestHook \ --execution-role-arn arn:aws:iam::123456789012:role/my-execution-role \ --region us-west-2
  2. 要完成挂钩的激活,必须使用 JSON 配置文件对其进行配置。

    使用该cat命令创建具有以下结构的 JSON 文件。有关更多信息,请参阅 挂钩配置架构语法参考。

    $ cat > config.json { "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus": "ENABLED", "TargetOperations": [ "STACK", "RESOURCE", "CHANGE_SET" ], "FailureMode": "WARN", "Properties": { "ruleLocation": "s3://amzn-s3-demo-bucket/MyGuardRules.guard", "logBucket": "amzn-s3-demo-logging-bucket", "options": { "inputParams": "s3://amzn-s3-demo-bucket/MyInputParams.json" } }, "TargetFilters": { "Actions": [ "CREATE", "UPDATE", "DELETE" ] } } } }
    • HookInvocationStatus:设置为ENABLED以启用挂钩。

    • TargetOperations:指定 Hook 将评估的操作。

    • FailureMode:设置为 FAIL 或 WARN。

    • ruleLocation:替换为存储规则的 S3 URI。存储在 S3 中的对象必须具有以下文件扩展名之一:.guard.zip、和.tar.gz。

    • logBucket:(可选)为 Guard JSON 报告指定 S3 存储桶的名称。

    • options.inputParams:(可选)指定 JSON 或 YAML 文件的 S3 URI,该文件包含您的卫士规则的输入参数。您可以指定单个 S3 URI 或最多 10 个 S3 URI 的数组。

    • TargetFilters:指定将调用 Hook 的操作类型。

  3. 使用以下set-type-configuration命令以及您创建的 JSON 文件来应用配置。用您的特定值替换占位符。

    aws cloudformation set-type-configuration \ --configuration file://config.json \ --type-arn "arn:aws:cloudformation:us-west-2:123456789012:type/hook/MyTestHook" \ --region us-west-2

我们提供了模板示例,您可以使用这些示例来了解如何在 CloudFormation 堆栈模板中声明 Guard Hook。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的 AWS::CloudFormation::GuardHook。