本文档介绍了如何使用 Rego 政策语言编写自定义规则。您可以在 Workload Manager 中使用这些规则,根据为贵组织定义的最佳实践评估工作负载。
如需了解详情,请参阅 Workload Manager 中的自定义规则简介。
准备工作
- 熟悉 Rego 政策语言。
使用 Rego 编写自定义规则
Google 提供了一个 GitHub 示例代码库,其中包含一组预定义规则,可供您评估工作负载。这些示例涵盖了多种用例。从代码库中选择规则,或创建用于描述评估要求的规则 (.rego
) 文件。
自定义规则包含以下部分:
元数据。以下字段用于定义规则元数据:
DETAILS
:规则的简短说明。SEVERITY
:用户定义的值,用于定义违反规则的严重程度。例如,HIGH
、CRITICAL
、MEDIUM
或LOW
。ASSET_TYPE
:受支持的素材资源之一。请参阅支持的数据源。TAGS
:规则的一个或多个标记。这些标记有助于过滤规则。
软件包声明。例如
templates.google.compute.instance.label
。Import 语句。例如
data.validator.google.lib as lib
。规则定义。用于定义规则的一组说明。
示例规则
以下示例规则可在 GitHub 代码库 GoogleCloudPlatform/workload-manager 中找到。您可以将这些规则按原样上传到 Cloud Storage 存储分区,并使用这些规则运行评估。或者,根据贵组织的政策修改规则,然后将文件上传到 Cloud Storage 存储桶。
- 示例 1:确保您的虚拟机至少有一个标签。
- 示例 2:确保您的工作负载不会使用 Compute Engine 默认服务账号。
- 示例 3:确保工作负载中的虚拟机不使用外部 IP 地址。
如需查看可在 Workload Manager 中使用的示例规则的完整列表,请参阅 GoogleCloudPlatform/workload-manager GitHub 代码库。
示例 1
确保 Compute Engine 资源至少有一个标记。
示例 2
确保您的工作负载不使用 Compute Engine 默认服务账号
示例 3
确保工作负载中的虚拟机不使用外部 IP 地址。
将规则上传到 Cloud Storage 存储分区
创建 .rego
文件后,将其上传到 Cloud Storage 存储桶。Cloud Storage 存储桶的顶层必须包含 /lib
和 /rules
文件夹:
lib
parameters.rego
utils.rego
/rules
rule_name1.rego
rule_name2.rego