

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

# 在你的账户中激活 Guard Hook
<a name="guard-hooks-activate-hooks"></a>

以下主题向您展示了如何在您的账户中激活 Guard Hook，这样它就可以在激活该挂钩的账户和区域中使用。

**Topics**
+ [激活 Guard Hook（主机版）](#guard-hooks-activate-hook-console)
+ [激活警戒钩 (AWS CLI)](#guard-hooks-activate-hooks-cli)
+ [相关资源](#related-resources-guard-hooks)

## 激活 Guard Hook（主机版）
<a name="guard-hooks-activate-hook-console"></a>

**激活 Guard Hook 以在你的账户中使用**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 在屏幕顶部的导航栏上，选择要创建 Hook in AWS 区域 的位置。

1. 在左侧的导航窗格中，选择 **Hook**。

1. 在 “**挂钩**” 页面上，选择 “**创建挂钩**”，然后选择 “**带防护**”。

1. 如果您*尚未*创建任何防护规则，请创建您的防护规则，将其存储在 Amazon S3 中，然后返回此过程。请参考中的示例规则[编写 Guard 规则来评估防护挂钩的资源](guard-hooks-write-rules.md)开始使用。

   如果您已经创建了防护规则并将其存储在 S3 中，请继续执行下一步。
**注意**  
存储在 S3 中的对象必须具有以下文件扩展名之一：`.guard``.zip`、或`.tar.gz`。

1. 对于 **Guard Hook 来源**，**请将您的防护规则存储在 S3 中**，请执行以下操作：
   + 对于 **S3 URI**，请指定规则文件的 S3 路径，或者使用**浏览 S3** 按钮打开对话框来浏览和选择 S3 对象。
   + （可选）对于**对象版本**，如果您的 S3 存储桶启用了版本控制，则可以选择 S3 对象的特定版本。

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

1. （可选）对于 **S3 存储桶 for Guard 输出报告**，请指定一个 S3 存储桶来存储 Guard 输出报告。此报告包含您的 Guard 规则验证结果。

   要配置输出报告目标，请选择以下选项之一：
   + 选中 “**使用我的 Guard 规则存储在同一个存储桶**” 复选框以使用您的 Guard 规则所在的同一个存储桶。
   + 选择不同的 S3 存储桶名称来存储 Guard 输出报告。

1. （可选）展开**防护规则输入参数**，然后在 “将**您的防护规则输入参数存储在 S3 中**” 下提供以下信息：
   + 对于 **S3 URI**，请指定参数文件的 S3 路径，或者使用**浏览 S3** 按钮打开对话框来浏览和选择 S3 对象。
   + （可选）对于**对象版本**，如果您的 S3 存储桶启用了版本控制，则可以选择 S3 对象的特定版本。

1. 选择**下一步**。

1. 在 **Hook 名称**中，选择以下选项之一：
   + 提供一个简短的描述性名称，该名称将在之后`Private::Guard::`添加。例如，如果输入*`MyTestHook`*，则完整的 Hook 名称变为`Private::Guard::MyTestHook`。
   + 使用以下格式提供完整的 Hook 名称（也称为别名）：`Provider::ServiceName::HookName`

1. 对于 **Hook 目标**，请选择要评估的内容：
   + **堆栈**-在用户创建、更新或删除堆栈时评估堆栈模板。
   + **资源**-在用户更新堆栈时评估各个资源的变化。
   + **变更集**-当用户创建变更集时，评估计划的更新。
   + **云控制 API** — 评估由[云控制 AP](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) I 启动的创建、更新或删除操作。

1. 在 “**操作**” 中，选择哪些操作（创建、更新、删除）将调用您的 Hook。

1. 对于 **Hook 模式**，选择规则评估失败时挂钩的响应方式：
   + **警告**-向用户发出警告，但允许继续执行操作。这对于非关键验证或信息检查很有用。
   + **失败**-阻止操作继续进行。这有助于执行严格的合规或安全政策。

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

1. 选择**下一步**。

1. （可选）对于 **Hook 过滤器**，请执行以下操作：

   1. 在**资源筛选器**中，指定哪些资源类型可以调用 Hook。这样可以确保仅针对相关资源调用 Hook。

   1. 在**筛选条件**中，选择应用堆栈名称和堆栈角色筛选器的逻辑：
      + **所有堆栈名称和堆栈角色** — 只有当所有指定的过滤器都匹配时，才会调用 Hook。
      + **任何堆栈名称和堆栈角色** — 如果指定的过滤器中至少有一个匹配，就会调用 Hook。
**注意**  
对于 Cloud Control API 操作，所有**堆栈名称**和**堆栈角色**筛选器都将被忽略。

   1. 对于**堆栈名称**，在 Hook 调用中包含或排除特定堆栈。
      + 对于 “**包含**”，指定要包含的堆栈名称。当你想要瞄准一小部分特定的堆栈时，请使用此选项。只有此列表中指定的堆栈才会调用 Hook。
      + 对于**排除**，请指定要排除的堆栈名称。当你想在大多数堆栈上调用 Hook 但排除一些特定的堆栈时，请使用此选项。除此处列出的堆栈外，所有堆栈都将调用 Hook。

   1. 对于**堆栈角色**，请根据其关联的 IAM 角色在 Hook 调用中包含或排除特定堆栈。
      + 对于 **Inc** lude，指定一个或多个 IAM 角色 ARNs 来定位与这些角色关联的堆栈。只有由这些角色启动的堆栈操作才会调用 Hook。
      + 对于**排除， ARNs 为要排除**的堆栈指定一个或多个 IAM 角色。Hook 将在除指定角色启动的堆栈之外的所有堆栈上调用。

1. 选择**下一步**。

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

1. 准备好继续操作时，选择 “**激活挂钩**”。

## 激活警戒钩 (AWS CLI)
<a name="guard-hooks-activate-hooks-cli"></a>

在继续操作之前，请确认您已创建守卫规则和将在此 Hook 中使用的执行角色。有关更多信息，请参阅[编写 Guard 规则来评估防护挂钩的资源](guard-hooks-write-rules.md)和[为 Guard Hook 创建执行角色](guard-hooks-prepare-to-create-hook.md#guard-hooks-create-execution-role)。

**激活 Guard Hook 以在你的账户中使用 (AWS CLI)**

1. 要开始激活 Hook，请使用以下[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html)命令，用您的特定值替换占位符。此命令授权 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
   ```

1. 要完成激活 Hook，必须使用 JSON 配置文件对其进行配置。

   使用**cat**命令创建具有以下结构的 JSON 文件。有关更多信息，请参阅 [挂钩配置架构语法参考](hook-configuration-schema.md)。

   ```
   $ 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"
         },
         "TargetFilters": {
           "Actions": [
             "CREATE",
             "UPDATE",
             "DELETE"
           ]
         }
       }
     }
   }
   ```
   + `HookInvocationStatus`：设置`ENABLED`为可启用挂钩。
   + `TargetOperations`：指定 Hook 将要评估的操作。
   + `FailureMode`：设置为 `FAIL` 或 `WARN`。
   + `ruleLocation`：替换为存储规则的 S3 URI。存储在 S3 中的对象必须具有以下文件扩展名之一：`.guard``.zip`、和。`.tar.gz`
   + `logBucket`:（可选）为 Guard JSON 报告指定 S3 存储桶的名称。
   + `TargetFilters`：指定将调用 Hook 的操作类型。

1. 使用以下[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html)命令以及您创建的 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
   ```

## 相关资源
<a name="related-resources-guard-hooks"></a>

我们提供了模板示例，您可以使用这些示例来了解如何在 CloudFormation 堆栈模板中声明 Guard Hook。有关更多信息，请参阅《AWS CloudFormation 用户指南》**中的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-guardhook.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-guardhook.html)。