Island: Fix credential collector parsing for SSH

This commit is contained in:
Ilija Lazoroski 2022-02-17 19:33:47 +01:00 committed by vakarisz
parent c96674f834
commit b224348881
2 changed files with 14 additions and 8 deletions

View File

@ -23,17 +23,21 @@ IDENTITY_PROCESSORS = {
def parse_credentials(credentials: dict):
for credential in credentials["credentials"]:
if is_ssh_keypair(credentials):
IDENTITY_PROCESSORS[CredentialsType.SSH_KEYPAIR](credential, credentials["monkey_guid"])
for credential in credentials["data"]:
if is_ssh_keypair(credential):
SECRET_PROCESSORS[CredentialsType.SSH_KEYPAIR](credential, credentials["monkey_guid"])
else:
for identity in credential["identities"]:
IDENTITY_PROCESSORS[identity["type"]](identity)
IDENTITY_PROCESSORS[identity["credential_type"]](identity)
for secret in credential["secrets"]:
SECRET_PROCESSORS[secret["type"]](secret)
SECRET_PROCESSORS[secret["credential_type"]](secret)
def is_ssh_keypair(credentials: dict) -> bool:
def is_ssh_keypair(credential: dict) -> bool:
return bool(
filter(credentials["secrets"], lambda secret: secret["type"] == CredentialsType.SSH_KEYPAIR)
filter(
lambda secret: secret["credential_type"] == CredentialsType.SSH_KEYPAIR,
credential["secrets"],
)
)

View File

@ -17,7 +17,7 @@ def process_ssh_key(credentials: dict, monkey_guid: str):
)
for ssh_key in credentials["secrets"]:
if not ssh_key["type"] == CredentialsType.SSH_KEYPAIR:
if not ssh_key["credential_type"] == CredentialsType.SSH_KEYPAIR.name:
raise SSHKeyProcessingError("SSH credentials contain secrets that are not keypairs")
if not ssh_key["public_key"] or not ssh_key["private_key"]:
@ -27,6 +27,8 @@ def process_ssh_key(credentials: dict, monkey_guid: str):
ip = Monkey.get_single_monkey_by_guid(monkey_guid).ip_addresses[0]
username = credentials["identities"][0]["username"]
encrypt_system_info_ssh_keys(ssh_key)
ConfigService.ssh_add_keys(
user=username,
public_key=ssh_key["public_key"],