将 Kubernetes 与 PAM360 集成

PAM360 是 ManageEngine 推出的一款统一特权访问管理产品,可与 Kubernetes 集成。Kubernetes 是一款开源容器编排工具,能够实现软件部署的自动化,并帮助有效扩展和管理应用程序。

此集成可帮助您获取 机密集群 中检索机密,并通过 PAM360 界面进行管理——您可以检索、管理并定期轮换从多个 Kubernetes 集群获取的机密。通过此集成,您可以实现企业中使用的 Kubernetes 机密的协同管理。 将获取的密钥添加到 PAM360 存储库后,您可以执行各种操作来管理它们,例如通过集群同步更新密钥、轮换密钥,以及对 Kubernetes 资源实施访问控制,从而对敏感密钥提供受控访问。PAM360 会为存储在存储库中的密钥所执行的所有操作记录详尽的审计日志。

阅读完本文后,您将掌握以下内容:

  1. 术语表
  2. 集成如何工作?
  3. 在 PAM360 中配置 Kubernetes 集成
  4. 获取和管理密钥
  5. 将密钥映射到资源
  6. 限制

1. 术语表

术语 描述

容器

一个可移植的可执行映像,其中包含软件及其所有依赖项。

密钥

包含密码、令牌或密钥等敏感数据的对象。

集群

一组称为节点的 worker 机器,用于运行容器化应用程序。每个集群至少有一个 worker 节点。

Kubectl

一种用于通过 Kubernetes API 与 Kubernetes 集群控制平面进行通信的命令行工具。

命名空间

命名空间是一个抽象概念,用于隔离位于单个 Kubernetes 集群内的一组资源。


2. 集成如何工作?

Kubernetes-PAM360 集成利用 API 响应从 Kubernetes 服务器获取密钥,并将它们作为资源导入 PAM360 存储库,以便进行管理和共享。来自多个 命名空间 集群的密钥均可通过 PAM360 进行获取和管理。

PAM360 如同一个存储库,可发现并存储来自不同 Kubernetes 集群、用于执行各类任务的密钥。从各自命名空间(Namespace)获取的 Kubernetes 密钥将作为账户添加到资源中,并存储在“Kubernetes”资源类型下。这些账户可作为可下载的 .json 文件提供。下文展示了一个 Kubernetes 密钥的示例。

	apiVersion: v1
    kind: Secret
    metadata:
      name: pam-win8-32-0ex097
      namespace: pam360-com
    type: Opaque
    data:
      admin:        dXNlcm5hbWU=
      sysadmin:	dXNlcm5hbWU=
      user-5841:    dXNlcm5hbWU=
      automation:    dXNlcm5hbWU=
      service-acc:    dXNlcm5hbWU=
      local-admin:    dXNlcm5hbWU=

注意

密钥文件(.json)可能包含一个或多个密钥,具体取决于您的 Kubernetes 配置。

3. 在 PAM360 中配置 Kubernetes 集成

注意

PAM360 仅支持 HTTPS 连接。因此,需要有效的 SSL 证书才能与 Kubernetes 服务器安全连接。要将运行 Kubernetes 的主机的 SSL 证书导入 PAM360 证书存储库,请按照 问题 11所述的步骤。导入 SSL 证书时,请确保该证书包含“主题别名”(SAN)字段。

3.1 从 PAM360 下载 YAML 文件

  1. 导航至“管理”>>“DevSecOps”>>“容器平台”。
  2. 在集成页面中,点击 Kubernetes 选项旁的“配置”。
    kubernetes-1
  3. 要开始配置流程,您必须首先从 PAM360 界面下载 YAML 文件。该 YAML 文件包含必须应用于 Kubernetes 服务器主节点的必要命令。在此窗口中,点击“下载 YAML 文件”以继续。
    kubernetes-2

3.2 在 Kubernetes 服务器中生成服务账户令牌

  1. 将 YAML 文件移动到运行 Kubernetes 服务器的机器上。执行以下命令以应用 YAML 配置文件。该命令将创建一个新的服务令牌,用于验证 PAM360 与主节点之间的通信。
    kubectl apply -f pam360-config.yaml
  2. 现在,执行以下命令从 Kubernetes 服务器获取服务账户令牌:
    kubectl get secrets/pam360-secret -o jsonpath='{.data.token}'
  3. 系统将生成一个服务账户令牌。默认情况下,该令牌采用 base64 编码格式。请复制此服务账户令牌,用于在 PAM360 中配置集成。

3.3 在 PAM360 界面中配置集成

  1. 现在,再次打开 PAM360 界面,导航至“管理 >> DevSecOps >> 容器平台”,然后点击“Kubernetes”
  2. 在此窗口中,添加以下属性以在 PAM360 中创建新的 Kubernetes 集群:
    1. 集群名称
    2. 运行 Kubernetes 服务器的机器主机名
    3. 上一步生成的服务账户令牌
      kubernetes-3
  3. 点击“测试”。此操作将验证集群配置,并确保 PAM360 与 Kubernetes 之间能够建立通信。PAM360 在建立连接前会执行三项检查:
    1. 验证是否能与运行 Kubernetes 服务器的宿主机通信。
    2. 验证是否能与 Kubernetes 集群通信。
    3. 验证服务账户令牌。
      kubernetes-4
  4. 点击“保存”以完成配置。仅当测试成功时,才能保存配置详情。
    kubernetes-5

4. 获取和管理密钥

保存配置详情后,下一步是从 Kubernetes 集群中获取密钥。请按照以下步骤操作:

  1. 在弹出的“已获取的密钥”窗口中,将显示命名空间及其对应密钥的列表。选择所需的命名空间或单个密钥,然后点击“保存”以开始获取密钥。
    kubernetes-6
  2. “Kubernetes 集群”页面中,单击集群名称,即可在“命名空间和密钥”窗口中 显示与该命名空间及集群相关的所有详细信息。
    kubernetes-7
  3. 本页面将显示一个使用您提供的 Kubernetes 服务器详细信息创建的新集群,同时显示 Kubernetes 服务器的状态以及可执行的操作。您可以在该集群上执行四项主要操作:
    1. 获取:点击“获取”图标 ,从 Kubernetes 服务器获取命名空间。该集群将采用“命名空间名称 - 您在创建集群时指定的集群名称”的格式命名。
    2. 编辑:点击“编辑”图标可修改 Kubernetes 配置详情。
    3. 删除:点击“删除”以移除该集群。若要重新添加,您必须按照 步骤 3 并重新配置。请注意,删除操作仅会移除密钥关联,而不会删除通过该集群创建的资源,这些资源仍可在“资源”选项卡下查看。建议您手动删除这些资源以避免潜在冲突。
    4. 同步密钥:使用此选项可更新从已添加至 PAM360 的 Kubernetes 集群中获取的密钥列表。换言之,如果 Kubernetes 服务器中的某个集群添加了新的密钥集,同步选项将获取 PAM360 首次获取操作后新增的所有密钥,并保持集群信息与 Kubernetes 服务器保持同步。

4.1 实时用例场景

John 是一名 IT 管理员,负责管理一个关键数据库。用于身份验证的数据库密钥是关键实体,必须安全地存储起来。为此,John 将数据库密钥保存在多个 Kubernetes 密钥中。现在,他需要一个安全的存储库来存放这些 Kubernetes 密钥,并通过单一界面进行管理。

此时,PAM360 与 Kubernetes 的集成便派上了用场。该集成使约翰能够根据需要选择并提取存储在 Kubernetes 集群中的密钥。在操作过程中,PAM360 会提取包含关键密钥的 JSON 文件,并将它们存储在存储库内的文件存储中。 PAM360 会对密钥文件中的密钥进行加密处理。该产品能够从多个 Kubernetes 集群中提取并存储密钥。Kubernetes 密钥包含机器身份信息,系统利用这些信息与 Kubernetes 服务器外的其他系统进行交互。通过此集成,PAM360 实现了密钥管理流程的自动化。

John 还可以通过 PAM360 界面执行密码重置操作来轮换 Kubernetes 密钥。为此,他可以将 Kubernetes 密钥映射到 PAM360 中的现有资源,并更改这些资源的密码。此操作将轮换从 Kubernetes 获取的 JSON 文件中存储的密钥。 不过,这些密钥不会直接在 Kubernetes 服务器上自动更新。

5. 将密钥映射到资源

要开始管理已获取的密钥,请将其映射到 PAM360 存储库中的资源。

  1. 获取密钥后,PAM360 会按照以下命名约定创建单独的资源:命名空间-集群名称。导航至“资源”选项卡,查看 PAM360 创建的所有 Kubernetes 资源。
  2. 这些密钥会根据其获取来源的命名空间和 Kubernetes 集群,在资源下进行分类。
    kubernetes-8
  3. 您可以将 Kubernetes 密钥与您拥有或与您共享的任何类型的资源相关联。
  4. 选择一个资源,转到“账户操作”>>“关联密钥”
    kubernetes-9
  5. “关联密钥”窗口中,从下拉菜单中选择资源名称、密钥名称以及该密钥对应的密钥值。点击“映射”并保存。您已成功将所选密钥及其密钥值与该账户关联。您可以将多个密钥映射到一个资源。
    kubernetes-10
  6. 映射完成后,您即可通过该资源管理密钥。要查看映射详情,请打开任意 Kubernetes 资源并点击“已映射资源详情”。该窗口将显示属于此 Kubernetes 集群的所有密钥列表及其映射的目标资源。
    kubernetes-11 kubernetes-12

注意

请注意,通过已映射资源触发的任何密码重置操作都会更改映射到该资源的所有密钥,且更改将反映在 Kubernetes 服务器上。但是,PAM360 不会重置在 Kubernetes 集群内运行的服务密码。


6. 限制

  1. 您必须手动将每个密钥映射到资源,以便从 PAM360 存储库中进行管理。每当通过按需获取从 Kubernetes 服务器同步新密钥时,必须在“资源”选项卡中手动将密钥映射到资源。
  2. PAM360 的远程密码重置功能不适用于在 Kubernetes 服务器内部运行的服务。
  3. 该集成仅提供单向同步——PAM360 可以获取添加到 Kubernetes 集群中的额外密钥,但无法删除已从 Kubernetes 服务器中删除的密钥。
  4. PAM360 没有自动同步计划来自动从 Kubernetes 服务器获取密钥。




Top