How to Deploy KYPO_CRP on OpenStack-YOGA

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

KYPO Cyber Range Platform (CRP) is an open-source solution for cybersecurity training, leveraging OpenStack and Kubernetes. This guide provides a comprehensive, step-by-step deployment process for KYPO CRP on OpenStack-YOGA, filling gaps in official documentation with detailed configurations and troubleshooting. The deployment involves initial OpenStack pre-configuration, deploying base infrastructure using Terraform, and subsequently deploying the KYPO CRP Helm application. Critical post-deployment steps include configuring Kubernetes host aliases and fixing a Git clone bug to ensure sandbox functionality. The article also details how to add new users programmatically via the KYPO API.

title25.png

设计目的 :

The KYPO Cyber Range Platform (KYPO CRP) 是由 Masaryk University 开发的开源解决方案,旨在支持网络安全培训和演练。它采用 MIT 许可证,为组织提供了定制和扩展平台以满足特定培训目标的灵活性。KYPO CRP 构建于 OpenStack 和 Kubernetes 技术的组合之上,并集成了诸如 Capture-the-Flag (CTF) 场景交付和虚拟实例管理等关键功能。

官方安装指南提供了一个简化的部署流程 (官方指南)。当我按照说明在 OpenStack 上进行部署时,我发现它缺少一些详细的配置,尤其是一些故障排除技巧,这导致了人们的部署失败。本文的目的是弥合这一差距,提供一个全面的分步指南,以在 OpenStack-YOGA 上部署 KYPO CRP。它包括必要的预配置任务、使用 Terraform 和 Helm 的完整部署说明,以及用户可能遇到的常见问题及其切实可行的解决方案。

本文包括 3 个主要部分:

  • OpenStack 预配置:在部署 KYPO-CRP 之前,您的 OpenStack-YOGA 环境中所需的必要设置。

  • KYPO 部署步骤:使用 Terraform 部署 KYPO-CRP 以及使用 Helm 部署应用程序、修改 KYPO-K8s 集群和 KYPO-Web-dashboard 的详细步骤。

  • 故障排除和使用:如何在部署后访问平台以及解决设置过程中遇到的常见问题。

# Author:      Yuancheng Liu
# Created:     2023/02/20
# Version:     v_0.1.3
# License:     MIT License 

简介

The KYPO Cyber Range Platform (KYPO CRP) 旨在支持学术和专业培训需求。它使用诸如 k8s、容器、微服务和基础设施即代码等现代技术构建,使其成为创建真实网络安全场景的灵活、可扩展且经济高效的解决方案。

KYPO-CRP 能够创建可定制的沙箱——无论是在云端还是本地——允许学习者参与实践培训演练,例如 Capture-the-Flag (CTF) 挑战和网络事件模拟。该平台是完全开源的,并根据 MIT 许可证提供,允许组织根据其独特的架构和培训目标定制部署。本文的主要参考依据是以下两个链接:

本文提供了一个详细的分步指南,用于在 OpenStack-YOGA 上部署 KYPO-CRP,如下图所示。

s_0315.png

Figure-00: 部署工作流程图,版本 v_0.1.3 (2025)

部署过程分为四个主要阶段:

  • 预配置 OpenStack – 设置所需的 OpenStack 配置和先决条件。

  • 部署 OpenStack 基础资源 – 使用 KYPO 基础 Terraform 文件来部署基础架构。

  • 部署 KYPO CRP Helm 应用程序 – 使用 Helm 和 KYPO head Terraform 文件部署应用程序层。

  • 完成配置 – 完成 Kubernetes 集群设置和仪表板配置


KYPO-CRP 技术概述

KYPO-CRP 完全基于最先进的方法,例如容器、基础设施即代码、微服务和开源软件,包括云提供商技术 - OpenStack。系统结构如下所示:

s_0419.png

Figure-01: KYPO_CRP 系统工作流程图,版本 v_0.1.3 (2025)

KYPO CRP 对内容和架构采用相同的开放方法,以鼓励创建培训师社区并支持培训构建块的共享。因此,虚拟机、网络和培训完全在人类可读的数据序列化语言 JSON 和 YAML 中定义,或者使用开源软件 Packer 构建虚拟机,并使用 Ansible 描述机器内容。

KYPO 控制节点正在运行一个带有不同 pod 的 K8s 集群。在 OpenStack 节点 "default-kubernetes-cluster" 中,您可以获得它们的状态,如下所示:

ubuntu@default-kubernetes-cluster:~$ kubectl get pods
NAME                                                READY   STATUS    RESTARTS   AGE
postgres-7bfcbc4f85-dfd29                           1/1     Running   0          6d7h
guacamole-5bdfd984c6-p7zh8                          1/1     Running   0          6d7h
kypo-redis-76854b59f6-99gjm                         1/1     Running   0          6d7h
angular-frontend-64b6fbbbfd-5kzrl                   1/1     Running   0          6d7h
guacd-56b6cdd9f8-gwkm9                              1/1     Running   0          6d7h
kypo-syslog-ng-88ddbcd69-w88gx                      1/1     Running   0          6d7h
mitre-service-55ff5578b6-qlc88                      1/1     Running   0          6d7h
oidc-issuer-ldap-867758c7bb-2t6z5                   1/1     Running   0          6d7h
answers-storage-5b4db578ff-96fh2                    1/1     Running   0          6d7h
kypo-logstash-7b75dc8d4f-m94vv                      1/1     Running   0          6d7h
smart-assistant-688b8b4c75-hfqfg                    1/1     Running   0          6d7h
uag-service-5b4dbc95ff-glg6t                        1/1     Running   0          6d7h
sandbox-service-worker-ansible-5cd8b97694-pg7gr     1/1     Running   0          6d7h
sandbox-service-worker-openstack-6457799f98-275q2   1/1     Running   0          6d7h
sandbox-service-worker-default-864c85b46c-h6lrf     1/1     Running   0          6d7h
sandbox-service-worker-default-864c85b46c-dwjkc     1/1     Running   0          6d7h
sandbox-service-worker-openstack-6457799f98-zmx5z   1/1     Running   0          6d7h
sandbox-service-worker-ansible-5cd8b97694-8rvww     1/1     Running   0          6d7h
training-feedback-service-84c547d664-w4hjd          1/1     Running   0          6d7h
adaptive-training-service-59964c9778-v2gtk          1/1     Running   0          6d7h
kypo-elasticsearch-5c894f9b65-fw4q6                 1/1     Running   0          6d7h
sandbox-service-7cf4b8d7db-76s5n                    1/1     Running   0          6d7h
training-service-6699b78459-mvftz                   1/1     Running   0          6d7h
elasticsearch-service-7db4866fb6-bt5vt              1/1     Running   0          6d7h
oidc-issuer-app-fc9ff8856-db6jq                     1/1     Running   0          6d7h
git-internal-c959ccff5-c9xgq  

OpenStack 准备

在部署 KYPO-CRP 之前,您需要在 OpenStack 环境中配置多个设置。这包括为 KYPO 创建应用程序凭证,并设置所需的 flavor 以确保可以正确配置虚拟机 (VM)。

为 KYPO-CRP 创建 OpenStack 应用程序凭证

步骤 1:以管理员身份登录 OpenStack-YOGA horizon 仪表板,在 Identity -> Application Credential 下创建凭证,如下所示:

s_0518.png

Figure-02: 创建 OpenStack 应用程序凭证,版本 v_0.1.3 (2025)

对于凭证角色,选择所有 4 个角色:adminusermemberreader,并选中 Unrestricted 复选框。

步骤 2:下载 app-cred-xxx-open-rc.shclouds.yaml 文件(如 file/app-cred-kypotest7-openrc.shfiles/clouds.yaml 中所示)

app-cred-kypotest7-openrc.sh 示例:

#!/usr/bin/env bash
export OS_AUTH_TYPE=v3applicationcredential
export OS_AUTH_URL=http://controller2:5000/v3/
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME="RegionOne"
export OS_INTERFACE=public
export OS_APPLICATION_CREDENTIAL_ID=9cd30053e56d4981806e83f08c2cb831
export OS_APPLICATION_CREDENTIAL_SECRET=kypotest7

clouds.yaml 示例:

clouds:
  openstack:
    auth:
      auth_url: http://controller2:5000/v3/
      application_credential_id: "9cd30053e56d4981806e83f08c2cb831"
      application_credential_secret: "kypotest7"
    region_name: "RegionOne"
    interface: "public"
    identity_api_version: 3
    auth_type: "v3applicationcredential"

您还可以使用以下命令在 OpenStack 控制器节点中创建应用程序凭证:

openstack application credential create --secret "kypotest7" --description "2nd Kypo installation" --role admin --role user --role reader --role member kypotest7

配置所需的 OpenStack Flavor

确保您的 OpenStack 环境中提供以下 VM flavor。这些 flavor 在 KYPO-CRP 部署期间用于分配计算资源:

Flavor VCPUs Disk (GB) RAM (MB)
csirtmu.tiny1x2 1 20 1024
standard.tiny 1 1 512
standard.small 1 20 2048
standard.medium 2 40 4096
standard.large 8 80 8192

注意:这些 flavor 名称必须与 KYPO 的 Terraform 脚本中引用的名称完全匹配,并且对于 standard.xlarge 最好使用 16 个 vCPU 和 32GB 内存,否则根据我的测试,如果您使用 8vCPU 和 16GB 内存,部署很可能会挂起或失败。

另一个非常重要的事情是,如果您的部署进度失败并且您想从头开始重新部署,您需要进行以下清理设置,否则重新部署很可能会再次失败:

如果您需要从 OpenStack 中清除/删除所有 KYPO 实例,则需要删除以下参数:

  • 清除名称为“-kypo”的密钥对,例如(Admin Kypokypo-kypo

  • 释放 KYPO 使用的 2 个 OpenStack 浮动 IP 地址。

  • 删除 kypo-public 路由器。

  • 删除所有 kypo-instance:[删除所有 default-p000000000-* ]

  • 删除 kypo-base 网络:[如果出现删除错误,请清理网络的端口、子网,然后再次删除]

  • 清除所有 KYPO 创建的安全组。

  • 删除“provider”网络下的“sandbox”子网。


OpenStack 基础资源部署

本节遵循 KYPO GitLab 存储库中的官方部署指南:🔗 BASE.md 部署说明

预配置安装文件

步骤 1:克隆 KYPO CRP 部署存储库

SSH 进入您的一个 OpenStack 控制器节点,并克隆官方 KYPO CRP 部署脚本 (v1.1.4):

git clone -b v1.1.4 https://gitlab.ics.muni.cz/muni-kypo-crp/devops/kypo-crp-tf-deployment.git

步骤 2:将凭据文件复制到控制器

复制先前生成的 app-credxxx-open-rc.shclouds.yamlscp OpenStack 控制器节点,将 clouds.yaml 文件放在 tf-head-servicestf-openstac-base 文件夹下,如下所示:

kypo@controller2:~/kypoInstall/kypo-crp-tf-deployment/tf-head-services$ ls
clouds.yaml kypo.tf provider.tf README.md terraform.tfstate terraform.tfstate.backup tfvars values.yaml variables.tf

步骤 3:更新 Terraform Provider 文件

修改 tf-openstack-base/provider.tf 文件,通过在文件中附加以下 3 行来定义 OpenStack provider。

provider "openstack" {
 cloud = "openstack"
}

步骤 4:更新基本变量

使用以下参数编辑 tf-openstack-base/tfvars/vars-base.tfvars

deploy_flavors                      = false
deploy_kubernetes_cluster           = true
kypo_kubernetes_cluster_flavor_name = "standard.xlarge"
kypo_proxy_flavor_name             = "standard.medium"

注意:当我按照 Kypo-Crp 官方网站使用 vars-all.tfvars 时,KYPO-k8s 集群 uag-service 容器在部署期间很可能会崩溃。

步骤 5:安装 Terraform

sudo apt install snapd
sudo snap install terraform --classic

部署 OpenStack 基础资源

步骤 1:加载应用程序凭据

通过 sourcing 脚本激活 Terraform 的 OpenStack 应用程序凭据:

source /path/to/app-cred--openrc.sh

步骤 2:配置外部网络

复制并修改部署变量文件:

cd tf-openstack-base
cp tfvars/deployment.tfvars-template tfvars/deployment.tfvars

确定您的外部 OpenStack 网络:

openstack network list --external --column Name
+----------+
| Name     |
+----------+
| provider |
+----------+

将字符串 provider 添加到 deployment.tfvars 中的 external_network_name 参数,如下所示:

external_network_name = "provider"

步骤 3:运行 Terraform 部署

初始化并应用 Terraform 配置(建议在 sudo 下运行并添加 auto-approve):

sudo terraform init
terraform apply --auto-approve -var-file tfvars/deployment.tfvars -var-file tfvars/vars-base.tfvars

步骤 4:记录输出信息

成功部署后,Terraform 将输出关键的 Kubernetes 和代理配置数据。保存此信息以供下一步部署使用:

cluster_ip = "192.168.200.207"
kubernetes_client_certificate = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t...="
kubernetes_client_key = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0..."
proxy_host = "192.168.200.216"
proxy_key = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS..."

步骤 5:验证连接

检查所需的端口(例如,SSH、HTTP、HTTPS)是否在 Kubernetes 集群 IP 上打开:

yuancheng@kcontroller1:~/kypoInstall/kypo-crp-tf-deployment/tf-openstack-base$ nmap -F 192.168.200.207
Starting Nmap 7.80 ( https://nmap.org ) at 2023-02-02 06:41 UTC
Nmap scan report for 192.168.200.207
Host is up (0.00018s latency).
Not shown: 95 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  open   https
515/tcp  closed printer
8443/tcp closed https-alt

重要提示:所有 5 个端口都必须打开,否则表示 K8s 集群中的某些 pod 出现问题,并且大多数情况下是 traefik 路由器初始化失败的问题。如果您登录到 KYPO 控制器节点并列出进程,则正常情况如下:

s_0619.png

Figure-03: Normal KYPO K8s process list, version v_0.1.3 (2025)

如果 traefik 没有启动,则表示部署已失败(如下所示)

s_0718.png

Figure-04: Exception KYPO K8s process list, version v_0.1.3 (2025)

要解决此问题,您需要在文件 deployment.tfvars 中更改版本,以下 2 行的版本是正确的:

kypo_crp_head_version         = "1.1.1"
kypo_postgres_version         = "1.0.0"

我们可以看到,在 KYPO 仓库提交版本 4b3b918 中,他们也进行了降级以修复此错误:

s_0816.png

部署 KYPO-CRP Helm 应用程序

在 OpenStack 基础架构准备就绪后,下一个阶段是使用 Helm 部署 KYPO 网络靶场平台 (CRP) 应用程序。

步骤 1:配置部署变量

导航到 tf-head-services 目录,该目录包含用于部署 KYPO CRP 组件的 Terraform 配置文件:

cd tf-head-services
cp tfvars/deployment.tfvars-template tfvars/deployment.tfvars

编辑 tfvars/deployment.tfvars 文件,并使用从先前的基础架构设置步骤中捕获的值填充它。以下是示例配置:

acme_contact = "[email protected]"
application_credential_id = "9cd30053e56d4981806e83f08c2cb831"
application_credential_secret = "kypotest7"
gen_user_count = "100"

git_config = {
  type                 = "INTERNAL"
  server               = "git-internal.kypo"
  sshPort              = 22
  restServerUrl        = "http://git-internal.kypo:5000/"
  user                 = "git"
  privateKey           = ""
  accessToken          = "no-gitlab-token"
  ansibleNetworkingUrl = "[email protected]:/repos/backend-python/ansible-networking-stage/kypo-ansible-stage-one.git"
  ansibleNetworkingRev = "v1.0.10"
}

guacamole_admin_password = "password"
guacamole_user_password  = "password"

head_host = "192.168.200.207"
head_ip   = "192.168.200.207"

kubernetes_host                = "192.168.200.207"
kubernetes_client_certificate = ""
kubernetes_client_key         = ""

kypo_crp_head_version   = "1.1.1"
kypo_postgres_version   = "1.0.0"
os_auth_url             = "http://10.0.6.4:5000/v3/"

oidc_providers = [
  {
    url              = "https://192.168.200.207:443/csirtmu-dummy-issuer-server/"
    logoutUrl        = "https://192.168.200.207:443/csirtmu-dummy-issuer-server/endsession"
    clientId         = "bFkibCmIhdoJJjExCZzuKSeOfDdjYkJETIjn"
    label            = "Login with local issuer"
    issuerIdentifier = ""
    userInfoUrl      = ""
    responseType     = ""
  }
]

proxy_host = "192.168.200.216"
proxy_key  = ""

users = {
  "kypo-admin" = {
    iss        = "https://192.168.200.207:443/csirtmu-dummy-issuer-server/"
    password   = "password"
    email      = "[email protected]"
    fullName   = "Demo Admin"
    givenName  = "Demo"
    familyName = "Admin"
    admin      = true
  }
}

重要提示:对于 gen_user_count,请设置为较大的数字,例如 300,否则您需要转到 K8s pod 以在部署完成后添加更多新用户。稍后我将展示如何添加新用户。

步骤 2:使用 Terraform 部署 KYPO CRP

配置好 deployment.tfvars 文件后,初始化 Terraform 并应用配置以安装 KYPO CRP Helm 应用程序:

terraform apply --auto-approve -var-file=tfvars/deployment.tfvars

备注:如果要开始全新的部署,请删除 terraform.tfstate 文件。

如果没有发生错误,安装过程将花费大约 9 - 13 分钟。

module.kypo_crp.helm_release.kypo_crp_head: Still creating... [11m20s elapsed]
module.kypo_crp.helm_release.kypo_crp_head: Still creating... [11m30s elapsed]
module.kypo_crp.helm_release.kypo_crp_head: Creation complete after 11m34s [id=kypo-crp-head]
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

如果您发现安装花费超过半小时,则很可能部署失败,根据我的测试,有时会超时,有时会挂在那里。

步骤 3:测试访问 Kypo 仪表板并登录

通过 url https:// 访问 KYPO 仪表板,如果出现以下仪表板,则表示 KYPO K8s 集群已成功部署,如下所示。使用我们刚刚配置的管理员用户登录。

s_0912.png

但是,当您登录以创建沙箱时,它将失败,您需要更改一些 K8s 设置,然后才能开始使用。

更改 Kypo-Kubernetes 集群配置

如果在安装后无法使用管理员成功创建沙箱。为了解决这个问题,需要在 KYPO Kubernetes 集群环境中进行手动调整。以下步骤详细说明了如何配置集群以解决该问题。

步骤 1:准备 Kypo K8s 公钥以登录 Kypo K8s 节点

访问:https://www.base64decode.org/ 并覆盖 deployment.tfvars 中的 proxy_key 字符串 proxy_key = "LS0tLS1CRUdJTiBFQyB..." 到密钥文件,并将内容保存在 key.pem

步骤 2:登录到 KYPO Kubernetes 节点

key.pem scp 到 OpenStack 控制器节点,并使用密钥 ssh 到 k8s 集群 vm。

chmod 0600 key.pem
ssh [email protected] -i key.pem

步骤 3:配置主机别名以解决 DNS 解析问题

如果 OpenStack 环境缺少 DNS 名称解析,请手动编辑 KYPO 部署文件以使用 hostAliases。依次运行以下命令:

sudo kubectl edit deployment sandbox-service -n kypo
sudo kubectl edit deployment sandbox-service-worker-ansible -n kypo  
sudo kubectl edit deployment sandbox-service-worker-openstack -n kypo  
sudo kubectl edit deployment oidc-issuer-ldap -n kypo
sudo kubectl edit deployment sandbox-service-worker-default -n kypo

对于每个部署,在容器配置后,在specs.template.specs下添加以下内容:

...
   - mountPath: /root/.ssh/kypo-crp-proxy-key  
      name: kypo-crp-proxy-key  
      subPath: kypo-crp-proxy-key    
    - mountPath: /var/opt/kypo/kypo-ansible-runner-volumes   
      name: ansible-runner-vol 
    - mountPath: /root/.ssh/git-ssh-key  
      name: git-ssh-key          
      subPath: git-ssh-key  
  dnsPolicy: ClusterFirst   
  # Add the below host aliases part:
  hostAliases:   
  - hostnames:   
    - controller2  
    ip: 10.0.6.4    
  # -------------------------------
  restartPolicy: Always                                                               
  schedulerName: default-scheduler                                                   
  securityContext: {}        
...        

参考:https://serverfault.com/questions/895088/can-host-aliases-be-assigned-to-deployments-in-kubernetes-if-so-how

步骤 4:修复 Git Clone Bug (libguac install)

The Kypo-Crp 有一个通过 apt install 安装 lib "guacamole guacd" 的 bug。在 v1.0.10 分支之后,他们修复了这个 bug。登录 kypo-k8s 集群并编辑内部 git pod:

spec:
  template:
    spec:
      containers:
        - name: git-internal-ssh
          lifecycle:
            postStart:
              exec:
                command:
                - sh
                - -c
                - |
                  mkdir -p /assets/keys
                  ssh-keygen -y -f /tmp/keys/git-ssh-key > /assets/keys/git-ssh-key.pub
                  cat /assets/keys/git-ssh-key.pub > /home/git/.ssh/authorized_keys
                  git clone -q --bare https://gitlab.ics.muni.cz/muni-kypo-crp/prototypes-and-examples/sandbox-definitions/small-sandbox.git /repos/prototypes-and-examples/sandbox-definitions/small-sandbox.git
                  git clone -q --bare https://gitlab.ics.muni.cz/muni-kypo-crp/prototypes-and-examples/sandbox-definitions/kypo-crp-demo-training.git /repos/prototypes-and-examples/sandbox-definitions/kypo-crp-demo-training.git
                  git clone -q --bare https://gitlab.ics.muni.cz/muni-kypo-crp/prototypes-and-examples/sandbox-definitions/kypo-crp-demo-training-adaptive.git /repos/prototypes-and-examples/sandbox-definitions/kypo-crp-demo-training-adaptive.git
                  # Add the branch version as shown below: 
                  git clone -b v1.0.10 -q --bare https://gitlab.ics.muni.cz/muni-kypo-crp/backend-python /ansible-networking-stage/kypo-ansible-stage-one.git /repos/backend-python/ansible-networking-stage/kypo-ansible-stage-one.git
...

步骤 5:测试沙箱定义和池分配

现在您可以登录 KYPO-dashboard,通过使用以下 git 定义一个测试沙箱来进行测试:

URL: [email protected]:/repos/prototypes-and-examples/sandbox-definitions/kypo-crp-hack-training-linear.git
Revision: master

然后创建一个沙箱池并分配一个沙箱来检查 kypo 是否工作:

s_1011.png

如果所有 3 个阶段都通过且没有错误(如上图所示),则表示所有配置都正常工作,并且 OpenStack 上的 KYPO 部署成功。


在 KYPO-CRP 中添加多个新用户

如果要添加更多新用户,您需要使用密钥文件登录到 KYPO K8s 节点,如前面的部分所示:

ssh [email protected] -i key.pem 

然后使用 KYPO 用户 API,如部署部分所示,端口 8084 未对外开放,因此只能在 K8s 节点内部完成。

https://localhost:8084/kypo-rest-user-and-group/api/v1/users

创建一个简单的 users.json 文件,其中包含要添加的新用户:

{
  "users": [
    {
      "sub": "[email protected]",
      "iss": "https://192.168.200.207:443/csirtmu-dummy-issuer-server/",
      "full_name": "user301",
      "given_name": "",
      "family_name": ""
    }, 
    {
      "sub": "[email protected]",
      "iss": "https://192.168.200.207:443/csirtmu-dummy-issuer-server/",
      "full_name": "user302",
      "given_name": "",
      "family_name": ""
    }...
  ],
  "groupName": "group1"
}

登录用户名需要是 sub 电子邮件名称。然后使用 curl 发布新用户信息:

curl -X POST "http://localhost:8084/kypo-rest-user-and-group/api/v1/users" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"users\": [ { \"sub\": \"[email protected]\", \"iss\": \"https://192.168.200.207:443/csirtmu-dummy-issuer-server/\", \"full_name\": \"user301\", \"given_name\": \"\", \"family_name\": \"\" }, { \"sub\": \"[email protected]\", \"iss\": \"https://192.168.200.207:443/csirtmu-dummy-issuer-server/\", \"full_name\": \"user302\", \"given_name\": \"\", \"family_name\": \"\" } ], \"groupName\": \"group1\"}"

如果要创建 100 个用户,请在该节点上创建一个简单的 python 程序并运行:

import requests
import json

url = "https://localhost:8084/kypo-rest-user-and-group/api/v1/users"
data = json.load(users.json)
response = requests.post(url, json=data) # Sends JSON in the body
print(response.status_code)
print(response.json())

添加用户后,转到 web 下载用户信息,或使用 curl GET 获取具有 ID 的用户信息,假设已经有 300 个用户,那么如果我再添加一个用户 user-301,则新用户的 ID 为 301。

curl -X GET "http://localhost:8084/kypo-rest-user-and-group/api/v1/users/301" -H "accept: application/json"

然后我们可以从响应数据中获取系统生成的密码

{
  "content": [
    {
      "sub": "[email protected]",
      "iss": "https://192.168.200.207:443/csirtmu-dummy-issuer-server/",
      "fullName": "John Doe",
      "mail": "[email protected]",
      "givenName": "",
      "familyName": "",
      "password": "ZLUyJJ62ej"
      "roles": [
        {
          "idOfMicroservice": 5,
          "nameOfMicroservice": "kypo-training",
          "description": "This role will allow you to create and delete groups.",
          "role_type": "ROLE_USER",
          "id": 301
        }
      ],
    }
  ],
}

现在您可以开始使用 KYPO 创建沙箱进行测试。


参考链接


感谢您花时间查看文章详情,如果您有任何问题和建议或发现任何程序错误,请随时给我留言。非常感谢您能提供一些评论并分享任何改进建议,以便我们能够把工作做得更好~


上次编辑者:LiuYuancheng([email protected]) 于 19/07/2025,如果您有任何问题或发现任何错误,请给我留言

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENTS

0

No comment for this article.