IBM Cloud Docs
使用基于上下文的限制保护 DNS Services 资源

使用基于上下文的限制保护 DNS Services 资源

您可以使用用户界面、CLI 或 API,通过基于上下文的限制来保护DNS Services资源。 基于上下文的限制使账户所有者和管理员能够根据访问请求的上下文定义和执行对IBM Cloud®资源的访问限制。 对IBM Cloud DNS Services资源的访问可通过基于上下文的限制以及身份和访问管理 (IAM) 策略进行控制。

这些限制适用于基于身份的传统 IAM 策略,以提供额外的保护层。 与 IAM 策略不同,基于上下文的限制不会分配访问权。 基于上下文的限制检查访问请求是否来自您配置的允许上下文。 由于 IAM 访问权和基于上下文的限制都强制实施访问权,因此基于上下文的限制即使在凭证受损或管理不当的情况下也会提供保护。 有关更多信息,请参阅 什么是基于上下文的限制

用户必须在 DNS Services 服务上具有 Administrator 角色才能创建,更新或删除规则。 用户必须对基于上下文的限制服务具有 EditorAdministrator 角色才能创建,更新或删除网络区域。 对基于上下文的限制服务具有 Viewer 角色的用户只能向规则添加网络区域。

任何 IBM Cloud Activity Tracker 或生成的审计日志事件都来自基于上下文的限制服务,而不是 DNS Services。 有关更多信息,请参阅 监视基于上下文的限制

要开始使用基于上下文的限制来保护 DNS Services 资源,请参阅 利用基于上下文的限制来保护资源 教程。

创建网络区域

使用 CLI 或 API 创建网络区域。

网络区域表示在其中创建访问请求的 IP 地址的允许列表。 它定义一组由以下属性指定的一个或多个网络位置:

  • IP 地址,包括单个地址,范围或子网
  • VPC

通过 CLI 创建网络区域

  1. 要从 CLI 创建网络区域,请 安装 CBR CLI 插件

  2. 使用 cbr-zone-create 命令将网络位置和 VPC 添加到网络区域。 有关更多信息,请参阅 CBR CLI 参考

    以下示例命令将单个 IP,范围,子网和 VPC 添加到网络区域。

    ibmcloud cbr zone-create --name example-zone --description "this is an example of zone" --addresses 169.23.56.234,169.23.22.0-169.23.22.255,192.0.2.0/24 --vpc crn:v1:bluemix:public:is:us-south:a/12ab34cd56ef78ab90cd12ef34ab56cd::vpc:r134-d98a1702-b39a-449a-86d4-ef8dbacf281e
    

使用 API 创建网络区

您可以使用 create-zone 命令来创建网络区域。 有关更多信息,请参阅 API 文档

addresses 属性指定允许源自的请求的各个 IP 地址,范围,子网和 VPC。

{
    "name": "example-zone",
    "description": "this is an example of zone",
    "account_id": "12ab34cd56ef78ab90cd12ef34ab56cd",
    "addresses": [
        {
            "type": "ipAddress",
            "value": "169.23.56.234"
        },
        {
            "type": "ipRange",
            "value": "169.23.22.0-169.23.22.255"
        },
        {
            "type": "subnet",
            "value": "192.0.2.0/24"
        },
        {
            "type": "vpc",
            "value": "crn:v1:bluemix:public:is:us-south:a/12ab34cd56ef78ab90cd12ef34ab56cd::vpc:r134-d98a1702-b39a-449a-86d4-ef8dbacf281e"
        }
    ]
}
{
  "id": "65810ac762004f22ac19f8f8edf70a34",
  "crn": "crn:v1:bluemix:public:context-based-restrictions:global:a/12ab34cd56ef78ab90cd12ef34ab56cd::zone:65810ac762004f22ac19f8f8edf70a34",
  "name": "example-zone",
  "description": "this is an example of zone",
  "account_id": "12ab34cd56ef78ab90cd12ef34ab56cd",
  "addresses": [
    {
      "type": "ipAddress",
      "value": "169.23.56.234"
    },
    {
      "type": "ipRange",
      "value": "169.23.22.0-169.23.22.255"
    },
    {
      "type": "subnet",
      "value": "192.0.2.0/24"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-south:a/12ab34cd56ef78ab90cd12ef34ab56cd::vpc:r134-d98a1702-b39a-449a-86d4-ef8dbacf281e"
    }
  ],
  "address_count": 4,
  "excluded_count": 0,
  "href": "https://cbr.cloud.ibm.com/v1/zones/65810ac762004f22ac19f8f8edf70a34",
  "created_at": "2020-11-23T02:01:59Z",
  "created_by_id": "IBMid-120000P1JM",
  "last_modified_at": "2022-09-26T02:01:59Z",
  "last_modified_by_id": "IBMid-120000P1JM"
}

限制

基于上下文的限制仅保护与 DNS Services API 关联的操作。 与以下平台 API 关联的操作不受基于上下文的限制保护。 请参考 API 文档以获取特定操作标识。

DNS Services CBR 限制

  • 在 DNS Services 上创建的 CBR 规则不适用于 DNS Services 实例上的“全局搜索和标记”,资源实例创建和删除等平台操作。 您仍可以在 IBM Cloud Resource Explorer 上查看 DNS Services 实例。
  • 创建规则时,可能需要最多 10 分钟才能强制实施。

创建规则

可以使用资源属性将 DNS Services 的基于上下文的限制作用域限定为服务实例或资源组。 使用 CLI 或 API 创建规则。

您可以通过输入标识来选择服务实例。 或者,可以使用 * 通配符来选择所有适用的服务实例。 您还可以在命令中指定将规则应用于哪个资源组。

通过 CLI 创建规则

  1. 要从 CLI 创建规则,请 安装 CBR CLI 插件
  2. 使用 ibmcloud cbr rule-create 命令 来创建 CBR 规则。 有关更多信息,请参阅 CBR CLI 参考

本节中的示例是实施规则。 您可以通过添加 --enforcement-mode report 使其仅报告。

以下示例 CLI 命令为当前帐户中的 DNS Services 实例创建基于上下文的限制规则:

ibmcloud cbr rule-create  --zone-id 65810ac762004f22ac19f8f8edf70a34 --description "example CBR rule" --service-name dns-svcs --service-instance 3bd0bc3c-232c-4886-a0c4-72aa26ec0d38

使用应用程序接口创建规则

查看以下示例请求以创建规则。 有关 v1/rules API 的更多信息,请参阅 API 文档

创建具有上下文属性的规则以限制对专用端点的请求时,无法限制对单个 VPC 虚拟服务器实例或裸机服务器的覆盖 IP 的访问。 您必须指定 VPC 区域的底层 IP 地址,这些 IP 地址也称为 Cloud Service 端点 IP。

以下示例有效内容创建用于保护 DNS Services 实例的规则,并仅允许通过专用端点从指定网络区域进行访问。

{
  "contexts": [
    {
      "attributes": [
        {
          "name": "endpointType",
          "value": "private"
        },
        {
          "name": "networkZoneId",
          "value": "65810ac762004f22ac19f8f8edf70a34"
        }
      ]
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "serviceName",
          "value": "dns-svcs"
        },
        {
          "name": "serviceInstance",
          "operator": "stringEquals",
          "value": "3bd0bc3c-232c-4886-a0c4-72aa26ec0d38"
        }
      ]
    }
  ]
}

DNS Services 如何授权 VPC 资源访问

DNS Services 要求您在下列其中一项操作中具有对 VPC 资源的相应访问权:

  • 将 VPC 添加到 DNS 区域的允许网络。
  • 在特定 VPC 上创建定制解析器。
  • 在 VPC 子网上创建带有运行状况检查的 GLB 源池。

您必须与帐户管理员一起工作,以确保 IAM 访问策略具有相应的 VPC 操作员许可权,并确保没有阻止您在 VPC 上操作的 CBR 规则。 对于后两项操作,您还必须具有子网阅读器许可权,并确保没有阻止您获取子网详细信息的 CBR 规则。

监视 DNS Services 中基于上下文的限制

每次实施基于上下文的规则时,基于上下文的限制服务都会生成审计日志。 有关更多信息,请参阅 监视基于上下文的限制

由基于上下文的限制服务生成的活动跟踪程序事件包含 CorrelationId 字段。 您可以搜索此字段的值以查找由 DNS Services生成的审计事件。