cartography 0.90.0rc2__tar.gz → 0.92.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cartography might be problematic. Click here for more details.
- {cartography-0.90.0rc2/cartography.egg-info → cartography-0.92.0}/PKG-INFO +1 -1
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/cli.py +44 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/config.py +12 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/indexes.cypher +0 -6
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/images.py +10 -9
- cartography-0.92.0/cartography/intel/aws/ec2/launch_templates.py +147 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/snapshots.py +4 -2
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/iam.py +1 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/github/teams.py +6 -3
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/github/util.py +26 -8
- cartography-0.92.0/cartography/intel/kandji/__init__.py +39 -0
- cartography-0.92.0/cartography/intel/kandji/devices.py +84 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/__init__.py +1 -1
- cartography-0.92.0/cartography/intel/okta/awssaml.py +237 -0
- cartography-0.92.0/cartography/models/aws/ec2/launch_template_versions.py +81 -0
- cartography-0.92.0/cartography/models/aws/ec2/launch_templates.py +46 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/subnet_instance.py +1 -1
- cartography-0.92.0/cartography/models/kandji/device.py +48 -0
- cartography-0.92.0/cartography/models/kandji/tenant.py +17 -0
- cartography-0.92.0/cartography/py.typed +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/sync.py +2 -0
- {cartography-0.90.0rc2 → cartography-0.92.0/cartography.egg-info}/PKG-INFO +1 -1
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography.egg-info/SOURCES.txt +7 -1
- {cartography-0.90.0rc2 → cartography-0.92.0}/setup.cfg +5 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/setup.py +1 -1
- cartography-0.90.0rc2/cartography/data/jobs/cleanup/aws_import_ec2_launch_templates_cleanup.json +0 -13
- cartography-0.90.0rc2/cartography/intel/aws/ec2/launch_templates.py +0 -115
- cartography-0.90.0rc2/cartography/intel/okta/awssaml.py +0 -129
- {cartography-0.90.0rc2 → cartography-0.92.0}/LICENSE +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/NOTICE +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/README.md +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/__main__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/client/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/client/aws/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/client/aws/iam.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/client/core/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/client/core/tx.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_ec2_iaminstance.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_ec2_iaminstanceprofile.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_ec2_keypair_analysis.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_eks_asset_exposure.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_foreign_accounts.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_lambda_ecr.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/aws_s3acl_analysis.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/gcp_compute_asset_inet_exposure.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/gcp_gke_asset_exposure.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/gcp_gke_basic_auth.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/analysis/gsuite_human_link.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_account_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_apigateway_details.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_dns_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_config_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_elastic_ip_addresses_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_elasticache_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_es_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_groups_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_kms_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_principals_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_rds_snapshots_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_redshift_clusters_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_reserved_instances_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_roles_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_roles_policy_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_s3_acl_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_s3_buckets_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_secrets_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_securityhub_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_snapshots_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_sqs_queues_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_tags_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_tgw_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_users_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_vpc_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_import_vpc_peering_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_ingest_ec2_auto_scaling_groups_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_v2_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_ingest_subnets_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_kms_details.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_post_ingestion_principals_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/aws_s3_details.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_cosmosdb_cassandra_keyspace_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_cosmosdb_cors_details.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_cosmosdb_mongodb_database_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_cosmosdb_sql_database_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_cosmosdb_table_resources_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_database_account_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_import_disks_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_import_snapshots_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_import_virtual_machines_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_sql_server_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_storage_account_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_subscriptions_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/azure_tenant_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/crowdstrike_import_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/crxcavator_import_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/digitalocean_droplet_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/digitalocean_project_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_compute_firewall_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_compute_forwarding_rules_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_compute_instance_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_compute_vpc_subnet_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_crm_folder_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_crm_organization_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_dns_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/github_repos_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/github_users_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/kubernetes_import_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_import_compartments_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_import_groups_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_import_groups_membership_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_import_policies_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_import_users_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/oci_tenancy_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/okta_groups_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/okta_import_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/cleanup/pagerduty_import_cleanup.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/scoped_analysis/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/jobs/scoped_analysis/semgrep_sca_risk_analysis.json +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/data/permission_relationships.yaml +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/__main__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/add_shortcut.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/cli.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/config.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/detect_deviations.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/get_states.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/model.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/reporter.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/serializers.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/shortcut.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/storage.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/driftdetect/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/cleanupbuilder.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/context.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/job.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/querybuilder.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/graph/statement.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/analysis.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/apigateway.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/config.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/dynamodb.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/auto_scaling_groups.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/elastic_ip_addresses.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/instances.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/internet_gateways.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/key_pairs.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/load_balancer_v2s.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/load_balancers.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/network_interfaces.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/reserved_instances.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/security_groups.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/subnets.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/tgw.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/volumes.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/vpc.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ec2/vpc_peerings.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ecr.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ecs.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/eks.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/elasticache.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/elasticsearch.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/emr.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/inspector.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/kms.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/lambda_function.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/organizations.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/permission_relationships.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/rds.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/redshift.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/resourcegroupstaggingapi.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/resources.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/route53.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/s3.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/secretsmanager.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/securityhub.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/sqs.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/ssm.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/util/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/util/arns.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/aws/util/common.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/compute.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/cosmosdb.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/sql.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/storage.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/subscription.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/tenant.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/util/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/azure/util/credentials.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/bigfix/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/bigfix/computers.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/create_indexes.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crowdstrike/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crowdstrike/endpoints.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crowdstrike/spotlight.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crowdstrike/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crxcavator/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/crxcavator/crxcavator.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/cve/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/cve/feed.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/digitalocean/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/digitalocean/compute.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/digitalocean/management.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/digitalocean/platform.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/dns.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/api_host.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/endpoints.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/groups.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/phones.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/tokens.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/users.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/duo/web_authn_credentials.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/compute.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/crm.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/dns.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/gke.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gcp/storage.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/github/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/github/repos.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/github/users.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gsuite/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/gsuite/api.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/jamf/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/jamf/computers.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/jamf/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/namespaces.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/pods.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/secrets.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/services.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/kubernetes/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/lastpass/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/lastpass/users.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/oci/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/oci/iam.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/oci/organizations.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/oci/utils.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/applications.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/factors.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/groups.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/organization.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/origins.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/roles.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/sync_state.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/users.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/okta/utils.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/escalation_policies.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/schedules.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/services.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/teams.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/users.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/pagerduty/vendors.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/semgrep/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/intel/semgrep/findings.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/dynamodb/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/dynamodb/gsi.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/dynamodb/tables.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/images.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/instances.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/keypairs.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/loadbalancerv2.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/networkinterface_instance.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/networkinterfaces.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/privateip_networkinterface.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/reservations.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/securitygroup_instance.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/securitygroup_networkinterface.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/subnet_networkinterface.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ec2/volumes.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/eks/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/eks/clusters.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/emr.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/inspector/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/inspector/findings.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/inspector/packages.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ssm/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ssm/instance_information.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/aws/ssm/instance_patch.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/bigfix/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/bigfix/bigfix_computer.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/bigfix/bigfix_root.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/core/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/core/common.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/core/nodes.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/core/relationships.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/cve/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/cve/cve.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/cve/cve_feed.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/api_host.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/endpoint.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/group.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/phone.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/token.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/user.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/duo/web_authn_credential.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/github/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/github/teams.py +0 -0
- {cartography-0.90.0rc2/cartography/models/lastpass → cartography-0.92.0/cartography/models/kandji}/__init__.py +0 -0
- {cartography-0.90.0rc2/cartography/models/semgrep → cartography-0.92.0/cartography/models/lastpass}/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/lastpass/tenant.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/lastpass/user.py +0 -0
- /cartography-0.90.0rc2/cartography/py.typed → /cartography-0.92.0/cartography/models/semgrep/__init__.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/semgrep/deployment.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/semgrep/findings.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/models/semgrep/locations.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/stats.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography/util.py +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography.egg-info/dependency_links.txt +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography.egg-info/entry_points.txt +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography.egg-info/requires.txt +0 -0
- {cartography-0.90.0rc2 → cartography-0.92.0}/cartography.egg-info/top_level.txt +0 -0
|
@@ -325,6 +325,30 @@ class CLI:
|
|
|
325
325
|
default=None,
|
|
326
326
|
help='The name of an environment variable containing a password with which to authenticate to Jamf.',
|
|
327
327
|
)
|
|
328
|
+
parser.add_argument(
|
|
329
|
+
'--kandji-base-uri',
|
|
330
|
+
type=str,
|
|
331
|
+
default=None,
|
|
332
|
+
help=(
|
|
333
|
+
'Your Kandji base URI, e.g. https://company.api.kandji.io.'
|
|
334
|
+
'Required if you are using the Kandji intel module. Ignored otherwise.'
|
|
335
|
+
),
|
|
336
|
+
)
|
|
337
|
+
parser.add_argument(
|
|
338
|
+
'--kandji-tenant-id',
|
|
339
|
+
type=str,
|
|
340
|
+
default=None,
|
|
341
|
+
help=(
|
|
342
|
+
'Your Kandji tenant id e.g. company.'
|
|
343
|
+
'Required using the Kandji intel module. Ignored otherwise.'
|
|
344
|
+
),
|
|
345
|
+
)
|
|
346
|
+
parser.add_argument(
|
|
347
|
+
'--kandji-token-env-var',
|
|
348
|
+
type=str,
|
|
349
|
+
default=None,
|
|
350
|
+
help='The name of an environment variable containing token with which to authenticate to Kandji.',
|
|
351
|
+
)
|
|
328
352
|
parser.add_argument(
|
|
329
353
|
'--k8s-kubeconfig',
|
|
330
354
|
default=None,
|
|
@@ -620,6 +644,26 @@ class CLI:
|
|
|
620
644
|
config.jamf_user = None
|
|
621
645
|
config.jamf_password = None
|
|
622
646
|
|
|
647
|
+
# Kandji config
|
|
648
|
+
if config.kandji_base_uri:
|
|
649
|
+
if config.kandji_token_env_var:
|
|
650
|
+
logger.debug(
|
|
651
|
+
"Reading Kandji API token from environment variable '%s'.",
|
|
652
|
+
config.kandji_token_env_var,
|
|
653
|
+
)
|
|
654
|
+
config.kandji_token = os.environ.get(config.kandji_token_env_var)
|
|
655
|
+
elif os.environ.get('KANDJI_TOKEN'):
|
|
656
|
+
logger.debug(
|
|
657
|
+
"Reading Kandji API token from environment variable 'KANDJI_TOKEN'.",
|
|
658
|
+
)
|
|
659
|
+
config.kandji_token = os.environ.get('KANDJI_TOKEN')
|
|
660
|
+
else:
|
|
661
|
+
logger.warning("A Kandji base URI was provided but a token was not.")
|
|
662
|
+
config.kandji_token = None
|
|
663
|
+
else:
|
|
664
|
+
logger.warning("A Kandji base URI was not provided.")
|
|
665
|
+
config.kandji_base_uri = None
|
|
666
|
+
|
|
623
667
|
if config.statsd_enabled:
|
|
624
668
|
logger.debug(
|
|
625
669
|
f'statsd enabled. Sending metrics to server {config.statsd_host}:{config.statsd_port}. '
|
|
@@ -69,6 +69,12 @@ class Config:
|
|
|
69
69
|
:param jamf_user: User name used to authenticate to the Jamf data provider. Optional.
|
|
70
70
|
:type jamf_password: string
|
|
71
71
|
:param jamf_password: Password used to authenticate to the Jamf data provider. Optional.
|
|
72
|
+
:type kandji_base_uri: string
|
|
73
|
+
:param kandji_base_uri: Kandji data provider base URI, e.g. https://company.api.kandji.io. Optional.
|
|
74
|
+
:type kandji_tenant_id: string
|
|
75
|
+
:param kandji_tenant_id: Kandji tenant id. e.g. company Optional.
|
|
76
|
+
:type kandji_token: string
|
|
77
|
+
:param kandji_token: Token used to authenticate to the Kandji data provider. Optional.
|
|
72
78
|
:type statsd_enabled: bool
|
|
73
79
|
:param statsd_enabled: Whether to collect statsd metrics such as sync execution times. Optional.
|
|
74
80
|
:type statsd_host: str
|
|
@@ -137,6 +143,9 @@ class Config:
|
|
|
137
143
|
jamf_base_uri=None,
|
|
138
144
|
jamf_user=None,
|
|
139
145
|
jamf_password=None,
|
|
146
|
+
kandji_base_uri=None,
|
|
147
|
+
kandji_tenant_id=None,
|
|
148
|
+
kandji_token=None,
|
|
140
149
|
k8s_kubeconfig=None,
|
|
141
150
|
statsd_enabled=False,
|
|
142
151
|
statsd_prefix=None,
|
|
@@ -190,6 +199,9 @@ class Config:
|
|
|
190
199
|
self.jamf_base_uri = jamf_base_uri
|
|
191
200
|
self.jamf_user = jamf_user
|
|
192
201
|
self.jamf_password = jamf_password
|
|
202
|
+
self.kandji_base_uri = kandji_base_uri
|
|
203
|
+
self.kandji_tenant_id = kandji_tenant_id
|
|
204
|
+
self.kandji_token = kandji_token
|
|
193
205
|
self.k8s_kubeconfig = k8s_kubeconfig
|
|
194
206
|
self.statsd_enabled = statsd_enabled
|
|
195
207
|
self.statsd_prefix = statsd_prefix
|
|
@@ -200,12 +200,6 @@ CREATE INDEX IF NOT EXISTS FOR (n:KMSGrant) ON (n.lastupdated);
|
|
|
200
200
|
CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.id);
|
|
201
201
|
CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.name);
|
|
202
202
|
CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.lastupdated);
|
|
203
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.id);
|
|
204
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.name);
|
|
205
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.lastupdated);
|
|
206
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.id);
|
|
207
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.name);
|
|
208
|
-
CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.lastupdated);
|
|
209
203
|
CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.dnsname);
|
|
210
204
|
CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.id);
|
|
211
205
|
CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.lastupdated);
|
|
@@ -19,23 +19,23 @@ logger = logging.getLogger(__name__)
|
|
|
19
19
|
|
|
20
20
|
@timeit
|
|
21
21
|
def get_images_in_use(neo4j_session: neo4j.Session, region: str, current_aws_account_id: str) -> List[str]:
|
|
22
|
-
# We use OPTIONAL here to allow query chaining with queries that may not match.
|
|
23
22
|
get_images_query = """
|
|
24
|
-
|
|
23
|
+
MATCH (:AWSAccount{id: $AWS_ACCOUNT_ID})-[:RESOURCE]->(i:EC2Instance)
|
|
25
24
|
WHERE i.region = $Region
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
RETURN DISTINCT(i.imageid) as image
|
|
26
|
+
UNION
|
|
27
|
+
MATCH (:AWSAccount{id: $AWS_ACCOUNT_ID})-[:RESOURCE]->(lc:LaunchConfiguration)
|
|
28
28
|
WHERE lc.region = $Region
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
RETURN DISTINCT(lc.image_id) as image
|
|
30
|
+
UNION
|
|
31
|
+
MATCH (:AWSAccount{id: $AWS_ACCOUNT_ID})-[:RESOURCE]->(ltv:LaunchTemplateVersion)
|
|
31
32
|
WHERE ltv.region = $Region
|
|
32
|
-
|
|
33
|
-
RETURN images
|
|
33
|
+
RETURN DISTINCT(ltv.image_id) as image
|
|
34
34
|
"""
|
|
35
35
|
results = neo4j_session.run(get_images_query, AWS_ACCOUNT_ID=current_aws_account_id, Region=region)
|
|
36
36
|
images = []
|
|
37
37
|
for r in results:
|
|
38
|
-
images.
|
|
38
|
+
images.append(r['image'])
|
|
39
39
|
return images
|
|
40
40
|
|
|
41
41
|
|
|
@@ -51,6 +51,7 @@ def get_images(boto3_session: boto3.session.Session, region: str, image_ids: Lis
|
|
|
51
51
|
logger.warning(f"Failed retrieve images for region - {region}. Error - {e}")
|
|
52
52
|
try:
|
|
53
53
|
if image_ids:
|
|
54
|
+
image_ids = [image_id for image_id in image_ids if image_id is not None]
|
|
54
55
|
images_in_use = client.describe_images(ImageIds=image_ids)['Images']
|
|
55
56
|
# Ensure we're not adding duplicates
|
|
56
57
|
_ids = [image["ImageId"] for image in images]
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import boto3
|
|
5
|
+
import neo4j
|
|
6
|
+
|
|
7
|
+
from .util import get_botocore_config
|
|
8
|
+
from cartography.client.core.tx import load
|
|
9
|
+
from cartography.graph.job import GraphJob
|
|
10
|
+
from cartography.models.aws.ec2.launch_template_versions import LaunchTemplateVersionSchema
|
|
11
|
+
from cartography.models.aws.ec2.launch_templates import LaunchTemplateSchema
|
|
12
|
+
from cartography.util import aws_handle_regions
|
|
13
|
+
from cartography.util import timeit
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@timeit
|
|
19
|
+
@aws_handle_regions
|
|
20
|
+
def get_launch_templates(boto3_session: boto3.session.Session, region: str) -> list[dict[str, Any]]:
|
|
21
|
+
client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
|
|
22
|
+
paginator = client.get_paginator('describe_launch_templates')
|
|
23
|
+
templates: list[dict[str, Any]] = []
|
|
24
|
+
for page in paginator.paginate():
|
|
25
|
+
templates.extend(page['LaunchTemplates'])
|
|
26
|
+
return templates
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def transform_launch_templates(templates: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|
30
|
+
result: list[dict[str, Any]] = []
|
|
31
|
+
for template in templates:
|
|
32
|
+
current = template.copy()
|
|
33
|
+
current['CreateTime'] = str(int(current['CreateTime'].timestamp()))
|
|
34
|
+
result.append(current)
|
|
35
|
+
return result
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@timeit
|
|
39
|
+
def load_launch_templates(
|
|
40
|
+
neo4j_session: neo4j.Session,
|
|
41
|
+
data: list[dict[str, Any]],
|
|
42
|
+
region: str,
|
|
43
|
+
current_aws_account_id: str,
|
|
44
|
+
update_tag: int,
|
|
45
|
+
) -> None:
|
|
46
|
+
load(
|
|
47
|
+
neo4j_session,
|
|
48
|
+
LaunchTemplateSchema(),
|
|
49
|
+
data,
|
|
50
|
+
Region=region,
|
|
51
|
+
AWS_ID=current_aws_account_id,
|
|
52
|
+
lastupdated=update_tag,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@timeit
|
|
57
|
+
@aws_handle_regions
|
|
58
|
+
def get_launch_template_versions(
|
|
59
|
+
boto3_session: boto3.session.Session,
|
|
60
|
+
templates: list[dict[str, Any]],
|
|
61
|
+
region: str,
|
|
62
|
+
) -> list[dict[str, Any]]:
|
|
63
|
+
client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
|
|
64
|
+
v_paginator = client.get_paginator('describe_launch_template_versions')
|
|
65
|
+
template_versions = []
|
|
66
|
+
for template in templates:
|
|
67
|
+
for versions in v_paginator.paginate(LaunchTemplateId=template['LaunchTemplateId']):
|
|
68
|
+
template_versions.extend(versions['LaunchTemplateVersions'])
|
|
69
|
+
return template_versions
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def transform_launch_template_versions(versions: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|
73
|
+
result: list[dict[str, Any]] = []
|
|
74
|
+
for version in versions:
|
|
75
|
+
current = version.copy()
|
|
76
|
+
|
|
77
|
+
# Reformat some fields
|
|
78
|
+
current['Id'] = f"{version['LaunchTemplateId']}-{version['VersionNumber']}"
|
|
79
|
+
current['CreateTime'] = str(int(version['CreateTime'].timestamp()))
|
|
80
|
+
|
|
81
|
+
# Handle the nested object returned from boto
|
|
82
|
+
ltd = version['LaunchTemplateData']
|
|
83
|
+
current['KernelId'] = ltd.get('KernelId')
|
|
84
|
+
current['EbsOptimized'] = ltd.get('EbsOptimized')
|
|
85
|
+
current['IamInstanceProfileArn'] = ltd.get('IamInstanceProfileArn')
|
|
86
|
+
current['IamInstanceProfileName'] = ltd.get('IamInstanceProfileName')
|
|
87
|
+
current['ImageId'] = ltd.get('ImageId')
|
|
88
|
+
current['InstanceType'] = ltd.get('InstanceType')
|
|
89
|
+
current['KeyName'] = ltd.get('KeyName')
|
|
90
|
+
current['MonitoringEnabled'] = ltd.get('MonitoringEnabled')
|
|
91
|
+
current['RamdiskId'] = ltd.get('RamdiskId')
|
|
92
|
+
current['DisableApiTermination'] = ltd.get('DisableApiTermination')
|
|
93
|
+
current['InstanceInitiatedShutDownBehavior'] = ltd.get('InstanceInitiatedShutDownBehavior')
|
|
94
|
+
current['SecurityGroupIds'] = ltd.get('SecurityGroupIds')
|
|
95
|
+
current['SecurityGroups'] = ltd.get('SecurityGroups')
|
|
96
|
+
result.append(current)
|
|
97
|
+
return result
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@timeit
|
|
101
|
+
def load_launch_template_versions(
|
|
102
|
+
neo4j_session: neo4j.Session,
|
|
103
|
+
data: list[dict[str, Any]],
|
|
104
|
+
region: str,
|
|
105
|
+
current_aws_account_id: str,
|
|
106
|
+
update_tag: int,
|
|
107
|
+
) -> None:
|
|
108
|
+
load(
|
|
109
|
+
neo4j_session,
|
|
110
|
+
LaunchTemplateVersionSchema(),
|
|
111
|
+
data,
|
|
112
|
+
Region=region,
|
|
113
|
+
AWS_ID=current_aws_account_id,
|
|
114
|
+
lastupdated=update_tag,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@timeit
|
|
119
|
+
def cleanup(neo4j_session: neo4j.Session, common_job_parameters: dict[str, Any]) -> None:
|
|
120
|
+
logger.info("Running launch template cleanup job.")
|
|
121
|
+
cleanup_job = GraphJob.from_node_schema(LaunchTemplateSchema(), common_job_parameters)
|
|
122
|
+
cleanup_job.run(neo4j_session)
|
|
123
|
+
|
|
124
|
+
cleanup_job = GraphJob.from_node_schema(LaunchTemplateVersionSchema(), common_job_parameters)
|
|
125
|
+
cleanup_job.run(neo4j_session)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@timeit
|
|
129
|
+
def sync_ec2_launch_templates(
|
|
130
|
+
neo4j_session: neo4j.Session,
|
|
131
|
+
boto3_session: boto3.session.Session,
|
|
132
|
+
regions: list[str],
|
|
133
|
+
current_aws_account_id: str,
|
|
134
|
+
update_tag: int,
|
|
135
|
+
common_job_parameters: dict[str, Any],
|
|
136
|
+
) -> None:
|
|
137
|
+
for region in regions:
|
|
138
|
+
logger.info(f"Syncing launch templates for region '{region}' in account '{current_aws_account_id}'.")
|
|
139
|
+
templates = get_launch_templates(boto3_session, region)
|
|
140
|
+
templates = transform_launch_templates(templates)
|
|
141
|
+
load_launch_templates(neo4j_session, templates, region, current_aws_account_id, update_tag)
|
|
142
|
+
|
|
143
|
+
versions = get_launch_template_versions(boto3_session, templates, region)
|
|
144
|
+
versions = transform_launch_template_versions(versions)
|
|
145
|
+
load_launch_template_versions(neo4j_session, versions, region, current_aws_account_id, update_tag)
|
|
146
|
+
|
|
147
|
+
cleanup(neo4j_session, common_job_parameters)
|
|
@@ -42,8 +42,10 @@ def get_snapshots(boto3_session: boto3.session.Session, region: str, in_use_snap
|
|
|
42
42
|
snapshots.extend(page['Snapshots'])
|
|
43
43
|
except ClientError as e:
|
|
44
44
|
if e.response['Error']['Code'] == 'InvalidSnapshot.NotFound':
|
|
45
|
-
logger.warning(
|
|
46
|
-
|
|
45
|
+
logger.warning(
|
|
46
|
+
f"Failed to retrieve page of in-use, \
|
|
47
|
+
not owned snapshots. Continuing anyway. Error - {e}",
|
|
48
|
+
)
|
|
47
49
|
else:
|
|
48
50
|
raise
|
|
49
51
|
|
|
@@ -227,6 +227,7 @@ def get_account_access_key_data(boto3_session: boto3.session.Session, username:
|
|
|
227
227
|
logger.warning(
|
|
228
228
|
f"Could not get access key for user {username} due to NoSuchEntityException; skipping.",
|
|
229
229
|
)
|
|
230
|
+
return access_keys
|
|
230
231
|
for access_key in access_keys['AccessKeyMetadata']:
|
|
231
232
|
access_key_id = access_key['AccessKeyId']
|
|
232
233
|
last_used_info = client.get_access_key_last_used(
|
|
@@ -57,10 +57,13 @@ def _get_team_repos_for_multiple_teams(
|
|
|
57
57
|
|
|
58
58
|
team_repos = _get_team_repos(org, api_url, token, team_name) if repo_count > 0 else None
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
repo_urls = []
|
|
61
|
+
repo_permissions = []
|
|
62
|
+
if team_repos:
|
|
63
|
+
repo_urls = [t['url'] for t in team_repos.nodes] if team_repos.nodes else []
|
|
64
|
+
repo_permissions = [t['permission'] for t in team_repos.edges] if team_repos.edges else []
|
|
63
65
|
|
|
66
|
+
# Shape = [(repo_url, 'WRITE'), ...]]
|
|
64
67
|
result[team_name] = list(zip(repo_urls, repo_permissions))
|
|
65
68
|
return result
|
|
66
69
|
|
|
@@ -81,12 +81,12 @@ def call_github_api(query: str, variables: str, token: str, api_url: str) -> Dic
|
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
def fetch_page(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
token: str,
|
|
85
|
+
api_url: str,
|
|
86
|
+
organization: str,
|
|
87
|
+
query: str,
|
|
88
|
+
cursor: Optional[str] = None,
|
|
89
|
+
**kwargs: Any,
|
|
90
90
|
) -> Dict[str, Any]:
|
|
91
91
|
"""
|
|
92
92
|
Return a single page of max size 100 elements from the Github api_url using the given `query` and `cursor` params.
|
|
@@ -139,6 +139,7 @@ def fetch_all(
|
|
|
139
139
|
"""
|
|
140
140
|
cursor = None
|
|
141
141
|
has_next_page = True
|
|
142
|
+
org_data: Dict[str, Any] = {}
|
|
142
143
|
data: PaginatedGraphqlData = PaginatedGraphqlData(nodes=[], edges=[])
|
|
143
144
|
retry = 0
|
|
144
145
|
|
|
@@ -170,6 +171,15 @@ def fetch_all(
|
|
|
170
171
|
time.sleep(2 ** retry)
|
|
171
172
|
continue
|
|
172
173
|
|
|
174
|
+
if 'data' not in resp:
|
|
175
|
+
logger.warning(
|
|
176
|
+
f'Got no "data" attribute in response: {resp}. '
|
|
177
|
+
f'Stopping requests for organization: {organization} and '
|
|
178
|
+
f'resource_type: {resource_type}',
|
|
179
|
+
)
|
|
180
|
+
has_next_page = False
|
|
181
|
+
continue
|
|
182
|
+
|
|
173
183
|
resource = resp['data']['organization'][resource_type]
|
|
174
184
|
if resource_inner_type:
|
|
175
185
|
resource = resp['data']['organization'][resource_type][resource_inner_type]
|
|
@@ -180,6 +190,14 @@ def fetch_all(
|
|
|
180
190
|
|
|
181
191
|
cursor = resource['pageInfo']['endCursor']
|
|
182
192
|
has_next_page = resource['pageInfo']['hasNextPage']
|
|
183
|
-
|
|
184
|
-
|
|
193
|
+
if not org_data:
|
|
194
|
+
org_data = {
|
|
195
|
+
'url': resp['data']['organization']['url'],
|
|
196
|
+
'login': resp['data']['organization']['login'],
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if not org_data:
|
|
200
|
+
raise ValueError(
|
|
201
|
+
f"Didn't get any organization data for organization: {organization} and resource_type: {resource_type}",
|
|
202
|
+
)
|
|
185
203
|
return data, org_data
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
import neo4j
|
|
4
|
+
|
|
5
|
+
import cartography.intel.kandji.devices
|
|
6
|
+
from cartography.config import Config
|
|
7
|
+
from cartography.util import timeit
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@timeit
|
|
13
|
+
def start_kandji_ingestion(neo4j_session: neo4j.Session, config: Config) -> None:
|
|
14
|
+
"""
|
|
15
|
+
If this module is configured, perform ingestion of Kandji devices. Otherwise warn and exit
|
|
16
|
+
|
|
17
|
+
:param neo4j_session: Neo4J session for database interface
|
|
18
|
+
:param config: A cartography.config object
|
|
19
|
+
|
|
20
|
+
:return: None
|
|
21
|
+
"""
|
|
22
|
+
if config.kandji_base_uri is None or config.kandji_token is None or config.kandji_tenant_id is None:
|
|
23
|
+
logger.warning(
|
|
24
|
+
'Required parameter(s) missing. Skipping sync.',
|
|
25
|
+
'See docs to configure.',
|
|
26
|
+
)
|
|
27
|
+
return
|
|
28
|
+
|
|
29
|
+
common_job_parameters = {
|
|
30
|
+
"UPDATE_TAG": config.update_tag,
|
|
31
|
+
"TENANT_ID": config.kandji_tenant_id,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
cartography.intel.kandji.devices.sync(
|
|
35
|
+
neo4j_session,
|
|
36
|
+
config.kandji_base_uri,
|
|
37
|
+
config.kandji_token,
|
|
38
|
+
common_job_parameters=common_job_parameters,
|
|
39
|
+
)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
from typing import Dict
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
import neo4j
|
|
7
|
+
from requests import Session
|
|
8
|
+
|
|
9
|
+
from cartography.client.core.tx import load
|
|
10
|
+
from cartography.graph.job import GraphJob
|
|
11
|
+
from cartography.models.kandji.device import KandjiDeviceSchema
|
|
12
|
+
from cartography.models.kandji.tenant import KandjiTenantSchema
|
|
13
|
+
from cartography.util import timeit
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
_TIMEOUT = (60, 60)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@timeit
|
|
21
|
+
def get(kandji_base_uri: str, kandji_token: str) -> List[Dict[str, Any]]:
|
|
22
|
+
api_endpoint = f"{kandji_base_uri}/api/v1/devices"
|
|
23
|
+
headers = {
|
|
24
|
+
'Accept': 'application/json',
|
|
25
|
+
'Authorization': f'Bearer {kandji_token}',
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
session = Session()
|
|
29
|
+
req = session.get(api_endpoint, headers=headers, timeout=_TIMEOUT)
|
|
30
|
+
req.raise_for_status()
|
|
31
|
+
return req.json()
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@timeit
|
|
35
|
+
def transform(api_result: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
|
|
36
|
+
result: List[Dict[str, Any]] = []
|
|
37
|
+
for device in api_result:
|
|
38
|
+
n_device = device
|
|
39
|
+
n_device['id'] = device['device_id']
|
|
40
|
+
result.append(n_device)
|
|
41
|
+
return result
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@timeit
|
|
45
|
+
def load_devices(
|
|
46
|
+
neo4j_session: neo4j.Session,
|
|
47
|
+
common_job_parameters: Dict[str, Any],
|
|
48
|
+
data: List[Dict[str, Any]],
|
|
49
|
+
) -> None:
|
|
50
|
+
|
|
51
|
+
tenant_id = common_job_parameters["TENANT_ID"]
|
|
52
|
+
update_tag = common_job_parameters["UPDATE_TAG"]
|
|
53
|
+
|
|
54
|
+
load(
|
|
55
|
+
neo4j_session,
|
|
56
|
+
KandjiTenantSchema(),
|
|
57
|
+
[{'id': tenant_id}],
|
|
58
|
+
lastupdated=update_tag,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
load(
|
|
62
|
+
neo4j_session,
|
|
63
|
+
KandjiDeviceSchema(),
|
|
64
|
+
data,
|
|
65
|
+
lastupdated=update_tag,
|
|
66
|
+
TENANT_ID=tenant_id,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def cleanup(neo4j_session: neo4j.Session, common_job_parameters: Dict[str, Any]) -> None:
|
|
71
|
+
GraphJob.from_node_schema(KandjiDeviceSchema(), common_job_parameters).run(neo4j_session)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@timeit
|
|
75
|
+
def sync(
|
|
76
|
+
neo4j_session: neo4j.Session,
|
|
77
|
+
kandji_base_uri: str,
|
|
78
|
+
kandji_token: str,
|
|
79
|
+
common_job_parameters: Dict[str, Any],
|
|
80
|
+
) -> None:
|
|
81
|
+
devices = get(kandji_base_uri=kandji_base_uri, kandji_token=kandji_token)
|
|
82
|
+
formatted_devices = transform(devices)
|
|
83
|
+
load_devices(neo4j_session, common_job_parameters, formatted_devices)
|
|
84
|
+
cleanup(neo4j_session, common_job_parameters)
|
|
@@ -68,7 +68,7 @@ def start_okta_ingestion(neo4j_session: neo4j.Session, config: Config) -> None:
|
|
|
68
68
|
applications.sync_okta_applications(neo4j_session, config.okta_org_id, config.update_tag, config.okta_api_key)
|
|
69
69
|
factors.sync_users_factors(neo4j_session, config.okta_org_id, config.update_tag, config.okta_api_key, state)
|
|
70
70
|
origins.sync_trusted_origins(neo4j_session, config.okta_org_id, config.update_tag, config.okta_api_key)
|
|
71
|
-
awssaml.sync_okta_aws_saml(neo4j_session, config.okta_saml_role_regex, config.update_tag)
|
|
71
|
+
awssaml.sync_okta_aws_saml(neo4j_session, config.okta_saml_role_regex, config.update_tag, config.okta_org_id)
|
|
72
72
|
|
|
73
73
|
# need creds with permission
|
|
74
74
|
# soft fail as some won't be able to get such high priv token
|