一、应用场景

公司服务器使用阿里云,有很多后台管理系统如kibana、jenkins、Apollo配置中心等应用。为了安全,这些系统是无法从互联网访问的,为了方便管理,使用了阿里云的 负载均衡+白名单 的技术方案,这样就可以从公司通过互联网访问这些管理系统了。但公司上网IP经常变化,每次手动添加白名单很不方便。为了解决此问题,写了个脚本可以自动把当前公网IP添加到白名单中。通过定时任务的方式执行

二、配置访问控制RAM

  1. 登录:https://ram.console.aliyun.com/

  2. 策略管理 -> 自定义策略

  3. 新建授权策略:

    • 名称:AliyunSLBAddAclOnly

    • 备注:添加SLB黑白名单

    • 策略内容:

      {"Version": "1","Statement": [{"Action": "slb:AddAccessControlListEntry","Resource": "*","Effect": "Allow"}]
      }
      
  4. 用户管理 -> 新建用户。

  5. 新建用户,并生成 AccessKey,注意保存好子用户AccessKeyAccessSecret,没记录下也没关系,可以重新生成一个。

  6. 给此用户授以 AliyunSLBAddAclOnly 权限(就是上面自定义的那条策略)

三、安装python模块

pip install aliyun-python-sdk-slb requests

四、脚本内容 aliyun_slb_acl_set.py

#!/usr/bin/env python
#coding=utf-8from aliyunsdkcore import client
import time,requests
from aliyunsdkslb.request.v20140515 import AddAccessControlListEntryRequest
from aliyunsdkcore.profile import region_provider
#region_provider.modify_point('slb', '<regionId>', 'slb.<regionId>.aliyuncs.com')# 名称:阿里云负载均衡白名单自动修改脚本### 变量配置 ###
# 保存历史IP地址的文件名
file_save_ipaddr = 'ipaddr.txt'
# 一些可以获取本机出口IP的API地址
ip_api_list = 'http://icanhazip.com,http://ident.me,http://ifconfig.me,http://ipecho.net/plain,http://whatismyip.akamai.com,http://myip.dnsomatic.com'
# SLB 配置,此 Access Key 只有添加 ACL 的权限
aliyun_access_key = '<changeme>'
aliyun_access_secret = '<changeme>'
# region不清楚是不是必须和白名单在同一个区
# 在这里可以获取region:https://help.aliyun.com/document_detail/40654.html
aliyun_region = 'cn-hangzhou'
# 需要修改的ACL的ID,进入负载均衡控制台 -> 访问控制 -> 策略ID
aliyun_acl_id = ['acl-xxxxxxxxchangeme','acl-aaaaaaaachangeme2']
### 配置结束 ###def getExitIpAddr(ip_api_list):'''获取出口IP地址'''url_list = str(ip_api_list).split(',')ip = Nonefor url in url_list:resp = requests.get(url,timeout=3)if resp.status_code == 200:ip = resp.text.strip()breakreturn ipdef setAcl(access_key,access_secret,region,acl_id,ip):'''修改ACL'''clt = client.AcsClient(access_key,access_secret,region)# 设置参数request = AddAccessControlListEntryRequest.AddAccessControlListEntryRequest()request.set_accept_format('json')request.add_query_param('AclId',acl_id)request.add_query_param('RegionId',region)request.add_query_param('Tags', 'API自动添加')request.add_query_param('AclEntrys', '[{{"entry":"{ip}/32","comment":"科兴办公出口{d}"}}]'.format(ip=ip,d=time.strftime("%Y-%m-%d",time.localtime())))# 发起请求response = clt.do_action_with_exception(request)print responsedef getSavedIp(filename):'''获取已保存的IP'''try:with open(filename,'r') as f:return f.readline()except IOError,e:print "文件不存在"def saveNewIp(filename,ipaddr):'''保存新IP'''with open(filename,'w') as f:f.write(ipaddr)def main():current_ip = getExitIpAddr(ip_api_list)saved_ip = getSavedIp(file_save_ipaddr)print '当前IP',current_ipprint '保存的IP',saved_ipif current_ip == saved_ip:print 'IP无变化'exit(0)else:for acl_id in aliyun_acl_id:setAcl(access_key=aliyun_access_key,access_secret=aliyun_access_secret,region=aliyun_region,acl_id=acl_id,ip=current_ip)time.sleep(5)saveNewIp(file_save_ipaddr,current_ip)if __name__ == '__main__':main()

五、执行

python aliyun_slb_acl_set.py

结果怎么样,可以云看白名单

六、其它说明

  • 如果IP地址没发生变化,则不会请求阿里云添加IP
  • 只有添加白名单功能,过期的需要手动清理
  • 监控频率在定时任务中设置
  • 参考:https://api.aliyun.com/?#product=Slb

阿里云负载均衡白名单自动修改脚本相关推荐

  1. 一篇文章读懂阿里云负载均衡性能保障型实例

    1. 什么是负载均衡性能保障型实例? 2. 性能保障型实例如何收费? 3. 性能保障型实例规格费的定价 4. 如何选择性能保障型实例? 5. 性能保障型实例的变配操作限制 6. 性能保障型实例何时收费 ...

  2. 新功能:阿里云负载均衡SLB支持HTTP访问强制跳转HTTPS

    摘要: 很高兴的告诉大家,阿里云负载均衡SLB已经在澳大利亚(悉尼).日本(东京).阿联酋(迪拜).美国 (弗吉尼亚).美国(硅谷).马来西亚(吉隆坡).德国(法兰克福).新加坡.印度尼西亚(雅加达) ...

  3. 新功能:阿里云负载均衡SLB支持HTTP/HTTPS超时时间自定义功能

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 大家好,很高兴的告诉大家,阿里云负载均衡SLB已经在新加坡.澳大利亚(悉尼).马来西亚(吉隆坡).日本(东京).美国( ...

  4. 阿里云负载均衡(SLB)简介

    阿里云负载均衡(SLB)简介 1.SLB的概念 SLB:是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制. 2.概述 1.负载均衡通过设置虚拟服务地址,将添加的同一地域的多台 ...

  5. 阿里云负载均衡SLB配置步骤

    阿里云负载均衡--SLB,是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务.包含两种含义:一是通过流量分发,扩展应用系统的服务能力:二是消除单点故障,提高应用系统的可用性 ...

  6. 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)

    Greeting 大家好,很高兴告诉大家,阿里云负载均衡SLB支持HTTPS虚拟主机(单VIP多证书功能-SNI),目前已经在所有地域开放,欢迎大家使用.具体内容请大家观看视频. 温馨提醒:视频杀流量 ...

  7. Gartner 企业级网络设备市场份额报告:阿里云负载均衡增速全球第一

    4月8日,Gartner发布最新的全球企业级网络设备市场份额报告,阿里云负载均衡(SLB)增速全球第一,单季度营收环比增长35.1%,远超欧美传统厂商或是云服务厂商. 负载均衡被誉为IT系统的流量管家 ...

  8. 新功能:阿里云负载均衡支持HTTP/2、WSS协议

    摘要: 很高兴的告诉大家,阿里云负载均衡在欧洲中部(法兰克福)与亚太东南3(吉隆坡)地域支持HTTP/2.WSS(Web Socket Secure)协议. 1.HTTP/2协议支持 什么是HTTP/ ...

  9. 阿里云负载均衡 SLB CLB 虚拟服务器组配置

    虚拟服务器组优势 当您需要将不同的请求转发到不同的后端服务器上时,或需要通过域名和URL进行请求转发时,可以选择使用虚拟服务器组. 虚拟服务器组配置中需要注意的问题 如果一旦配置转发策略,访问非策略的 ...

最新文章

  1. 机器学习调参与贝叶斯优化及其典型python实现hyperopt
  2. 在CentOS6.8下安装Docker
  3. Java多线程-Callable和Future
  4. PHP配置文件详解php.ini
  5. How is SAP CDS metadata retrieved from GM6 frontend - text related
  6. php 显示状态,php-fpm status状态配置显示
  7. html文字如何排布成圆形,css多个扇形怎么拼凑成圆?
  8. 智能会议系统(32)---WebRTC学习之三:录音和播放
  9. 【报告分享】2020年中国在线教育创新企业榜单.pdf(附下载链接)
  10. 5G 即将带来冲击!| 畅言
  11. 2016-2017-2 20155309 南皓芯《java程序设计》第八周学习总结
  12. HCIA---华为认证初级网络工程师
  13. Oracle中insert into select和select into from的用法
  14. Java 第十一次作业
  15. 百鸡问题扩展-N鸡问题
  16. 复现ReDet RTX 3090 pytorch1.8.1
  17. vue 项目检测新版本功能
  18. 第二十三篇:Mock Kafka 消息并发送
  19. RPMS系统(4S汽车维修管理系统)
  20. ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema

热门文章

  1. .NET 开源开发项目【翻译】
  2. 渗透杂记2013-07-31
  3. 2014阿里巴巴秋季校园招聘-软件研发工程师笔试题/面试问题收集
  4. 推荐10款设计软件,全是设计大牛收藏夹里的
  5. 使用git上传本地项目到码云
  6. oXygen使用笔记:使用模板创建dita文件
  7. Wildfly 10的安装、配置到部署
  8. 为什么说破壳漏洞会带来一场全球服务器的浩劫
  9. S19文件格式详解(总结)以及与hex文件的互转
  10. app error login.php,自定义错误Think\Think::appError 设计有问题!!