You need to enable JavaScript to run this app.
导航
基于 IAM 保护 VKE 控制台访问
最近更新时间:2025.02.27 14:11:41首次发布时间:2025.02.27 14:11:41

本文主要介绍在容器服务(VKE)上使用火山引擎访问控制(IAM)来保护您的 Kubernetes 集群访问。

说明

该功能目前处于 公测 阶段。

背景信息

在现代云原生应用中,Kubernetes 已经成为了构建和管理容器化应用的标准平台。然而,保护 Kubernetes 集群免受未经授权访问的风险是至关重要的。本文将重点介绍如何利用火山引擎提供的 IAM 服务来有效地管理和保护您在 VKE 控制台上的 Kubernetes 集群的访问。

IAM(Identity and Access Management)是火山引擎提供的访问控制服务,用于管理对云资源的访问权限。通过配置 IAM 策略,您可以精确控制用户(User)、角色(Role)或实体对特定资源的访问方式和权限。 更多信息,请参见 访问控制

使用说明

本文方案仅适用于通过 VKE 控制台访问 Kubernetes 集群时的权限控制,不适用于基于 kubectl 等API 方式 Kubernetes 集群。API 方式访问集群时直接通过 Kubernetes 的 API Server 访问,不受火山引擎 IAM 控制。

基于 IAM 的访问控制策略

VKE 提供了容器组(Pod)的控制台操作功能,类似于在集群中执行kubectl exec -it {your_container_name} -- /bin/bash命令。该项功能允许用户直接在容器内部进行交互,提升了操作便捷性。然而,对于安全要求较高的用户,在操作便利的同时希望进一步强化访问控制,确保只有特定的 IP 地址能够访问 VKE 控制台,则可以通过本文方案配置访问策略,从而提升集群的安全性,防止未经授权的访问,保障系统的稳定和数据的安全。

示例策略代码如下:

{
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "vke:GetTerminal"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "NotIpAddressIfExists": {
                    "volc:SourceIp": [
                        "192.168.xx.xx"
                    ]
                }
            }
        }
    ]
}

上述示例策略表示如果请求访问 VKE 控制台的 IP 地址不是192.168.xx.xx,则拒绝访问。该示例策略配合集群中一些常规的 EffectAllow 的策略(例如 VKEReadOnlyAccess),可以有效防止不安全的网络访问 VKE 控制台中的 Pod。策略代码参数说明如下所示:

参数说明
Effect访问策略的效果,本示例取值为 Deny,表示 拒绝 操作。更多语法说明,请参见 效果(Effect)
Action被拒绝的具体操作,本示例取值为 vke:GetTerminal,表示拒绝(禁止)获取 Kubernetes 集群的终端访问。更多语法说明,请参见 操作(Action)

Resource

指定的操作起作用的资源,您可以根据需求自定义设置:您也可以指定具体的集群 ID,表示禁止获取该集群的终端访问权限。更多语法说明,请参见 资源(Resource)

  • *:表示所有资源,即禁止获取所有 Kubernetes 集群的终端访问。。
  • trn:vke:{your_region}:*:cluster/{your_clusterid}:表示禁止获取指定集群的终端访问权限。

    说明

    实际业务中,请将{your_region}替换为您实际的业务地域、{your_clusterid}替换为您指定的集群 ID,例如trn:vke:cn-shanghai:*:cluster/ccuu2o48q8******

Condition定义策略生效的条件,本文示例使用 NotIpAddressIfExists,表示如果请求中包含了volc:SourceIp字段,且字段值192.168.xx.xx时允许访问,否则拒绝访问。更多语法说明,请参见 条件(Condition)

说明

IAM 的访问控制策略以 Deny 优先,即如果多个策略叠加,有一个策略是 Deny,那么最终效果为 Deny,因此您可以叠加上述的策略到任意的集群放通策略上。

应用 IAM 访问控制策略

您可以通过如下步骤应用 IAM 访问策略,保护您 Kubernetes 集群的访问权限:

  1. 创建 IAM 策略。
    IAM 控制台 创建上述策略。详细操作,请参见 新建自定义策略
    alt
  2. 关联策略。
    • 将新建的策略关联到您希望限制访问的 IAM 用户或 IAM 角色上。详细操作,请参见 管理用户
      alt
    • 访问 VKE 控制台除了上述 IAM 权限控制之外,还有 Kubernetes 自身的 Role-Based Access Control(RBAC)权限控制,请确保 IAM 用户或 IAM 角色拥有操作集群所需的其他必要 RBAC 权限。RBAC 相关说明,请参见 配置用户 RABC权限

      说明

      本示例中请确保被添加策略的 IAM 用户或 IAM 角色拥有 Pod 的 exec 权限,否则无法测试权限控制效果。

  3. 测试策略。
    分别使用符合条件的 IP 地址和不符合条件的 IP 地址进行测试,验证策略是否按预期工作。目前 Pod 控制台对于阻止的请求会直接显示 disconnect(如下图)。
    alt
  4. 监控和优化策略。
    • 定期审查和优化 IAM 策略,确保安全性和操作的便利性。
    • 监控策略的日志和审计信息,及时发现并应对潜在的安全风险。