专栏首页k8s_istio自动将本机 IP 添加为腾讯云安全组白名单:Golang
原创

自动将本机 IP 添加为腾讯云安全组白名单:Golang

一般登陆云服务器都限制来源 IP,添加白名单较为繁琐,通过接口可以快速添加。

# ./addWhiteIP
{"Response":{"RequestId":"c89ddf9df-738c-4f2a-9f02-dcd3cfe8c852"}}
Outer IP : 134.175.159.160

1. 准备代码

直接用接口修改安全组存在风险,可以使用安全组的 参数模板,新建一个参数模板,在安全组中引用,这样每次变更只影响安全组中的一行。

image.png

安全组 中引用即可。

image.png

请参照 腾讯云的 API explorer 生成对应的代码。

以下有四处内容需要修改为你的信息。

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
	vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
)

// VPC 中添加 IP组的方式管理安全组

func main() {

	credential := common.NewCredential(
		"<SecretId>",  // **1. 请替换为你的腾讯云 SecretId**
		"<SecretKey>", // **2. 请替换为你的腾讯云 SecretKey**
	)
	cpf := profile.NewClientProfile()
	cpf.HttpProfile.Endpoint = "vpc.tencentcloudapi.com"
	client, _ := vpc.NewClient(credential, "<Region>", cpf) // **3. 请替换为可用区ID,例如 ap-guangzhou**

	request := vpc.NewModifyAddressTemplateAttributeRequest()

	responseClient, errClient := http.Get("http://ip.dhcp.cn/?ip") // 获取外网 IP
	if errClient != nil {
		fmt.Printf("获取外网 IP 失败,请检查网络\n")
		panic(errClient)
	}
	// 程序在使用完 response 后必须关闭 response 的主体。
	defer responseClient.Body.Close()

	body, _ := ioutil.ReadAll(responseClient.Body)

	clientIP := fmt.Sprintf("%s", string(body))
	clientIP = strings.Replace(clientIP, "\n", "", -1)

	params := fmt.Sprintf("{\"AddressTemplateId\":\"<AddressTemplateId>\",\"Addresses\":[\"%s\"]}", clientIP) // **4. 请将 AddressTemplateId 替换为参数模板 ID**
	err := request.FromJsonString(params)
	if err != nil {
		panic(err)
	}
	response, err := client.ModifyAddressTemplateAttribute(request)
	if _, ok := err.(*errors.TencentCloudSDKError); ok {
		fmt.Printf("An API error has returned: %s", err)
		return
	}
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s", response.ToJsonString())
	fmt.Printf("\nOuter IP : %s\n", clientIP)

}

2. 编译

# go build addWhiteIP.go

3. 执行

每次需要添加安全组之前,之前运行程序即可。

# ./addWhiteIP
{"Response":{"RequestId":"c89ddf9df-738c-4f2a-9f02-dcd3cfe8c852"}}
Outer IP : 134.175.159.160

为了更方便,还可以把该程序添加到系统的环境变量中。

reference

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 腾讯云 Elasticsearch 运维篇(十五)实现Elasticsearch 基于白名单设置的公网访问

    腾讯云 Elasticsearch是一个搭建于云平台下的存储、搜索、分析引擎,可以预见它的安全性在企业中的位置是非常重要的。所以,一般我们不对外网暴露其...

    南非骆驼说大数据
  • HTTP后台服务拥抱HTTPS方案

    自学微信小程序时,看到小程序现在只支持https了。而且现在chrome中浏览http的网站,网址前都会直接显示“不安全”字样。http是明文传输,相当于所有信...

    J_J
  • 小试牛刀:基于Golang的腾讯云Serverless使用体验

    | 导语:Serverless符合云计算发展的方向,把用户关注点放在业务功能上,屏蔽底层网络框架、计算资源和机器运维等细节。这里基于Golang试了一把腾讯云S...

    王昂
  • 小白安装Discuz!Q教程,学不会你过来打我!

    你知道吗?小白也可以安装Discuz!Q啦!你不需要敲代码也不用懂太多的技术,严格按照下面的安装教程操作,就可以成功安装上Discuz!Q。 在开始之前,我们...

    腾讯云DNSPod团队
  • 【云+社区年度征文】腾讯防疫健康码-远程协作环境优化

    由于年初新冠疫情爆发,我参与了腾讯防疫健康码的项目研发工作中。疫情健康码项目无疑是非常成功的,它覆盖9亿+人口和300+市县。但是项目的研发过程确实非常艰辛,该...

    二木
  • 云主机安全 - 基础篇

    云厂商提供的按需按量付费的云主机,对中小企业、个人用户来说,其低成本、高可靠以及易管理性,是非常有吸引力的,但是,千万别忽视云主机面临的安全威胁 -- 公有云上...

    Kendiv
  • Rocke黑客组织活动分析

    通过分析2018年12月至2019年6月16日的NetFlow数据,我们发现调查目标中28.1%的云环境与Rocke控制(C2)域有过网络通信数据。其中一些还保...

    FB客服
  • K8S实战:部署一个获取 HTTP Header 程序到 K8S

    通过实战能更好的理解 K8S、istio,这里将开发一个 golang 程序,将其部署到 K8S中,并通过 istio 做流量调度。

    k8s入门教程
  • 腾讯云服务器宙斯盾安全防护相关概念及安全产品概述

    腾讯云宙斯盾安全防护(Aegis Anti-DDoS)基于腾讯海量业务十余年安全技术积累,为业务提供多层级全方位、高性价比的应对 DDoS 攻击威胁的防护方案,...

    用户5915142

扫码关注云+社区

领取腾讯云代金券