前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动将本机 IP 添加为腾讯云安全组白名单:Golang

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

原创
作者头像
SRE扫地僧
修改2021-07-19 07:01:15
3.8K0
修改2021-07-19 07:01:15
举报
文章被收录于专栏:k8s_istiok8s_istio

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

代码语言:txt
复制
# ./addWhiteIP
{"Response":{"RequestId":"c89ddf9df-738c-4f2a-9f02-dcd3cfe8c852"}}
Outer IP : 134.175.159.160

1. 准备代码

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

image.png
image.png

安全组 中引用即可。

image.png
image.png

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

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

代码语言:txt
复制
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"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>",  // 请替换为你的腾讯云 SecretId
		"<SecretKey>", // 请替换为你的腾讯云 SecretKey
	)
	cpf := profile.NewClientProfile()
	cpf.HttpProfile.Endpoint = "vpc.tencentcloudapi.com"
	client, _ := vpc.NewClient(credential, "<Region>", cpf) // 请替换为可用区ID,例如 ap-guangzhou

	request := vpc.NewModifyAddressTemplateAttributeRequest()

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

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

	clientIP := string(body)
	params := fmt.Sprintf("{\"AddressTemplateId\":\"<AddressTemplateId>\",\"Addresses\":[\"%s\"]}", clientIP) // 请将 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. 编译

代码语言:txt
复制
# go build addWhiteIP.go

3. 执行

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

代码语言:txt
复制
# ./addWhiteIP
{"Response":{"RequestId":"c89ddf9df-738c-4f2a-9f02-dcd3cfe8c852"}}
Outer IP : 134.175.159.160

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

reference

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 准备代码
  • 2. 编译
  • 3. 执行
  • reference
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档