Apollo批量给新创建的用户授可编辑权限
背景:
我们要在Apollo中批量给新创建的用户授可编辑权限
apollo系统版本: java-2.1.0
管理员账号:Apollo
可编辑账号:guoyabin
过程:
在没写这段代码的时候从网上搜了一些文章如下:
apollo_adminservice、apollo_configservice改成自己的域名,在不知道用户密码的前提下可以获取cluster、app_ids、namespaces的脚本。
# !/usr/bin/env python
# -*-coding:utf-8 -*- """
# File : apollo.py
# Time :2023/6/6/006 11:01
# Author :GuoYabin
# version :python 3.8
# Description:利用apollo_adminservice的8090和apollo_configservice的8080
获取所有Apollo环境/appid/cluster
"""
import json
import time
import requests
from urllib.parse import urlparse def get_response(uri):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20200101 Firefox/60.0",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "close"
}
return requests.get(uri, headers=headers, timeout=20, allow_redirects=False) def get_app_ids(uri):
print(uri)
app_ids = []
response = get_response("{}/apps".format(uri))
html = response.text
print(html)
if response.status_code == 200:
for app in json.loads(html):
app_ids.append(app.get("appId"))
return app_ids def get_clusters(uri, app_ids):
clusters = {}
for app_id in app_ids:
clusters[app_id] = []
response = get_response("{}/apps/{}/clusters".format(uri, app_id))
html = response.text
if response.status_code == 200:
for app in json.loads(html):
clusters[app_id].append(app.get("name"))
return clusters def get_namespaces(uri, app_ids, clusters):
namespaces = {}
for app_id in app_ids:
namespaces[app_id] = []
for cluster in clusters[app_id]:
url = "{}/apps/{}/clusters/{}/namespaces".format(uri, app_id, cluster)
response = get_response(url)
html = response.text
if response.status_code == 200:
for app in json.loads(html):
namespaces[app_id].append(app.get("namespaceName"))
return namespaces def get_configurations(uri, app_ids, clusters, namespaces):
configurations = []
for app_id in app_ids:
for cluster in clusters[app_id]:
for namespace in namespaces[app_id]:
key_name = "{}-{}-{}".format(app_id, cluster, namespace)
url = "{}/configs/{}/{}/{}".format(uri, app_id, cluster, namespace)
response = get_response(url)
code = response.status_code
html = response.text
print("[+] get {} configs, status: {}".format(url, code))
time.sleep(1)
if code == 200:
configurations.append({key_name: json.loads(html)})
return configurations if __name__ == "__main__":
apollo_adminservice = "http://192.168.40.185:8090"
apollo_configservice = "http://192.168.40.185:8080" scheme0, netloc0, path0, params0, query0, fragment0 = urlparse(apollo_adminservice)
host0 = "{}://{}".format(scheme0, netloc0) _ids = get_app_ids(host0)
print("All appIds:")
print(_ids) _clusters = get_clusters(host0, _ids)
print("\nAll Clusters:")
print(_clusters) _namespaces = get_namespaces(host0, _ids, _clusters)
print("\nAll Namespaces:")
print(_namespaces)
print() scheme1, netloc1, path1, params1, query1, fragment1 = urlparse(apollo_configservice)
host1 = "{}://{}".format(scheme1, netloc1)
_configurations = get_configurations(host1, _ids, _clusters, _namespaces)
print("\nresults:\n")
print(_configurations)
解决方法:
下面我们自己写一个批量授权的方法、使用管理员apollo给guoyabin账号授权,允许guoyabin账号可以编辑,但无法发布权限。
# !/usr/bin/env python
# -*-coding:utf-8 -*- """
# File : apollo.py
# Time :2023/6/6/006 11:01
# Author :GuoYabin
# version :python 3.8
# Description:模拟Apollo登陆,获取所有envs/appid添加guoyabin账号编辑权限
""" import requests
import json class apollo:
def __init__(self):
self.username = "apollo"
self.password = "*********"
self.apollourl = "http://**************"
self.addauth = "guoyabin"
self.session = requests.session()
self.headers = self.setheaders() def login(self):
url = '{}/signin'.format(self.apollourl)
payload = {
"username": self.username,
"password": self.password,
"login-submit": "登录"
}
self.session.post(url=url,data=payload)
res = self.session.cookies
return (res.get_dict()['SESSION']) def setheaders(self):
session = self.login()
myheaders = {
"Accept": "application/json, text/plain, */*",
"Cookie": "Hm_lvt_488a0e7e13b847119c47d080b3dc7272=1677469471; NG_TRANSLATE_LANG_KEY=zh-CN; SESSION={0}".format(session),
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
}
return (myheaders) def getenvs(self):
url = 'http://{}/envs'.format(self.apollourl)
head = self.headers
res = requests.get(url=url,headers=head)
return (res.text) def getappid(self):
url = 'http://{}/apps'.format(self.apollourl)
params = {'page': 0}
res = requests.get(url, params=params,headers=self.headers)
date = json.loads(res.text)
allapp = [d['appId'] for d in date]
return (allapp) def addauth(self,appid):
uri = 'http://{0}/apps/{1}/namespaces/application/roles/ModifyNamespace'.format(self.apollourl,appid)
playload = self.addauth
try:
response = requests.post(url=uri,data=playload,headers=self.headers)
response.raise_for_status()
except requests.exceptions.HTTPError as error:
json_data = error.response.json()
error_message = json_data['message']
print(appid,error_message) if __name__ == '__main__':
apollo_obj = apollo()
for i in apollo_obj.getappid():
apollo_obj.addauth(i)
Apollo批量给新创建的用户授可编辑权限的更多相关文章
- Oracle 创建普通用户,并赋予权限
采用sys or system / manager as sysdba; 连接数据库. 创建普通用户konglin: create user konglin identified by pwd_ora ...
- mysql创建本地用户及赋予数据库权限的方法示例
大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也是类似 ...
- 给新创建的用户 赋予所有的权利 *.* 查看权限 删除用户 ---------DCL用户权限管理篇
第一步:进入数据库以后,先用 show databases; 再use mysql; 再 show tables; 再 select user,host from mysql.user; ...
- deepin 新创建的用户文件管理中挂载点打不开
使用 root 用户可以打开,但是使用非 root 用户打不开 原因是权限不够 test1@test1-PC:~$ cd /media/ test1@test1-PC:/media$ ls apt c ...
- centos上为新创建的用户(git)指定根目录并生成公钥和私钥
1.修改用户的根目录 vim /etc/passed 2.su git 3.ssh-keygen -t rsa ssh-keygen -t rsa 4.如图所示,如果要实现无密码访问git仓库,把公钥 ...
- 为Ubuntu新创建用户创建默认.bashrc并自动加载
首先,su – 到新创建的用户 拷贝默认的.bashrc过来 1 cp /etc/skel/.bashrc ~/ 然后创建.profile文件 1 vi ~/.profile 粘贴下面的内容 ...
- oracle 创建一个用户,并且设定只能访问指定的对象
出处:http://www.cnblogs.com/BetterWF/archive/2012/07/03/2574416.html 今天在开发接口时候,需要给接口开发公司提供一个ORACLE 用户, ...
- sql server 2008 数据库管理系统使用SQL语句创建登录用户详细步骤
--服务器角色:--固定服务器角色具有一组固定的权限,并且适用于整个服务器范围. 它们专门用于管理 SQL Server,且不能更改分配给它们的权限. --可以在数据库中不存在用户帐户的情况下向固定服 ...
- 第一安装oracle数据库后,需要创建一个用户,给用户解锁并赋予权限
1.第一次安装oracle数据库应该做的事情. 注: 1.安装oracle后需要创建用户,连接数据库,(注意数据库名,还有好像后面的 ":"也有影响) 2.解锁用户, 3.授予新登 ...
- Linux下useradd命令创建的用户不能登录的问题
Linux下useradd命令创建的用户不能登录的问题 问题: 用useradd命令新创建一个用户tester 密码pwdtest mkdir -p /home/tester(创建文件夹) user ...
随机推荐
- 使用学生优惠创建 Azure Database for MySQL 数据库
前言 在此之前,你需要拥有一个已通过学生认证的 Azure 账户.关于通过 Azure 学生认证,网上已有大量教程,此处不再赘述. 前些日子认证通过了 Azure 的学生认证,在部署此网站时发现 Az ...
- 一站式解决方案 :OFD电子证照生成
前言 证照的电子化是一个趋势:可以预计,未来几年内,绝大部分证照都会电子化.电子证照的种类越来越多,应用场景也复杂多样:这就给电子证照规范的制定.电子证照的生成提出了更高的要求.电子证照采用的格式有两 ...
- 深入解析 Spring AI 系列:以OpenAI与Moonshot案例为例寻找共同点
今天,我们将重点探讨对接的业务逻辑.为了帮助大家更直观地掌握其中的规律性,我将通过对比OpenAI与<月之暗面>中的Moonshot两个案例来阐述这一点.通过这样的对比,大家可以更清晰地看 ...
- 15个Linux Grep命令使用实例(实用、常用)
Grep命令主要用于从文件中查找指定的字符串.首先建一个demo_file: 复制代码 代码如下: $ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LIN ...
- 系统提示msvcp120.dll丢失如何解决
最近有位win7系统用户反映,自己安装完游戏开始玩的时候,系统却提示:示msvcp120.dll丢失,这导致了游戏无法正常运行,这让用户很是苦恼,不知道电脑如何解决,为此非常苦恼,那么win7系统提示 ...
- python读取excel的文件
1.安装依赖包,并且导入 pip install xlrd import xlrd 2.打开文件 path = r"C:\Users\xiao\Desktop\服务体系.xls" ...
- Practical Secure Aggregation for Privacy-Preserving Machine Learning
1 介绍 本文是谷歌团队发在CCS2017上的文章,旨在解决联邦学习中安全聚合的问题. 安全聚合:多方参与者将信息传递给聚合者,聚合者除了知道这个信息的总和不能知道任何一个特定参与者的信息. 在这篇文 ...
- ZUC-S盒输入输出测试
问题 实现以二进制.十进制.十六进制的形式输入,经过S盒,输出十六进制 输入: 1.二进制:10001010010011110000011110111101 2.十进制:2320435133 3.十六 ...
- 京东h5st参数js逆向
扣代码的环节挺简单的就不讲了 直接到重点 发现许多包都会有一个h5st的加密参数 那么我们就要看这个参数是怎么生成的 我们可以根据请求堆栈 找到h5st的入口 当然还有一种更简单的方法 就是直接全局搜 ...
- React中的数据流管理
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 前言 为什么数据流管理重要? React 的核心思想 ...