#!/bin/python import boto3 from pprint import pprint, pformat import json import sys import logging from utility import check_missing_tags from utility import convert_tags_to_aws_format from utility import convert_tags_from_aws_format from utility import filter_only_missing_tags from utility import get_aws_objects def get_tags(): return { 'platform': 'Delphi', 'environment': 'Common', 'project': 'GSIRT', 'plat_env_project_service': 'DLP_CMN_SEC', 'service': 'Security hub' } def tag_securityhub_account(aws_profile): session = boto3.Session(profile_name=aws_profile) client = session.client('securityhub') securityhub_arn = client.describe_hub()['HubArn'] current_tags = client.list_tags_for_resource(ResourceArn=securityhub_arn).get('Tags', {}) pprint("Current tags:") pprint(current_tags) missing_tag_keys = check_missing_tags(current_tags) if len(missing_tag_keys) > 0: applied_tags = filter_only_missing_tags(get_tags(),missing_tag_keys) pprint("Applied tags:") pprint(applied_tags) response = client.tag_resource( ResourceArn=securityhub_arn, Tags=applied_tags ) return response if __name__ == "__main__": logger = logging.getLogger('') logger.setLevel(logging.DEBUG) profile_list = [ "gdb-artistapp-dev", "gdb-artistapp-prod", "gdb-databricks-dev", "gdb-databricks-prod", "gdb-apollo-dev", "gdb-apollo-prod", "gdb-delphi-dev", "gdb-delphi-prod", "gdb-infra-dev", "gdb-infra-prod", "gdb-mct-dev", "gdb-mct-prod", "gdb-datasci-dev", "gdb-core-dev", "gdb-core-prod", "gdb-prodhub-dev" ] for profile in profile_list: tag_securityhub_account(profile)