IBM Cloud Docs
管理路径

管理路径

您可以使用 IBM Cloud® Activity Tracker Event Routing CLI,Activity Tracker Event Routing REST API 和 Terraform 脚本来管理帐户中的路径。 路由定义了指示在区域中路由哪些审计事件以及将这些事件路由到何处的规则。

了解路径在帐户中的工作方式

请注意有关路径的以下信息:

  • 路由在帐户下是全局的,并在部署了 IBM Cloud® Activity Tracker Event Routing 的所有区域中进行评估。

  • 可从任何区域 Activity Tracker Event Routing API 端点访问路径。

  • 一个账户最多可定义 10 个路由。

  • 缺省情况下,帐户已配置 0 个路径。

  • 每条路由最多可配置 30 条规则。

  • 最多可以为每个规则配置 8 个位置。

  • 每条规则最多可配置 3 个目标 (target_ids)。

  • 独立处理路由。 如果您有多个路径具有与同一事件匹配的规则,那么该事件将发送到多个目标。

  • 规则按顺序处理。 将使用事件匹配的第一个匹配规则 (例如,location) 来处理事件。 处理完事件后,该事件将不会由该路由的定义中的后续规则进行处理。 如果要为所有未由其他规则处理的事件指定缺省规则,请将规则 ("locations" : ["*"]) 指定为 routerules 定义中的最终规则。

  • 如果事件与任何规则都不匹配,并且未配置缺省目标,那么将删除该事件,并且不会将其路由到任何目标。

  • rules 配置的任何更新都必须包含所有 location 规则。 更新将废弃现有规则集并将其替换为指定的配置。

配置路由后,可能需要最多 1 小时才能启用配置。

目标定义了收集审计事件的位置。 目标可以是 IBM Cloud Object Storage(COS)目标IBM Cloud Logs 目标IBM® Event Streams for IBM Cloud® 目标。 路由定义将哪些审计事件路由到目标。

以下样本路由定义将:

  • 将所有 us-southus-eastglobal 事件发送到标识 281f78a2-3333-4444-5555-e896f03cb403 所标识的目标
  • 删除所有其他区域的事件,除非在设置中定义了缺省目标
{
    "id": "959ceeaf-9999-9999-9999-b7ad27a3e109",
    "name": "my-route",
    "crn": "crn:v1:bluemix:public:atracker:us-south:a/xxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:route:959ceeaf-9999-9999-9999-b7ad27a3e109",
    "version": 0,
    "rules": [
        {
            "locations": ["us-south", "us-east", "global"],
            "target_ids": [
                "281f78a2-3333-4444-5555-e896f03cb403"
            ]
        }
    ],
    "created": "0001-01-01T00:00:00Z"
}

审计事件有两种类型:

要在路由中包含全局事件,请在 locations 列表中指定 global

IAM 访问权

您必须授予用户 IAM 许可权以管理路由。 有关更多信息,请参阅 分配对资源的访问权

如果拥有创建策略和授权的 IAM 权限,则只能授予作为目标服务用户的访问权限级别。 例如,如果您拥有目标服务的查看器访问权限,则只能为授权分配查看器角色。 如果尝试分配更高级别的权限(如管理员),可能会出现权限已授予的情况,但只会分配目标服务的最高级别权限(即查看器)。

定义策略时,必须将策略的作用域设置为帐户。 路由是未绑定到特定区域的全局资源。

Required IAM roles
IAM 操作 IAM 策略作用域 IAM 角色 描述
atracker.route.read 帐户 Administrator
Editor
Viewer
Operator
读取 (查看) 有关路由的信息
atracker.route.create 帐户 Administrator
Editor
创建路径
atracker.route.update 帐户 Administrator
Editor
更新路径
atracker.route.delete 帐户 Administrator
Editor
删除路径
atracker.route.list 帐户 Administrator
Editor
Viewer
Operator
列出所有路径

CLI 先决条件

在使用 CLI 管理路由之前,请在本地系统中安装最新的 Activity Tracker Event Routing CLI V2 插件。 请参阅安装 Activity Tracker Event Routing CLI

接下来,登录到 IBM Cloud。 运行以下命令: ibmcloud login

使用 CLI 创建路径

使用此命令为 Activity Tracker Event Routing 目标创建新路由。

ibmcloud atracker route create --name ROUTE_NAME  ( --target-ids TARGETS  [--locations REGIONS] | --rules RULES | --file RULES_DEFINITION_JSON_FILE ) [--output FORMAT]

命令选项

--name ROUTE_NAME

要对路由指定的名称。

请勿在任何资源名称中包含任何个人标识信息 (PII)。

--file RULES_DEFINITION_JSON_FILE

包含路由规则定义的 JSON 文件。 该文件需要按如下所示进行格式化:

[
  {
    "locations": ["LOCATION1","LOCATION2"],
    "target_ids": ["TARGET_ID1","TARGET_ID2"]
  }
]
--rules RULES

以单引号括起的 JSON 格式的规则定义。 例如:

--rules '[{"locations":["global"],"target_ids":["11111111-1111-1111-1111-111111111111"]},{"locations":["us-south","us-east"],"target_ids":["22222222-2222-2222-2222-222222222222","33333333-3333-3333-3333-333333333333"]}]'
--locations LOCATIONS

与路线关联的位置的列表。 指定 global 以包含全局事件。 要包含所有位置,请指定 *。 如果您有多个规则以及具有 * 位置的规则,那么其他规则会将事件路由到指定的目标,其中任何事件都与任何其他规则不匹配,从而将其余事件路由到具有 * 位置的规则指定的目标。

--target-ids TARGET_ID

以逗号分隔的目标 ID 列表。

--output FORMAT

如果指定了 JSON,那么将以 JSON 格式返回输出。 如果未指定 JSON,输出将以表格格式返回。

help | --help | -h

列出可用于该命令的选项。

示例

以下是使用 ibmcloud atracker route create --name dev-eu-de-route --target_ids 33333333-3333-3333-3333-333333333333 --locations us-south 命令创建具有 1 路由规则的路由的示例。

OK
Route
Name:                    dev-eu-de-route
ID:                      44444444-4444-4444-4444-444444444444
CRN:                     crn:v1:staging:public:atracker:eu-de:a/11111111111111111111111111111111::route:44444444-4444-4444-4444-444444444444
Version:                 0
Rules:                   [locations: [us-south], target_ids: [33333333-3333-3333-3333-333333333333]]
Created:                 2022-02-24T21:10:09.996Z
Updated:                 2022-02-24T21:10:09.996Z

使用 CLI 更新路由

使用此命令可更新 Activity Tracker Event Routing 目标的路径。 与最初创建路由时不同的任何指定值都将更新为命令中指定的值。

ibmcloud atracker route update --route ROUTE [--name ROUTE_NAME] [--force] ( [--target-ids TARGETS]  [--locations REGIONS] | [--rules RULES] | [--file RULES_DEFINITION_JSON_FILE] ) [--output FORMAT] [--output FORMAT]

命令选项

--route ROUTE

路由的现有名称或 ID。

--name ROUTE_NAME

要提供给路由的更新名称 (可选)。

请勿在任何资源名称中包含任何个人标识信息 (PII)。

--file RULES_DEFINITION_JSON_FILE

包含路由规则定义的 JSON 文件。 该文件需要按如下所示进行格式化:

[
  {
    "location": ["LOCATIONS"],
    "target_ids": ["TARGET_ID"]
  }
]
--rules RULES

以单引号括起的 JSON 格式的规则定义。 例如:

--rules '[{"locations":["global"],"target_ids":["11111111-1111-1111-1111-111111111111"]},{"locations":["us-south","us-east"],"target_ids":["22222222-2222-2222-2222-222222222222","33333333-3333-3333-3333-333333333333"]}]'
--locations LOCATIONS

与路线关联的位置的列表。 指定 global 以包含全局事件。 要包含所有位置,请指定 *。 如果您有多个规则以及具有 * 位置的规则,那么其他规则会将事件路由到指定的目标,其中任何事件都与任何其他规则不匹配,从而将其余事件路由到具有 * 位置的规则指定的目标。

--target-ids TARGET_ID

以逗号分隔的目标 ID 列表。

--output FORMAT

如果指定了 JSON,那么将以 JSON 格式返回输出。 如果未指定 JSON,输出将以表格格式返回。

--force

将删除路由而不向用户提供任何其他提示。

help | --help | -h

列出可用于该命令的选项。

示例

以下是使用 ibmcloud atracker route update --route dev-eu-de-route --target_ids 55555555-5555-5555-5555-555555555555 --locations * 命令的示例。

OK
Route
Name:                    dev-eu-de-route
ID:                      44444444-4444-4444-4444-444444444444
CRN:                     crn:v1:staging:public:atracker:eu-de:a/11111111111111111111111111111111::route:44444444-4444-4444-4444-444444444444
Version:                 1
Rules:                   [locations: [*], target_ids: [55555555-5555-5555-5555-555555555555]]
Created:                 2022-02-24T21:10:09.996Z
Updated:                 2022-02-24T21:13:37.218Z

使用 CLI 删除路由

使用此命令删除 Activity Tracker Event Routing 路由。

ibmcloud atracker route rm --route ROUTE [--force]

命令选项

--route ROUTE
要删除的路由的名称或标识。
--force
将删除路由而不向用户提供任何其他提示。
help | --help | -h
列出可用于该命令的选项。

示例

以下是使用 ibmcloud atracker route rm --route 44444444-4444-4444-4444-444444444444 命令的示例。

Are you sure you want to remove the route with the Route ID 44444444-4444-4444-4444-444444444444? [y/N]> y
OK
Route with route ID 44444444-4444-4444-4444-444444444444 was successfully removed.

以下是使用 ibmcloud atracker route rm --route 33333333-3333-3333-3333-333333333333 命令的示例。

此示例显示找不到指定路由的失败命令。

FAILED
No route found with route name - 33333333-3333-3333-3333-333333333333

使用 CLI 查看路由

使用此命令可获取有关 Activity Tracker Event Routing 路径的信息。

ibmcloud atracker route get --route ROUTE [--output FORMAT]

命令选项

--route <ROUTE_ID>
路由的名称或标识。
--output FORMAT
如果指定了 JSON,那么将以 JSON 格式返回输出。 如果未指定 JSON,输出将以表格格式返回。
help | --help | -h
列出可用于该命令的选项。

示例

以下是使用 ibmcloud atracker route get --route 44444444-4444-4444-4444-444444444444 命令的示例。

OK
Route
Name:                    dev-eu-de-route-0
ID:                      44444444-4444-4444-4444-444444444444
CRN:                     crn:v1:staging:public:atracker:eu-de:a/11111111111111111111111111111111::route:44444444-4444-4444-4444-444444444444
Version:                 2
Rules:                   [locations: [us-south], target_ids: [55555555-5555-5555-5555-555555555555]]
Created:                 2022-02-24T21:10:09.996Z
Updated:                 2022-02-24T21:15:07.281Z

使用 CLI 列出所有路由

使用此命令可列出 Activity Tracker Event Routing 的所有已配置路径。

ibmcloud atracker route ls [--output FORMAT]

命令选项

--output FORMAT
如果指定了 JSON,那么将以 JSON 格式返回输出。 如果未指定 JSON,输出将以表格格式返回。
help | --help | -h
列出可用于该命令的选项。

示例

以下是使用 ibmcloud atracker route ls 命令返回所有区域的路径的示例。

Name                      ID                                     Rules                                              Route Version   API version   CreatedAt                  UpdatedAt
my-global-route           aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa   [[11111111-1111-1111-1111-111111111111],[global]]  5               2             2022-05-04T20:18:00.595Z   2022-05-05T19:04:58.374Z
send-all-to-us-east       bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb   [[22222222-2222-2222-2222-222222222222],[*]]       0               2             2022-05-06T12:02:47.832Z   2022-05-06T12:02:47.832Z

API 路径和操作

下表列出了管理路由时可以执行的操作:

使用Activity Tracker Event Routing进行目标操作REST API
操作 REST API 方法 API_URL
创建路径 POST <ENDPOINT>/api/v2/routes
更新路径 PUT <ENDPOINT>/api/v2/routes/<ROUTE_ID>
删除路径 DELETE <ENDPOINT>/api/v2/routes/<ROUTE_ID>
获取路线信息 GET <ENDPOINT>/api/v2/routes/<ROUTE_ID>
列出所有路径 GET <ENDPOINT>/api/v2/routes

您可以使用专用端点和公共端点来管理路由。 有关可用的 ENDPOINTS 列表的更多信息,请参阅 端点

  • 您可以使用以下格式的 API 端点来管理来自专用网络的路由: https://private.REGION.atracker.cloud.ibm.com

  • 您可以使用以下格式的 API 端点来管理来自公用网络的路由: https://REGION.atracker.cloud.ibm.com

  • 由于路径是全局配置,因此您可以使用任何区域端点来管理帐户的路径。

  • 您可以通过更新帐户设置来禁用公共端点。 有关更多信息,请参阅 配置目标和区域设置

有关 REST API 的更多信息,请参阅 路由

API 先决条件

要进行 API 调用以管理路由,请完成以下步骤:

  1. 获取 IAM 访问令牌。 有关更多信息,请参阅 检索 IAM 访问令牌
  2. 在计划配置或管理路由的区域中标识 API 端点。 有关更多信息,请参阅 端点

使用 API 创建路由

在创建路径之前,必须 创建目标

您可以使用以下 cURL 命令创建路由:

curl -X POST  <ENDPOINT>/api/v2/routes   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"  -d '{
    "name": "ROUTE_NAME",
    "rules": [
      {
        "locations": ["LOCATIONS"],
        "target_ids": ["TARGET_ID"]
      }
    ]
  }'

位置

  • <ENDPOINT> 是您计划在其中配置或管理路由的区域中的 API 端点。 有关更多信息,请参阅 端点

  • ROUTE_NAME 是路由的名称。 名称的最大长度为 180 个字符,不能包含下列任何特殊字符:-._:

    请勿在任何资源名称中包含任何个人标识信息 (PII)。

  • LOCATIONS 是与路由关联的位置的列表。 指定 global 以包含全局事件。 要包含所有位置,请指定 *。 如果您有多个规则以及具有 * 位置的规则,那么其他规则会将事件路由到指定的目标,其中任何事件都与任何其他规则不匹配,从而将其余事件路由到具有 * 位置的规则指定的目标。

  • TARGET_ID 是定义在其中路由和收集审计事件的目标的 GUID。 这可以包括其他区域中目标的 GUID。 如果 TARGET_ID 为空,那么将废弃与规则匹配的任何事件。

例如,您可以使用以下 cURL 请求来创建用于定义如何在帐户中收集和路由基于全局和美南位置的事件的路径:

curl -X POST   https://private.us-south.atracker.cloud.ibm.com/api/v2/routes   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"  -d '{
    "name": "my-route",
    "rules": [
      {
        "locations": ["us-south", "global"],
        "target_ids": ["22222222-2222-2222-2222-222222222222"]
      }
    ]
  }'

在响应中,您将获取有关路径的信息,例如 id(指示路径的 GUID) 和 crn(指示路径的 CRN)。

使用 API 更新路由

更新路由时,必须在请求的数据部分中包含路由信息。

  • 必须传递所有字段。
  • 更新需要更改的字段。

您可以使用以下 cURL 命令来更新路由:

curl -X PUT  <ENDPOINT>/api/v2/routes/<ROUTE_ID>   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"  -d '{
    "name": "ROUTE_NAME",
    "rules": [
      {
        "locations": ["LOCATIONS"],
        "target_ids": ["TARGET_ID"]
      }
    ]
  }'

位置

  • <ENDPOINT> 是您计划在其中配置或管理路由的区域中的 API 端点。 有关更多信息,请参阅 端点

  • <ROUTE_ID> 是要更新的路由的标识

  • ROUTE_NAME 是路由的名称。 名称的最大长度为 180 个字符,不能包含下列任何特殊字符:-._:

    请勿在任何资源名称中包含任何个人标识信息 (PII)。

  • LOCATIONS 是与路由关联的位置的列表。 指定 global 以包含全局事件。 要包含所有位置,请指定 *。 如果您有多个规则以及具有 * 位置的规则,那么其他规则会将事件路由到指定的目标,其中任何事件都与任何其他规则不匹配,从而将其余事件路由到具有 * 位置的规则指定的目标。

  • TARGET_ID 是定义在其中路由和收集审计事件的目标的 GUID。 这可以包括其他区域中目标的 GUID。 如果 TARGET_ID 为空,那么将废弃与规则匹配的任何事件。

例如,您可以使用以下 cURL 请求来更新用于定义如何在帐户中收集和路由基于全局和美国南部以及美国东部位置的事件的路由:

curl -X PUT https://private.us-south.atracker.cloud.ibm.com/api/v2/routes/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"  -d '{
    "name": "my-route",
    "rules": [
      {
        "locations": ["us-south", "global", "us-east],
        "target_ids": ["22222222-2222-2222-2222-222222222222"]
      }
    ]
  }'

使用 API 删除路由

可以使用以下 cURL 命令来删除路由:

curl -X DELETE   <ENDPOINT>/api/v2/routes/<ROUTE_ID>   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

位置

  • <ENDPOINT> 是您计划在其中配置或管理路由的区域中的 API 端点。 有关更多信息,请参阅 端点
  • <ROUTE_ID> 是要删除的路由的 ID

例如,可以运行以下 cURL 请求以删除标识为 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa 的路由:

curl -X DELETE  https://private.us-south.atracker.cloud.ibm.com/api/v2/routes/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

使用 API 查看路由

您可以使用以下 cURL 命令来查看 1 路由:

curl -X GET   <ENDPOINT>/api/v2/routes/<ROUTE_ID>   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

位置

  • <ENDPOINT> 是您计划在其中配置或管理路由的区域中的 API 端点。 有关更多信息,请参阅 端点
  • <ROUTE_ID> 是要访存的路由的标识

例如,您可以运行以下 cURL 请求以获取有关标识为 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa 的路由的信息:

curl -X GET   https://private.us-south.atracker.cloud.ibm.com/api/v2/routes/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa    -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

使用 API 列出区域中的所有路径

您可以使用以下 cURL 命令来查看所有路由:

curl -X GET   <ENDPOINT>/api/v2/routes   -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

位置

  • <ENDPOINT> 是您计划在其中配置或管理路由的区域中的 API 端点。 有关更多信息,请参阅 端点

例如,可以运行以下 cURL 请求以获取有关在美国南部定义的路由的信息:

curl -X GET   https://private.us-south.atracker.cloud.ibm.com/api/v2/routes    -H "Authorization:  $ACCESS_TOKEN"   -H "content-type: application/json"

HTTP 响应代码

在使用 Activity Tracker Event Routing REST API 时,您可以获取标准的 HTTP 响应代码,以指示方法是否成功完成。

  • 200 响应始终指示成功。
  • 4xx 响应指示失败。
  • 5xx 响应通常指示内部系统错误。

有关 HTTP 的一些响应代码,请参见下表:

HTTP 响应代码列表
状态码 状态 描述
200 OK 请求已成功。
201 OK 请求已成功。 将创建资源。
400 错误请求 请求失败。 您可能缺少必需的参数。
401 未授权 API 请求中使用的 IAM 令牌无效或已到期。
403 禁止 由于许可权不足,因此禁止执行此操作。
404 找不到 请求的资源不存在或已被删除。
429 请求次数太多 过多请求过快地命中 API。
500 内部服务器错误 在 Activity Tracker Event Routing 处理中发生错误。

使用用户界面创建路由

  1. 登录到 IBM Cloud 帐户
  2. 单击 菜单 图标 "菜单" 图标 > 可观察性
  3. 选择 Activity Tracker
  4. 选择 路由
  5. 选择 路由
  6. 单击 创建 以打开创建页面。
  7. 输入有意义的路由名称。
  8. 路由规则中,修改 规则 1:
    • 发送审计事件: 选择将与此规则匹配的审计事件位置。
    • 目标: 选择将附加到此规则的目标。 单击 添加目标 以向规则添加更多目标。
  9. 单击 添加规则 以向路径添加其他规则。
    • 路由规则的顺序会影响路由行为。 按顺序处理规则,一旦匹配了规则,就不会处理后续规则。
  10. 每个规则都有一个向上和向下箭头,允许您更改规则顺序。
  11. 每个规则都有一个 除去 按钮,允许您从路径中删除规则。
  12. 查看路径定义,确保规则的顺序符合预期。
  13. 单击创建

使用 UI 更新路由

  1. 登录到 IBM Cloud 帐户
  2. 单击 菜单 图标 "菜单" 图标 > 可观察性
  3. 选择 Activity Tracker
  4. 选择 路由
  5. 选择 路由
  6. 确定要更新的路径,然后单击 "操作" 图标
  7. 单击 重命名 以重命名路由。
  8. 单击 编辑 以更新路由规则。
  9. 如果需要,请编辑现有规则:
    • 发送审计事件: 选择将与此规则匹配的审计事件位置。
    • 目标: 选择将附加到此规则的目标。 单击 添加目标 以向规则添加更多目标。
  10. 单击 添加规则 以向路径添加其他规则。
  • 路由规则的顺序会影响路由行为。 按顺序处理规则,一旦匹配了规则,就不会处理后续规则。
  1. 每个规则都有一个向上和向下箭头,允许您更改规则顺序。
  2. 每个规则都有一个 除去 按钮,允许您从路径中删除规则。
  3. 单击 更新 以更改路径。

使用 UI 查看路由

  1. 登录到 IBM Cloud 帐户
  2. 单击 菜单 图标 "菜单" 图标 > 可观察性
  3. 选择 Activity Tracker
  4. 选择 路由
  5. 选择 路由
  6. 路由表按创建日期排序。 路由的顺序不会影响路由行为。
  7. 每个路由块都显示路由名称和规则。
  8. “路由”页面还显示 路由指导 以及有关配置路由的其他信息。

使用 UI 删除路由

  1. 登录到 IBM Cloud 帐户
  2. 单击 菜单 图标 "菜单" 图标 > 可观察性
  3. 选择 Activity Tracker
  4. 选择 路由
  5. 选择 路由
  6. 确定要更新的路径,然后单击 "操作" 图标
  7. 单击 删除 以删除整个路由。 在删除路由之前,必须输入路由名称。