云安全中心API应急漏洞扫描实战

bcfe14ad412e2e01d3bd34a89f251e74.gif

新钛云服已累计为您分享643篇技术干货

12556d52a0c3c061375a05d74c8ccd33.gif


云安全中心应急漏洞扫描

2a35178c1c0ec17ad2e6a563351b3f63.png

云安全中心是一个实时识别、分析、预警安全威胁的统一安全管理系统,通过防勒索、防病毒、防篡改、合规检查等安全能力,实现威胁检测、告警响应、攻击溯源的自动化安全运营闭环,保护云上资产和本地服务器安全,并满足监管合规要求。

前提条件配置

①子账户生成阿里云的AKSK信息,授权云安全中心权限

②python环境配置

1安装依赖
 2yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel gdbm-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel gcc-c++ libffi  zlib zlib-dev libssl-dev db4-devel libpcap-devel xz-devel
 3
 4
 5下载python3.10.4
 6wget -c  https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
 7
 8解压python3.10.4
 9tar -zxvf Python-3.10.4.tgz
10
11cd Python-3.10.4/
12./configure  --with-ssl
13make && make install
14
15备份python文件
16mv /usr/bin/python /usr/bin/python.bak
17
18#建立python3的软链接
19ln -s /usr/local/bin/python3 /usr/bin/python
20
21which pip3
22#yum执行异常解决
23vi /usr/libexec/urlgrabber-ext-down
24#! /usr/bin/python2
25
26vi /usr/bin/yum
27#!/usr/bin/python2
28
29
30安装模块
31pip3 install --upgrade pip
32pip3 install  alibabacloud_sas20181203==1.1.13
33pip install alibabacloud_tea_console
34
35如果在import ssl调式报错ImportError: cannot import name 'OPENSSL_VERSION_NUMBER' from '_ssl' (unknown location)解决办法如下
36
37#下载安装openssl
38wget -c   https://www.openssl.org/source/openssl-1.1.1n.tar.gz
39tar -zxvf openssl-1.1.1n.tar.gz
40cd openssl-1.1.1n
41./config --prefix=/usr/local/openssl   
42make && make instal
43mv /usr/bin/openssl /usr/bin/openssl.bak
44ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
45echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
46
47ldconfig -v
48
49#查询openssl版本
50openssl version
51
52vim /root/Python-3.10.4/Modules/Setup
53211  OPENSSL=/usr/local/openssl
54212  _ssl _ssl.c \
55213      -I$(OPENSSL)/include -L$(OPENSSL)/lib \
56214      -lssl -lcrypto
57
58
59最后在执行下python3.10.4安装
60cd Python-3.10.4/
61./configure  
62make && make install

一、扫描获取特定应急漏洞的名称信息

如扫描fastjson <= 1.2.80 反序列化任意代码执行漏洞

API文档 https://help.aliyun.com/document_detail/421691.html

ca22623fbdfa2586c75b94629577bcf9.png

Lang:zh

RiskStatus:y

ScanType:python

CheckType:fastjson <= 1.2.80 反序列化任意代码执行漏洞

VulName:

1{
 2  "TotalCount": 1,
 3  "RequestId": "A79C0E69-CE10-5688-8D01-7322BD3715C8",
 4  "PageSize": 5,
 5  "CurrentPage": 1,
 6  "GroupedVulItems": [
 7    {
 8      "Status": 30,
 9      "PendingCount": 116,
10      "Type": "python",
11      "Description": "fastjson已使用黑白名单用于防御反序列化漏洞,经研究该利用在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。建议fastjson用户尽快采取安全措施保障系统安全。\n\n特定依赖存在下影响 ≤1.2.80。",
12      "CheckType": 1,
13      "AliasName": "fastjson <= 1.2.80 反序列化任意代码执行漏洞【原理扫描】",
14      "GmtLastCheck": 1653471386000,
15      "GmtPublish": 1653273837000,
16      "Name": "emg:SCA:AVD-2022-1243027"
17    }
18  ]
19}

得到特定应急漏洞名称信息为emg:SCA:AVD-2022-1243027

pip install alibabacloud_sas20181203==1.1.13

pip install alibabacloud_tea_console

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_sas20181203.client import Client as Sas20181203Client
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_sas20181203 import models as sas_20181203_models
11from alibabacloud_tea_util import models as util_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> Sas20181203Client:
25        """
26        使用AK&SK初始化账号Client
27        @param access_key_id:
28        @param access_key_secret:
29        @return: Client
30        @throws Exception
31        """
32        config = open_api_models.Config(
33            # 您的AccessKey ID,
34            access_key_id='LTAI5t',
35            # 您的AccessKey Secret,
36            access_key_secret='dSr'
37        )
38        # 访问的域名
39        config.endpoint = f'tds.aliyuncs.com'
40        return Sas20181203Client(config)
41
42    @staticmethod
43    def main(
44        args: List[str],
45    ) -> None:
46        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
47        describe_emg_vul_item_request = sas_20181203_models.DescribeEmgVulItemRequest(
48            lang='zh',
49            risk_status='y',
50            scan_type='python',
51            vul_name='fastjson <= 1.2.80 反序列化任意代码执行漏洞'
52        )
53        runtime = util_models.RuntimeOptions()
54        resp = client.describe_emg_vul_item_with_options(describe_emg_vul_item_request, runtime)
55        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
56
57    @staticmethod
58    async def main_async(
59        args: List[str],
60    ) -> None:
61        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
62        describe_emg_vul_item_request = sas_20181203_models.DescribeEmgVulItemRequest(
63            lang='zh',
64            risk_status='y',
65            scan_type='python',
66            vul_name='fastjson <= 1.2.80 反序列化任意代码执行漏洞'
67        )
68        runtime = util_models.RuntimeOptions()
69        resp = await client.describe_emg_vul_item_with_options_async(describe_emg_vul_item_request, runtime)
70        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
71
72
73if __name__ == '__main__':
74    Sample.main(sys.argv[1:])

二、根据特定的应急漏洞执行扫描任务

Lang:zh

Name:emg:SCA:AVD-2022-1243027

UserAgreement:yes

1{
2  "RequestId": "08744049-2F38-54BF-A7E7-529B5226AC9E"
3}

ff5deafcb673037cb7e0cd44de11783b.png

pip install alibabacloud_sas20181203==1.1.13

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_sas20181203.client import Client as Sas20181203Client
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_sas20181203 import models as sas_20181203_models
11from alibabacloud_tea_util import models as util_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> Sas20181203Client:
25        """
26        使用AK&SK初始化账号Client
27        @param access_key_id:
28        @param access_key_secret:
29        @return: Client
30        @throws Exception
31        """
32        config = open_api_models.Config(
33            # 您的AccessKey ID,
34            access_key_id='LTAI5t',
35            # 您的AccessKey Secret,
36            access_key_secret='dS'
37        )
38        # 访问的域名
39        config.endpoint = f'tds.aliyuncs.com'
40        return Sas20181203Client(config)
41
42    @staticmethod
43    def main(
44        args: List[str],
45    ) -> None:
46        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
47        modify_emg_vul_submit_request = sas_20181203_models.ModifyEmgVulSubmitRequest(
48            lang='zh',
49            name='emg:SCA:AVD-2022-1243027',
50            user_agreement='yes'
51        )
52        runtime = util_models.RuntimeOptions()
53        resp = client.modify_emg_vul_submit_with_options(modify_emg_vul_submit_request, runtime)
54        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
55
56    @staticmethod
57    async def main_async(
58        args: List[str],
59    ) -> None:
60        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
61        modify_emg_vul_submit_request = sas_20181203_models.ModifyEmgVulSubmitRequest(
62            lang='zh',
63            name='emg:SCA:AVD-2022-1243027',
64            user_agreement='yes'
65        )
66        runtime = util_models.RuntimeOptions()
67        resp = await client.modify_emg_vul_submit_with_options_async(modify_emg_vul_submit_request, runtime)
68        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
69
70
71if __name__ == '__main__':
72    Sample.main(sys.argv[1:])

执行脚本发现阿里云的云安全中心应急漏洞fastjson <= 1.2.80 反序列化任意代码执行漏洞开始执行扫描任务计划

三、应急漏洞全部扫描

Types:"emg"

Uuids:

1cve:Linux软件漏洞
2sys:Windows系统漏洞
3cms:Web-CMS漏洞
4app:应用漏洞
5emg:应急漏洞
6image:容器镜像漏洞

16e5b8648c689c719698601801715f79.png

pip install alibabacloud_sas20181203==1.1.13

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_sas20181203.client import Client as Sas20181203Client
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_sas20181203 import models as sas_20181203_models
11from alibabacloud_tea_util import models as util_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> Sas20181203Client:
25        """
26        使用AK&SK初始化账号Client
27        @param access_key_id:
28        @param access_key_secret:
29        @return: Client
30        @throws Exception
31        """
32        config = open_api_models.Config(
33            # 您的AccessKey ID,
34            access_key_id='LTAI5t',
35            # 您的AccessKey Secret,
36            access_key_secret='dSr'
37        )
38        # 访问的域名
39        config.endpoint = f'tds.aliyuncs.com'
40        return Sas20181203Client(config)
41
42    @staticmethod
43    def main(
44        args: List[str],
45    ) -> None:
46        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
47        modify_start_vul_scan_request = sas_20181203_models.ModifyStartVulScanRequest(
48            types='"emg"'
49        )
50        runtime = util_models.RuntimeOptions()
51        resp = client.modify_start_vul_scan_with_options(modify_start_vul_scan_request, runtime)
52        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
53
54    @staticmethod
55    async def main_async(
56        args: List[str],
57    ) -> None:
58        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
59        modify_start_vul_scan_request = sas_20181203_models.ModifyStartVulScanRequest(
60            types='"emg"'
61        )
62        runtime = util_models.RuntimeOptions()
63        resp = await client.modify_start_vul_scan_with_options_async(modify_start_vul_scan_request, runtime)
64        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
65
66
67if __name__ == '__main__':
68    Sample.main(sys.argv[1:])

执行完脚本后应急漏洞服务全部开始扫描计划任务

四、导出应急漏洞列表信息

API文档信息   ExportVul - 导出漏洞列表 (aliyun.com)

Lang:zh

Type:emg

Uuids:

AliasName:fastjson <= 1.2.80 反序列化任意代码执行漏洞

Necessity:asap

Dealed:n

9d21ad67b96f8270105d9b3657ef4fcf.png

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_sas20181203.client import Client as SasClient
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_darabonba_env.client import Client as EnvClient
11from alibabacloud_sas20181203 import models as sas_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> SasClient:
25        """
26        使用AK&SK初始化账号Client
27        """
28        config = open_api_models.Config()
29        # 您的AccessKey ID
30        config.access_key_id = 'LTAI5t'
31        # 您的AccessKey Secret
32        config.access_key_secret = 'dSrH3z'
33        config.endpoint = 'tds.aliyuncs.com'
34        return SasClient(config)
35
36    @staticmethod
37    def main(
38        args: List[str],
39    ) -> None:
40        client = Sample.create_client(EnvClient.get_env('ACCESS_KEY_ID'), EnvClient.get_env('ACCESS_KEY_SECRET'))
41        export_request = sas_models.ExportVulRequest(
42            lang='zh',
43            type='emg',
44            alias_name='fastjson <= 1.2.80 反序列化任意代码执行漏洞',
45            necessity='asap',
46            dealed='n'
47        )
48        export_response = client.export_vul(export_request)
49        ConsoleClient.log(f'response  is {UtilClient.to_jsonstring(TeaCore.to_map(export_response.body))}')
50
51    @staticmethod
52    async def main_async(
53        args: List[str],
54    ) -> None:
55        client = Sample.create_client(EnvClient.get_env('ACCESS_KEY_ID'), EnvClient.get_env('ACCESS_KEY_SECRET'))
56        export_request = sas_models.ExportVulRequest(
57            lang='zh',
58            type='emg',
59            alias_name='fastjson <= 1.2.80 反序列化任意代码执行漏洞',
60            necessity='asap',
61            dealed='n'
62        )
63        export_response = await client.export_vul_async(export_request)
64        ConsoleClient.log(f'response  is {UtilClient.to_jsonstring(TeaCore.to_map(export_response.body))}')
65
66
67if __name__ == '__main__':
68    Sample.main(sys.argv[1:])

得到值为

1[LOG] response  is {"FileName": "emg_20220526", "Id": 102889, "RequestId": "A15E37DA-10C8-542D-8D59-CCCB5E6837E4"}
1在执行脚本的时候可以通过过滤id号得到漏洞导出任务的ID信息,最后得到值为102889
2
3python3 exportall.py  | grep \"Id\" | awk -F\: '{print $3}' |  awk -F\, '{print $1}'
4

通过ExportId的102889获取文件下载

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_sas20181203.client import Client as SasClient
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_darabonba_env.client import Client as EnvClient
11from alibabacloud_sas20181203 import models as sas_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> SasClient:
25        """
26        使用AK&SK初始化账号Client
27        """
28        config = open_api_models.Config()
29        # 您的AccessKey ID
30        config.access_key_id = 'LTAI'
31        # 您的AccessKey Secret
32        config.access_key_secret = 'dSrH'
33        config.endpoint = 'tds.aliyuncs.com'
34        return SasClient(config)
35
36    @staticmethod
37    def main(
38        args: List[str],
39    ) -> None:
40        client = Sample.create_client(EnvClient.get_env('ACCESS_KEY_ID'), EnvClient.get_env('ACCESS_KEY_SECRET'))
41        export_request = sas_models.ExportVulRequest(
42            type='cve'
43        )
44        export_response = client.export_vul(export_request)
45        body = export_response.body
46        export_info_id = body.id
47        vul_export_info_request = sas_models.DescribeVulExportInfoRequest(
48            export_id=102889
49        )
50        info_detail_response = client.describe_vul_export_info(vul_export_info_request)
51        ConsoleClient.log(f'response  is {UtilClient.to_jsonstring(TeaCore.to_map(info_detail_response.body))}')
52
53    @staticmethod
54    async def main_async(
55        args: List[str],
56    ) -> None:
57        client = Sample.create_client(EnvClient.get_env('ACCESS_KEY_ID'), EnvClient.get_env('ACCESS_KEY_SECRET'))
58        export_request = sas_models.ExportVulRequest(
59            type='cve'
60        )
61        export_response = await client.export_vul_async(export_request)
62        body = export_response.body
63        export_info_id = body.id
64        vul_export_info_request = sas_models.DescribeVulExportInfoRequest(
65            export_id=102889
66        )
67        info_detail_response = await client.describe_vul_export_info_async(vul_export_info_request)
68        ConsoleClient.log(f'response  is {UtilClient.to_jsonstring(TeaCore.to_map(info_detail_response.body))}')
69
70
71if __name__ == '__main__':
72    Sample.main(sys.argv[1:])
1执行脚本得到附件的下载链接
2python exportfile.py  |  awk -F\"Link\":   '{print $2}'  |   awk -F\, '{print $1}'  | xargs  wget  -O "emg_$(date +%Y%m%d).zip" 
3

可以把zip文件解压后上传到oss存储中,通过脚本钉钉推送到指定群通知或者邮件推送指定的人

1钉钉推送如下
 2wget https://gosspublic.alicdn.com/ossutil/1.7.9/ossutil64 
 3chmod 755 ossutil64
 4
 5
 6./ossutil64 config
 7./ossutil64 ls oss://examplebucket -c /home/config
 8
 9
10vim vulnerabilityDingtack.sh
11#!/bin/bash
12
13UPLOAD_TIME=$(date "+%Y%m%d")
14curl 'https://oapi.dingtalk.com/robot/send?access_token=88c98f36028d0564c' \
15-H 'Content-Type: application/json' \
16-d '{
17"msgtype": "link",
18"link": {
19"text":"应急安全漏洞 \n",
20"title": "应急安全漏洞报告",
21"picUrl": "https://vulnerability.oss-cn-shanghai.aliyuncs.com/vulnerability/vulnerability.png",
22"messageUrl": "https://vulnerability.oss-cn-shanghai.aliyuncs.com/vulnerability/emg_'${UPLOAD_TIME}'.xlsx"
23}
24}'
25
26echo "---------上传到OSS--------------------"
27ALI_OSS_ENDPOINT="oss-cn-shanghai.aliyuncs.com"
28ALI_OSS_AK="LTAI5"
29ALI_OSS_SK="dSrH3z"
30WORKSPACE=/opt/kingen
31
32#打开oss命令文件夹
33cd ${WORKSPACE}/
34#配置oss
35./ossutil64 config -e ${ALI_OSS_ENDPOINT} -i ${ALI_OSS_AK} -k ${ALI_OSS_SK}
36unzip  emg_${UPLOAD_TIME}.zip
37#上传xlsx到oss
38./ossutil64 cp "./emg_${UPLOAD_TIME}.xlsx"  "oss://backups/vulnerability/"

来个开胃小菜

阿里云CDN刷新目录脚本(刷新之前更换AKSK秘钥,替换object_path刷新的网站URL地址)

pip install alibabacloud_cdn20180510==1.0.11

1# -*- coding: utf-8 -*-
 2# This file is auto-generated, don't edit it. Thanks.
 3import sys
 4
 5from typing import List
 6from Tea.core import TeaCore
 7
 8from alibabacloud_cdn20180510.client import Client as Cdn20180510Client
 9from alibabacloud_tea_openapi import models as open_api_models
10from alibabacloud_cdn20180510 import models as cdn_20180510_models
11from alibabacloud_tea_util import models as util_models
12from alibabacloud_tea_console.client import Client as ConsoleClient
13from alibabacloud_tea_util.client import Client as UtilClient
14
15
16class Sample:
17    def __init__(self):
18        pass
19
20    @staticmethod
21    def create_client(
22        access_key_id: str,
23        access_key_secret: str,
24    ) -> Cdn20180510Client:
25        """
26        使用AK&SK初始化账号Client
27        @param access_key_id:
28        @param access_key_secret:
29        @return: Client
30        @throws Exception
31        """
32        config = open_api_models.Config(
33            # 您的AccessKey ID,
34            access_key_id=access_key_id,
35            # 您的AccessKey Secret,
36            access_key_secret=access_key_secret
37        )
38        # 访问的域名
39        config.endpoint = f'cdn.aliyuncs.com'
40        return Cdn20180510Client(config)
41
42    @staticmethod
43    def main(
44        args: List[str],
45    ) -> None:
46        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
47        refresh_object_caches_request = cdn_20180510_models.RefreshObjectCachesRequest(
48            object_path='https://uat.abc.com/',
49            object_type='Directory'
50        )
51        runtime = util_models.RuntimeOptions()
52        resp = client.refresh_object_caches_with_options(refresh_object_caches_request, runtime)
53        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
54
55    @staticmethod
56    async def main_async(
57        args: List[str],
58    ) -> None:
59        client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')
60        refresh_object_caches_request = cdn_20180510_models.RefreshObjectCachesRequest(
61            object_path='https://club-admin-7788-uat.apta.com.hk/',
62            object_type='Directory'
63        )
64        runtime = util_models.RuntimeOptions()
65        resp = await client.refresh_object_caches_with_options_async(refresh_object_caches_request, runtime)
66        ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
67
68
69if __name__ == '__main__':
70    Sample.main(sys.argv[1:])

成功给https://uat.abc.com网站目录刷新。

了解新钛云服

新钛云服荣膺第四届FMCG零售消费品行业CIO年会「年度数字化服务最值得信赖品牌奖」

新钛云服三周岁,公司月营收超600万元,定下百年新钛的发展目标

当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

往期技术干货

Kubernetes扩容到7,500节点的历程

低代码开发,全民开发,淘汰职业程序员!

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

3010646c5ae0fe727ee80cd76c897218.gif

点👇分享

98d95baff201bab23d83ca9dc85cd942.gif

戳👇在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值