[英]Any idea of how to list gcp service account keys using python
I need a list of all service account keys in all gcp projects within an organization.我需要组织内所有 gcp 项目中所有服务帐户密钥的列表。 What i am looking for is a list of user managed service account keys that are active...Below is the code i am using
我正在寻找的是活动的用户管理服务帐户密钥列表......下面是我正在使用的代码
Not sure what is missing, i don't see user managed service account keys, i only see system managed.不确定缺少什么,我没有看到用户管理的服务帐户密钥,我只看到系统管理的。 How can i get a list of user managed service account keys??
我如何获得用户管理的服务帐户密钥列表?
You're calling the projects.serviceAccounts.keys.list method with an (optional?) KeyType
of SYSTEM_MANAGED
but you want USER_MANAGED
您正在使用
SYSTEM_MANAGED
的(可选?) KeyType
调用projects.serviceAccounts.keys.list方法,但您想要USER_MANAGED
I encourage you to jettison all the subprocess
stuff.我鼓励你放弃所有
subprocess
的东西。 It's entirely redundant, makes your code unnecessary complex and problematic.它完全是多余的,使您的代码变得不必要的复杂和有问题。
import google.auth
from googleapiclient import discovery
credentials, project = google.auth.default()
crm = discovery.build(
"cloudresourcemanager",
"v1",
credentials=credentials
)
iam = discovery.build(
"iam",
"v1",
credentials=credentials
)
projects_list_rqst = crm.projects().list()
while projects_list_rqst is not None:
projects_list_resp = projects_list_rqst.execute()
projects = projects_list_resp.get("projects",[])
for project in projects:
project_id = project["projectId"]
print(f"Project: {project_id}")
name="projects/{project_id}".format(project_id=project_id)
sa_list_rqst = iam.projects().serviceAccounts().list(
name=name
)
while sa_list_rqst is not None:
sa_list_resp = sa_list_rqst.execute()
accounts = sa_list_resp.get("accounts",[])
for account in accounts:
name=account["name"]
print(f"\tAccount: {name}")
keys_list_rqst = iam.projects().serviceAccounts().keys().list(
name=name,
keyTypes="USER_MANAGED"
)
keys_list_resp = keys_list_rqst.execute()
keys = keys_list_resp.get("keys",[])
for key in keys:
name=key["name"]
print(f"\t\tKey: {name}")
sa_list_rqst = iam.projects().serviceAccounts().list_next(
previous_request=sa_list_rqst,
previous_response=sa_list_resp
)
projects_list_rqst = crm.projects().list_next(
previous_request=projects_list_rqst,
previous_response=projects_list_resp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.