使用基于上下文的限制保护 Secrets Manager 资源

设置 IBM Cloud® Secrets Manager 服务实例后,可以使用 基于上下文的限制(CBR)来管理访问权。

管理 CBR 设置

通过 基于上下文的限制,您可以根据指定的标准定义和执行用户和服务访问 Secrets Manager 资源的限制。

您可以使用基于上下文的限制以及身份和访问管理 (IAM) 策略来控制 Secrets Manager 资源。 这些资源包括虚拟私有云 (VPC) 引用以及链接到 Secrets Manager 实例的 Internet Protocol (IP) 地址。

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

用户必须在 Secrets Manager 服务中拥有 Administrator 角色,才能创建、更新或删除规则。 用户还必须对基于上下文的限制服务具有 EditorAdministrator 角色,才能创建,更新或删除网络区域。 在基于上下文的限制服务上具有 Viewer 角色的用户只能将网络区域添加到规则。

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

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

Secrets Manager 如何与基于上下文的限制集成

要限制访问权,必须创建 区域规则

首先,创建具有网络或资源定义的相应详细信息的区域。 然后,将该区域连接到指定的资源以限制访问权。 您可以使用 RESTful API基于上下文的限制来创建区域和规则。 创建或更新区域或规则后,可能需要几分钟才能使更改生效。

CBR 规则不适用于供应或取消供应过程。

限制

当用户具有实例级别 IAM 访问权时,应用于特定密钥组的 CBR 规则不会生效。 要解决此限制,请仅将用户的 IAM 访问策略设置为私钥组。

基于上下文的限制仅保护与 Secrets Manager API 相关联的操作。 与以下平台 API 关联的操作不受基于上下文的限制保护。 请参阅 API 文档以了解特定操作标识。

创建网络区域

通过创建网络区域,您可以定义发起访问请求的网络位置的允许列表,以确定何时可以应用规则。 可以通过以下属性指定网络位置列表:

  • IP 地址,包括单个地址,范围或子网。
  • VPC
  • 服务引用,允许从其他 IBM Cloud 服务进行访问。

确保为针对其他 IBM Cloud 资源的规则在网络区域中添加 Secrets Manager,否则工作流程中的某些操作可能会失败。

如果在虚拟专用云的经典基础架构上创建了 IBM Cloud 虚拟服务器,则 CBR 规则必须使用的专用 IP 地址是虚拟专用云网关 IP。 请勿将内部 IP 地址用于经典基础架构上的虚拟服务器。 要查找网关 IP 地址,请在虚拟私有云基础设施中选择相关的 IBM Cloud 服务端点源 IP 地址。

使用 API 创建网络区域

您可以使用 create-zone 命令来创建网络区域。 有关更多信息,请参阅 API 文档。 您可以将 Secrets Manager 作为服务引用添加到网络区域,以允许 Secrets Manager 访问作为规则主体的帐户中的资源和服务。

Secrets Manager 的 serviceRef 属性为 secrets-manager

您可以通过检查 引用目标 来确定哪些服务可用。

用于将 Secrets Manager 添加到网络区域的示例有效内容。

{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "secrets-manager",
        "account_id": "ACCOUNT-ID"
      }
    }
  ]
}

用于将多个服务,IP 地址和 VPC 添加到网络区域的示例有效内容。

{
  "name": "zone",
  "description": "",
  "addresses": [
    {
      "type": "ipAddress",
      "value": "192.168.0.0"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-east:a/CRN"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-south:a/CRN"
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "cloud-object-storage",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "codeengine",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "containers-kubernetes",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_type": "platform_service",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "iam-groups",
        "account_id": "ACCOUNT-ID"
      }
    }
  ],
  "excluded": []
}

创建区域后,您可以 更新或删除 它们。

使用 UI 创建网络区域

设置先决条件和需求后,可以在 UI 中创建区域。 有关更多信息,请参阅 创建基于上下文的限制

  1. 确定要添加到允许列表的资源。
  2. 执行以下步骤以在控制台中 创建基于上下文的限制。 将 Secrets Manager 服务添加到网络区域,以允许 IBM Cloud® Secrets Manager 访问帐户中的服务和资源。

创建区域后,您还可以 更新或删除 它们。

使用 CLI 创建网络区域

您可以使用 cbr-zone-create 命令将网络位置,VPC 和服务引用添加到网络区域。 有关更多信息,请参阅 CBR CLI 参考。 将 Secrets Manager 作为服务引用添加到网络区域,以允许 Secrets Manager 访问作为规则主体的帐户中的资源和服务。

  1. 要从 CLI 创建网络区域,请 安装 CBR CLI 插件
  2. 使用 cbr-zone-create 命令将资源添加到网络区域。 有关更多信息,请参阅 CBR CLI 参考。 请注意,Secrets Manager 的 service_namesecrets-manager

要查找可用服务引用的列表,请运行 ibmcloud cbr service-ref-targets 命令

用于将 secrets-manager 服务添加到网络区域的示例命令。

ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=secrets-manager

了解规则

创建专区后,可以通过创建规则将专区附加到网络资源。 向规则添加资源时,可以从特定于网络拓扑的可用 端点类型 中进行选择。

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

您可以使用从创建网络区域收集的信息来使用 API 定义规则。

请查看以下示例,以了解如何为 Secrets Manager创建规则。 有关更多信息,请参阅 API 文档

以下示例有效内容创建用于保护 CLUSTER-ID 集群的规则。 只有 NETWORK-ZONE-ID 区域中的资源才能访问集群。 如果未指定 operations,那么 NETWORK-ZONE-ID 区域中的资源可以访问 clustermanagement API。

{
  "description": "Example rule 1",
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT-ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "CLUSTER-ID"
        }
      ]
    }
  ],
  "contexts": [
    {
      "attributes": [
        {
          "name": "networkZoneId",
          "value": "NETWORK-ZONE-ID"
        },
        {
          "name": "endpointType",
          "value": "private"
        }
      ]
    }
  ]
}

创建规则后,可以 更新删除 这些规则。

使用用户界面创建规则

设置先决条件和需求后,可以在 UI 中创建规则。

  1. 确定要添加到允许列表的资源。
  2. 执行以下步骤以在控制台中 创建基于上下文的限制。 将 Secrets Manager 服务添加到网络区域,以允许 IBM Cloud® Secrets Manager 访问帐户中的服务和资源。

创建规则后,可以 更新删除 这些规则。

使用 CLI 创建规则

查看以下示例以了解如何为 Secrets Manager创建规则。 有关更多信息,请参阅 CBR CLI 参考

  1. 要从 CLI 创建规则,请 安装 CBR CLI 插件
  2. 您可以使用 ibmcloud cbr rule-create 命令 来创建 CBR 规则。 有关更多信息,请参阅 CBR CLI 参考。 请注意,Secrets Manager 的 service_namesecrets-manager。 要查找服务名称列表,请运行 ibmcloud cbr service-ref-targets 命令。 要查找服务的 API 类型列表,请运行 ibmcloud cbr api-types --service-name SERVICE 命令。

用于创建使用 addresses 键和 cluster API 类型以及 ipAddress 类型的规则的示例命令。

ibmcloud cbr rule-create my-rule-1 --service-name secrets-manager --api-type crn:v1:bluemix:public:secrets-manager::::api-type:cluster --zone-id ZONE-ID

以下命令将创建用于保护 CLUSTER-ID 集群的规则。 只有 NETWORK-ZONE-ID 网络区域中的资源才能访问集群。 此规则包含 clustermanagement API 类型。

ibmcloud cbr rule-create my-rule-2 --service-name secrets-manager --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID

后续步骤

您必须遵循区域或规则的创建或修改,并进行足够的测试以确保访问权和可用性。

当未建立相应的规则时,尝试在定义的区域外部访问资源的用户将接收到 HTTP error 401