├── .all-contributorsrc ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── deployment_bug_report.md │ ├── documentation_improvement.md │ ├── enhancement_request.md │ ├── release_checklist.md │ ├── system_manager_functionality_bug_report.md │ └── user_functionality_bug_report.md ├── dependabot.yml ├── pull_request_template.md ├── resources │ └── AdGuardHome.mustache.config.json ├── scripts │ ├── expand_mustache.sh │ ├── requirements.txt │ └── update_docker_versions.py └── workflows │ ├── build_documentation.yaml │ ├── citation.yaml │ ├── dependabot_amend.yaml │ ├── lint_code.yaml │ ├── publish_pypi.yaml │ ├── test_code.yaml │ ├── test_coverage.yaml │ └── update_docker_versions.yaml ├── .gitignore ├── .hatch ├── requirements-docs.txt ├── requirements-lint.txt ├── requirements-test.txt └── requirements.txt ├── .lychee.toml ├── .mdlstyle.rb ├── .readthedocs.yaml ├── .yamllint.yaml ├── CITATION.cff ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DISCLAIMER.md ├── LICENSE ├── README.md ├── ROADMAP.md ├── SECURITY.md ├── VERSIONING.md ├── data_safe_haven ├── __init__.py ├── administration │ ├── __init__.py │ └── users │ │ ├── __init__.py │ │ ├── entra_users.py │ │ ├── guacamole_users.py │ │ ├── research_user.py │ │ └── user_handler.py ├── allowlist │ ├── __init__.py │ └── allowlist.py ├── commands │ ├── __init__.py │ ├── allowlist.py │ ├── cli.py │ ├── config.py │ ├── context.py │ ├── pulumi.py │ ├── shm.py │ ├── sre.py │ └── users.py ├── config │ ├── __init__.py │ ├── config_sections.py │ ├── context.py │ ├── context_manager.py │ ├── dsh_pulumi_config.py │ ├── dsh_pulumi_project.py │ ├── shm_config.py │ └── sre_config.py ├── console │ ├── __init__.py │ ├── format.py │ ├── pretty.py │ └── prompts.py ├── directories.py ├── exceptions │ └── __init__.py ├── external │ ├── __init__.py │ ├── api │ │ ├── __init__.py │ │ ├── azure_sdk.py │ │ ├── credentials.py │ │ └── graph_api.py │ └── interface │ │ ├── __init__.py │ │ ├── azure_container_instance.py │ │ ├── azure_ipv4_range.py │ │ ├── azure_postgresql_database.py │ │ └── pulumi_account.py ├── functions │ ├── __init__.py │ ├── network.py │ └── strings.py ├── infrastructure │ ├── __init__.py │ ├── common │ │ ├── __init__.py │ │ ├── dockerhub_credentials.py │ │ ├── ip_ranges.py │ │ └── transformations.py │ ├── components │ │ ├── __init__.py │ │ ├── composite │ │ │ ├── __init__.py │ │ │ ├── entra_application.py │ │ │ ├── local_dns_record.py │ │ │ ├── microsoft_sql_database.py │ │ │ ├── nfsv3_blob_container.py │ │ │ ├── nfsv3_storage_account.py │ │ │ ├── postgresql_database.py │ │ │ └── virtual_machine.py │ │ ├── dynamic │ │ │ ├── __init__.py │ │ │ ├── blob_container_acl.py │ │ │ ├── dsh_resource_provider.py │ │ │ ├── file_share_file.py │ │ │ └── ssl_certificate.py │ │ └── wrapped │ │ │ ├── __init__.py │ │ │ └── log_analytics_workspace.py │ ├── programs │ │ ├── __init__.py │ │ ├── declarative_sre.py │ │ ├── imperative_shm.py │ │ └── sre │ │ │ ├── __init__.py │ │ │ ├── application_gateway.py │ │ │ ├── apt_proxy_server.py │ │ │ ├── backup.py │ │ │ ├── clamav_mirror.py │ │ │ ├── data.py │ │ │ ├── database_servers.py │ │ │ ├── desired_state.py │ │ │ ├── dns_server.py │ │ │ ├── dns_server_vm.py │ │ │ ├── dns_sidecar.py │ │ │ ├── entra.py │ │ │ ├── firewall.py │ │ │ ├── gitea_mirror_manager.py │ │ │ ├── gitea_server.py │ │ │ ├── hedgedoc_server.py │ │ │ ├── identity.py │ │ │ ├── monitoring.py │ │ │ ├── monitoring_elements.py │ │ │ ├── networking.py │ │ │ ├── remote_desktop.py │ │ │ ├── software_repositories.py │ │ │ ├── user_services.py │ │ │ └── workspaces.py │ └── project_manager.py ├── logging │ ├── __init__.py │ ├── logger.py │ ├── non_logging_singleton.py │ └── plain_file_handler.py ├── provisioning │ ├── __init__.py │ └── sre_provisioning_manager.py ├── resources │ ├── __init__.py │ ├── dns_server │ │ ├── AdGuardHome.mustache.yaml │ │ ├── dns_server_vm.cloud_init.mustache.yaml │ │ └── entrypoint.sh │ ├── dns_sidecar │ │ └── init.sh │ ├── gitea │ │ ├── caddy │ │ │ └── Caddyfile │ │ ├── gitea-mirror │ │ │ └── configure.mustache.sh │ │ └── gitea │ │ │ ├── configure.mustache.sh │ │ │ └── entrypoint.sh │ ├── hedgedoc │ │ ├── caddy │ │ │ └── Caddyfile │ │ └── hedgedoc │ │ │ └── config.json │ ├── remote_desktop │ │ ├── caddy │ │ │ └── Caddyfile │ │ └── postgresql │ │ │ ├── init_db.mustache.sql │ │ │ ├── list_users.mustache.sql │ │ │ └── update_connections.mustache.sql │ ├── software_repositories │ │ ├── allowlists │ │ │ ├── cran.allowlist │ │ │ └── pypi.allowlist │ │ └── caddy │ │ │ └── Caddyfile │ ├── update_server │ │ └── update_server_linux.cloud_init.yaml │ └── workspace │ │ ├── ansible │ │ ├── desired_state.yaml │ │ ├── files │ │ │ ├── etc │ │ │ │ ├── clamav │ │ │ │ │ └── clamd.conf │ │ │ │ ├── polkit-1 │ │ │ │ │ └── localauthority │ │ │ │ │ │ └── 50-local.d │ │ │ │ │ │ └── 50-colord.pkla │ │ │ │ ├── skel │ │ │ │ │ ├── Desktop │ │ │ │ │ │ ├── input.desktop │ │ │ │ │ │ ├── output.desktop │ │ │ │ │ │ └── shared.desktop │ │ │ │ │ ├── bashrc │ │ │ │ │ └── xsession │ │ │ │ ├── systemd │ │ │ │ │ └── system │ │ │ │ │ │ ├── clamav-clamdscan.service │ │ │ │ │ │ ├── clamav-clamdscan.timer │ │ │ │ │ │ └── clamav-clamonacc.service │ │ │ │ ├── xdg │ │ │ │ │ └── xfce4 │ │ │ │ │ │ └── terminal │ │ │ │ │ │ └── terminalrc │ │ │ │ └── xrdp │ │ │ │ │ └── xrdp.ini │ │ │ └── usr │ │ │ │ └── local │ │ │ │ ├── bin │ │ │ │ └── privileged-rules │ │ │ │ ├── share │ │ │ │ ├── icons │ │ │ │ │ ├── gitea.png │ │ │ │ │ └── hedgedoc.png │ │ │ │ └── xrdp │ │ │ │ │ └── dsh_logo_240x140_256color.bmp │ │ │ │ └── smoke_tests │ │ │ │ ├── run_all_tests.bats │ │ │ │ ├── test_databases.sh │ │ │ │ ├── test_databases_R.R │ │ │ │ ├── test_databases_python.py │ │ │ │ ├── test_functionality_R.R │ │ │ │ ├── test_functionality_python.py │ │ │ │ ├── test_mounted_drives.sh │ │ │ │ ├── test_repository_R.sh │ │ │ │ └── test_repository_python.sh │ │ ├── host_vars │ │ │ └── localhost.yaml │ │ ├── tasks │ │ │ ├── auditd.yaml │ │ │ ├── clamav.yaml │ │ │ ├── install_deb.yaml │ │ │ ├── ldap.yaml │ │ │ ├── package_proxy.yaml │ │ │ ├── packages.yaml │ │ │ ├── scratchpad.yaml │ │ │ ├── smoke_tests.yaml │ │ │ ├── sshd.yaml │ │ │ ├── ubuntu_pro.yaml │ │ │ ├── user_config.yaml │ │ │ ├── xfce.yaml │ │ │ └── xrdp.yaml │ │ └── templates │ │ │ └── etc │ │ │ ├── R │ │ │ └── Rprofile.site.j2 │ │ │ ├── audit │ │ │ └── rules.d │ │ │ │ └── audit.rules.j2 │ │ │ ├── database_credential.j2 │ │ │ ├── nslcd.conf.j2 │ │ │ ├── pip.conf.j2 │ │ │ └── skel │ │ │ └── Desktop │ │ │ ├── gitea.desktop.j2 │ │ │ └── hedgedoc.desktop.j2 │ │ └── workspace.cloud_init.mustache.yaml ├── serialisers │ ├── __init__.py │ ├── azure_serialisable_model.py │ ├── context_base.py │ └── yaml_serialisable_model.py ├── singleton.py ├── types │ ├── __init__.py │ ├── annotated_types.py │ ├── enums.py │ └── types.py ├── utility │ ├── __init__.py │ └── file_reader.py ├── validators │ ├── __init__.py │ ├── typer.py │ └── validators.py └── version.py ├── docs └── source │ ├── _static │ ├── favicon.ico │ ├── logo_turing_dark.png │ ├── logo_turing_light.png │ ├── overrides.css │ └── scriberia_diagram.jpg │ ├── conf.py │ ├── contributing │ ├── devops_gap.png │ ├── example-conversation-in-issue.png │ ├── gitflow.svg │ └── index.md │ ├── deployment │ ├── configure_entra_id.md │ ├── deploy_shm.md │ ├── deploy_sre.md │ ├── images │ │ ├── backup_fix_protection_error.png │ │ └── entra_authentication_methods.png │ ├── index.md │ ├── security_checklist.md │ ├── security_checklist │ │ ├── no_internet_browser.png │ │ ├── no_internet_curl.png │ │ ├── no_nslookup.png │ │ ├── no_ssh_fqdn.png │ │ ├── no_ssh_ip.png │ │ ├── no_valid_workspaces.png │ │ ├── nsg_inbound_access.png │ │ ├── pypi_t2_allowed.png │ │ ├── pypi_t2_disallowed.png │ │ ├── pypi_t3_allowed.png │ │ ├── pypi_t3_disallowed.png │ │ ├── security_checklist_template.md │ │ ├── sspr.png │ │ ├── sspr_success.png │ │ ├── valid_workspaces.png │ │ └── workspace_xfce_initial.png │ └── setup_context.md │ ├── design │ ├── index.md │ └── security │ │ ├── index.md │ │ ├── objectives.md │ │ ├── reference_configuration.md │ │ ├── sample_security_controls.png │ │ └── technical_controls.md │ ├── index.md │ ├── management │ ├── allowlist.md │ ├── data.md │ ├── egress_token_read_only.png │ ├── index.md │ ├── ingress_token_write_only.png │ ├── logs.md │ ├── sre.md │ └── user.md │ ├── overview │ ├── index.md │ ├── sensitivity_tiers.md │ ├── using_dsh.md │ ├── what_is_dsh.md │ └── why_use_dsh.md │ ├── reference │ ├── allowlist.md │ ├── config.md │ ├── context.md │ ├── index.md │ ├── pulumi.md │ ├── shm.md │ ├── sre.md │ └── users.md │ └── roles │ ├── data_provider_representative │ ├── azcopy_warning.png │ ├── azure_storage_explorer_connect.png │ ├── azure_storage_explorer_container.png │ ├── azure_storage_explorer_error.png │ ├── data_ingress.md │ └── index.md │ ├── index.md │ ├── investigator │ ├── data_egress.md │ ├── data_ingress.md │ └── index.md │ ├── programme_manager │ └── index.md │ ├── project_manager │ ├── data_egress.md │ ├── data_ingress.md │ ├── index.md │ └── project_lifecycle.md │ ├── researcher │ ├── accessing_the_sre.md │ ├── available_software.md │ ├── images │ │ ├── account_setup_captcha.png │ │ ├── account_setup_forgotten_password.png │ │ ├── account_setup_mfa_add_authenticator_app.png │ │ ├── account_setup_mfa_additional_security_verification.png │ │ ├── account_setup_mfa_allow_notifications.png │ │ ├── account_setup_mfa_app_qrcode.png │ │ ├── account_setup_mfa_choose_authenticator_app.png │ │ ├── account_setup_mfa_dashboard_microsoft_authenticator.png │ │ ├── account_setup_mfa_dashboard_phone_only.png │ │ ├── account_setup_mfa_dashboard_totp_authenticator.png │ │ ├── account_setup_mfa_microsoft_authenticator_app_approved.png │ │ ├── account_setup_mfa_microsoft_authenticator_app_test.png │ │ ├── account_setup_mfa_registered_phone.png │ │ ├── account_setup_mfa_totp_allow_notifications.png │ │ ├── account_setup_mfa_totp_app_qrcode.png │ │ ├── account_setup_mfa_totp_authenticator_app_approved.png │ │ ├── account_setup_mfa_totp_authenticator_app_test.png │ │ ├── account_setup_mfa_verified_phone.png │ │ ├── account_setup_mfa_verifying_phone.png │ │ ├── account_setup_more_information_required.png │ │ ├── account_setup_new_password.png │ │ ├── account_setup_new_password_sign_in.png │ │ ├── account_setup_verify_phone.png │ │ ├── db_beekeeper_studio_mssql.png │ │ ├── db_beekeeper_studio_postgres.png │ │ ├── firefox_not_responding.png │ │ ├── gitea_dashboard.png │ │ ├── gitea_explore.png │ │ ├── gitea_homepage.png │ │ ├── gitea_login.png │ │ ├── gitea_new_repository.png │ │ ├── gitea_pull_request_diff.png │ │ ├── gitea_pull_request_finish.png │ │ ├── gitea_pull_request_start.png │ │ ├── gitea_repository_view.png │ │ ├── guacamole_dashboard.png │ │ ├── guacamole_dashboard_multiple_workspaces.png │ │ ├── guacamole_mfa.png │ │ ├── guacamole_oauth_login.png │ │ ├── hedgedoc_access_options.png │ │ ├── hedgedoc_homepage.png │ │ ├── hedgedoc_login.png │ │ ├── hedgedoc_publish.png │ │ ├── workspace_desktop_applications.png │ │ ├── workspace_desktop_pycharm.png │ │ ├── workspace_desktop_rstudio.png │ │ ├── workspace_desktop_vscodium.png │ │ ├── workspace_login_failure.png │ │ ├── workspace_login_screen.png │ │ ├── workspace_terminal_python.png │ │ ├── workspace_terminal_r.png │ │ └── workspace_xfce_initial.png │ ├── index.md │ ├── new_user_setup.md │ ├── snippets │ │ ├── software_database.partial.md │ │ ├── software_editors.partial.md │ │ ├── software_languages.partial.md │ │ ├── software_other.partial.md │ │ └── software_presentation.partial.md │ ├── troubleshooting.md │ └── using_the_sre.md │ └── system_manager │ └── index.md ├── pyproject.toml ├── tests ├── allowlist │ └── test_allowlist.py ├── commands │ ├── conftest.py │ ├── test_allowlist.py │ ├── test_cli.py │ ├── test_config_shm.py │ ├── test_config_sre.py │ ├── test_context.py │ ├── test_pulumi.py │ ├── test_shm.py │ ├── test_sre.py │ └── test_users.py ├── config │ ├── test_config_sections.py │ ├── test_context_manager.py │ ├── test_pulumi.py │ ├── test_shm_config.py │ └── test_sre_config.py ├── conftest.py ├── console │ ├── test_format.py │ ├── test_pretty.py │ └── test_prompts.py ├── external │ └── api │ │ ├── conftest.py │ │ ├── test_azure_sdk.py │ │ ├── test_credentials.py │ │ └── test_graph_api.py ├── functions │ ├── test_network.py │ └── test_strings.py ├── infrastructure │ ├── common │ │ └── test_ip_ranges.py │ ├── programs │ │ ├── resource_assertions.py │ │ └── sre │ │ │ ├── conftest.py │ │ │ ├── test_application_gateway.py │ │ │ ├── test_firewall.py │ │ │ └── test_workspaces.py │ └── test_project_manager.py ├── logging │ ├── test_logger.py │ ├── test_non_logging_singleton.py │ └── test_plain_file_handler.py ├── serialisers │ ├── test_azure_serialisable_model.py │ └── test_yaml_serialisable_model.py └── validators │ ├── test_typer_validators.py │ └── test_validators.py └── typings ├── fqdn └── __init__.pyi ├── pulumi └── __init__.pyi ├── pulumi_azure_native └── __init__.pyi └── typer ├── __init__.pyi ├── main.pyi ├── models.pyi └── params.pyi /.all-contributorsrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.all-contributorsrc -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.devcontainer/Dockerfile -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.devcontainer/devcontainer.json -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/deployment_bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/deployment_bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation_improvement.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/documentation_improvement.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/enhancement_request.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/release_checklist.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/release_checklist.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/system_manager_functionality_bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/system_manager_functionality_bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/user_functionality_bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/ISSUE_TEMPLATE/user_functionality_bug_report.md -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/pull_request_template.md -------------------------------------------------------------------------------- /.github/resources/AdGuardHome.mustache.config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/resources/AdGuardHome.mustache.config.json -------------------------------------------------------------------------------- /.github/scripts/expand_mustache.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/scripts/expand_mustache.sh -------------------------------------------------------------------------------- /.github/scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | lxml 2 | natsort 3 | packaging 4 | requests -------------------------------------------------------------------------------- /.github/scripts/update_docker_versions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/scripts/update_docker_versions.py -------------------------------------------------------------------------------- /.github/workflows/build_documentation.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/build_documentation.yaml -------------------------------------------------------------------------------- /.github/workflows/citation.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/citation.yaml -------------------------------------------------------------------------------- /.github/workflows/dependabot_amend.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/dependabot_amend.yaml -------------------------------------------------------------------------------- /.github/workflows/lint_code.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/lint_code.yaml -------------------------------------------------------------------------------- /.github/workflows/publish_pypi.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/publish_pypi.yaml -------------------------------------------------------------------------------- /.github/workflows/test_code.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/test_code.yaml -------------------------------------------------------------------------------- /.github/workflows/test_coverage.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/test_coverage.yaml -------------------------------------------------------------------------------- /.github/workflows/update_docker_versions.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.github/workflows/update_docker_versions.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.gitignore -------------------------------------------------------------------------------- /.hatch/requirements-docs.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.hatch/requirements-docs.txt -------------------------------------------------------------------------------- /.hatch/requirements-lint.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.hatch/requirements-lint.txt -------------------------------------------------------------------------------- /.hatch/requirements-test.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.hatch/requirements-test.txt -------------------------------------------------------------------------------- /.hatch/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.hatch/requirements.txt -------------------------------------------------------------------------------- /.lychee.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.lychee.toml -------------------------------------------------------------------------------- /.mdlstyle.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.mdlstyle.rb -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.readthedocs.yaml -------------------------------------------------------------------------------- /.yamllint.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/.yamllint.yaml -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/CITATION.cff -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/CODEOWNERS -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /DISCLAIMER.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/DISCLAIMER.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/README.md -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/ROADMAP.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/SECURITY.md -------------------------------------------------------------------------------- /VERSIONING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/VERSIONING.md -------------------------------------------------------------------------------- /data_safe_haven/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/administration/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data_safe_haven/administration/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/administration/users/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/administration/users/entra_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/administration/users/entra_users.py -------------------------------------------------------------------------------- /data_safe_haven/administration/users/guacamole_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/administration/users/guacamole_users.py -------------------------------------------------------------------------------- /data_safe_haven/administration/users/research_user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/administration/users/research_user.py -------------------------------------------------------------------------------- /data_safe_haven/administration/users/user_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/administration/users/user_handler.py -------------------------------------------------------------------------------- /data_safe_haven/allowlist/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/allowlist/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/allowlist/allowlist.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/allowlist/allowlist.py -------------------------------------------------------------------------------- /data_safe_haven/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/commands/allowlist.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/allowlist.py -------------------------------------------------------------------------------- /data_safe_haven/commands/cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/cli.py -------------------------------------------------------------------------------- /data_safe_haven/commands/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/config.py -------------------------------------------------------------------------------- /data_safe_haven/commands/context.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/context.py -------------------------------------------------------------------------------- /data_safe_haven/commands/pulumi.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/pulumi.py -------------------------------------------------------------------------------- /data_safe_haven/commands/shm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/shm.py -------------------------------------------------------------------------------- /data_safe_haven/commands/sre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/sre.py -------------------------------------------------------------------------------- /data_safe_haven/commands/users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/commands/users.py -------------------------------------------------------------------------------- /data_safe_haven/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/config/config_sections.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/config_sections.py -------------------------------------------------------------------------------- /data_safe_haven/config/context.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/context.py -------------------------------------------------------------------------------- /data_safe_haven/config/context_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/context_manager.py -------------------------------------------------------------------------------- /data_safe_haven/config/dsh_pulumi_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/dsh_pulumi_config.py -------------------------------------------------------------------------------- /data_safe_haven/config/dsh_pulumi_project.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/dsh_pulumi_project.py -------------------------------------------------------------------------------- /data_safe_haven/config/shm_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/shm_config.py -------------------------------------------------------------------------------- /data_safe_haven/config/sre_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/config/sre_config.py -------------------------------------------------------------------------------- /data_safe_haven/console/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/console/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/console/format.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/console/format.py -------------------------------------------------------------------------------- /data_safe_haven/console/pretty.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/console/pretty.py -------------------------------------------------------------------------------- /data_safe_haven/console/prompts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/console/prompts.py -------------------------------------------------------------------------------- /data_safe_haven/directories.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/directories.py -------------------------------------------------------------------------------- /data_safe_haven/exceptions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/exceptions/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/external/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/external/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data_safe_haven/external/api/azure_sdk.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/api/azure_sdk.py -------------------------------------------------------------------------------- /data_safe_haven/external/api/credentials.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/api/credentials.py -------------------------------------------------------------------------------- /data_safe_haven/external/api/graph_api.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/api/graph_api.py -------------------------------------------------------------------------------- /data_safe_haven/external/interface/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data_safe_haven/external/interface/azure_container_instance.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/interface/azure_container_instance.py -------------------------------------------------------------------------------- /data_safe_haven/external/interface/azure_ipv4_range.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/interface/azure_ipv4_range.py -------------------------------------------------------------------------------- /data_safe_haven/external/interface/azure_postgresql_database.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/interface/azure_postgresql_database.py -------------------------------------------------------------------------------- /data_safe_haven/external/interface/pulumi_account.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/external/interface/pulumi_account.py -------------------------------------------------------------------------------- /data_safe_haven/functions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/functions/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/functions/network.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/functions/network.py -------------------------------------------------------------------------------- /data_safe_haven/functions/strings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/functions/strings.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/common/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/common/dockerhub_credentials.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/common/dockerhub_credentials.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/common/ip_ranges.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/common/ip_ranges.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/common/transformations.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/common/transformations.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/entra_application.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/entra_application.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/local_dns_record.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/local_dns_record.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/microsoft_sql_database.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/microsoft_sql_database.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/nfsv3_storage_account.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/nfsv3_storage_account.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/postgresql_database.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/postgresql_database.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/composite/virtual_machine.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/composite/virtual_machine.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/dynamic/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/dynamic/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/dynamic/blob_container_acl.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/dynamic/blob_container_acl.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/dynamic/dsh_resource_provider.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/dynamic/dsh_resource_provider.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/dynamic/file_share_file.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/dynamic/file_share_file.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/dynamic/ssl_certificate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/dynamic/ssl_certificate.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/wrapped/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/wrapped/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/components/wrapped/log_analytics_workspace.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/components/wrapped/log_analytics_workspace.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/declarative_sre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/declarative_sre.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/imperative_shm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/imperative_shm.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/application_gateway.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/application_gateway.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/apt_proxy_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/apt_proxy_server.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/backup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/backup.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/clamav_mirror.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/clamav_mirror.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/data.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/database_servers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/database_servers.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/desired_state.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/desired_state.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/dns_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/dns_server.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/dns_server_vm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/dns_server_vm.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/dns_sidecar.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/dns_sidecar.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/entra.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/entra.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/firewall.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/firewall.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/gitea_mirror_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/gitea_mirror_manager.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/gitea_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/gitea_server.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/identity.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/identity.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/monitoring.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/monitoring.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/monitoring_elements.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/monitoring_elements.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/networking.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/networking.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/remote_desktop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/remote_desktop.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/software_repositories.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/software_repositories.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/user_services.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/user_services.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/programs/sre/workspaces.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/programs/sre/workspaces.py -------------------------------------------------------------------------------- /data_safe_haven/infrastructure/project_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/infrastructure/project_manager.py -------------------------------------------------------------------------------- /data_safe_haven/logging/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/logging/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/logging/logger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/logging/logger.py -------------------------------------------------------------------------------- /data_safe_haven/logging/non_logging_singleton.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/logging/non_logging_singleton.py -------------------------------------------------------------------------------- /data_safe_haven/logging/plain_file_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/logging/plain_file_handler.py -------------------------------------------------------------------------------- /data_safe_haven/provisioning/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/provisioning/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/provisioning/sre_provisioning_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/provisioning/sre_provisioning_manager.py -------------------------------------------------------------------------------- /data_safe_haven/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/resources/dns_server/AdGuardHome.mustache.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/dns_server/AdGuardHome.mustache.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/dns_server/dns_server_vm.cloud_init.mustache.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/dns_server/dns_server_vm.cloud_init.mustache.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/dns_server/entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/dns_server/entrypoint.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/dns_sidecar/init.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/dns_sidecar/init.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/gitea/caddy/Caddyfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/gitea/caddy/Caddyfile -------------------------------------------------------------------------------- /data_safe_haven/resources/gitea/gitea-mirror/configure.mustache.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/gitea/gitea-mirror/configure.mustache.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/gitea/gitea/configure.mustache.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/gitea/gitea/configure.mustache.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/gitea/gitea/entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/gitea/gitea/entrypoint.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/hedgedoc/caddy/Caddyfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/hedgedoc/caddy/Caddyfile -------------------------------------------------------------------------------- /data_safe_haven/resources/hedgedoc/hedgedoc/config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/hedgedoc/hedgedoc/config.json -------------------------------------------------------------------------------- /data_safe_haven/resources/remote_desktop/caddy/Caddyfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/remote_desktop/caddy/Caddyfile -------------------------------------------------------------------------------- /data_safe_haven/resources/remote_desktop/postgresql/init_db.mustache.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/remote_desktop/postgresql/init_db.mustache.sql -------------------------------------------------------------------------------- /data_safe_haven/resources/remote_desktop/postgresql/list_users.mustache.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/remote_desktop/postgresql/list_users.mustache.sql -------------------------------------------------------------------------------- /data_safe_haven/resources/remote_desktop/postgresql/update_connections.mustache.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/remote_desktop/postgresql/update_connections.mustache.sql -------------------------------------------------------------------------------- /data_safe_haven/resources/software_repositories/allowlists/cran.allowlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/software_repositories/allowlists/cran.allowlist -------------------------------------------------------------------------------- /data_safe_haven/resources/software_repositories/allowlists/pypi.allowlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/software_repositories/allowlists/pypi.allowlist -------------------------------------------------------------------------------- /data_safe_haven/resources/software_repositories/caddy/Caddyfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/software_repositories/caddy/Caddyfile -------------------------------------------------------------------------------- /data_safe_haven/resources/update_server/update_server_linux.cloud_init.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/update_server/update_server_linux.cloud_init.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/desired_state.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/desired_state.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/clamav/clamd.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/clamav/clamd.conf -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/polkit-1/localauthority/50-local.d/50-colord.pkla: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/polkit-1/localauthority/50-local.d/50-colord.pkla -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession: -------------------------------------------------------------------------------- 1 | xfce4-session 2 | -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamdscan.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamdscan.service -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamdscan.timer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamdscan.timer -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/xdg/xfce4/terminal/terminalrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/xdg/xfce4/terminal/terminalrc -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/etc/xrdp/xrdp.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/etc/xrdp/xrdp.ini -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/bin/privileged-rules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/bin/privileged-rules -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/gitea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/gitea.png -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/hedgedoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/hedgedoc.png -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/share/xrdp/dsh_logo_240x140_256color.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/share/xrdp/dsh_logo_240x140_256color.bmp -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases_R.R: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases_R.R -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases_python.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_databases_python.py -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_functionality_R.R: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_functionality_R.R -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_functionality_python.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_functionality_python.py -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_mounted_drives.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_mounted_drives.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_repository_R.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_repository_R.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_repository_python.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/test_repository_python.sh -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/package_proxy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/package_proxy.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/packages.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/scratchpad.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/scratchpad.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/smoke_tests.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/smoke_tests.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/sshd.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/sshd.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/ubuntu_pro.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/ubuntu_pro.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/user_config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/user_config.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/tasks/xrdp.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/tasks/xrdp.yaml -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/audit/rules.d/audit.rules.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/audit/rules.d/audit.rules.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/database_credential.j2: -------------------------------------------------------------------------------- 1 | {{ database_service_admin_password }} 2 | -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/nslcd.conf.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/nslcd.conf.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/pip.conf.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/pip.conf.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/gitea.desktop.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/gitea.desktop.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/hedgedoc.desktop.j2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/hedgedoc.desktop.j2 -------------------------------------------------------------------------------- /data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml -------------------------------------------------------------------------------- /data_safe_haven/serialisers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/serialisers/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/serialisers/azure_serialisable_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/serialisers/azure_serialisable_model.py -------------------------------------------------------------------------------- /data_safe_haven/serialisers/context_base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/serialisers/context_base.py -------------------------------------------------------------------------------- /data_safe_haven/serialisers/yaml_serialisable_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/serialisers/yaml_serialisable_model.py -------------------------------------------------------------------------------- /data_safe_haven/singleton.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/singleton.py -------------------------------------------------------------------------------- /data_safe_haven/types/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/types/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/types/annotated_types.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/types/annotated_types.py -------------------------------------------------------------------------------- /data_safe_haven/types/enums.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/types/enums.py -------------------------------------------------------------------------------- /data_safe_haven/types/types.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/types/types.py -------------------------------------------------------------------------------- /data_safe_haven/utility/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/utility/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/utility/file_reader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/utility/file_reader.py -------------------------------------------------------------------------------- /data_safe_haven/validators/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/validators/__init__.py -------------------------------------------------------------------------------- /data_safe_haven/validators/typer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/validators/typer.py -------------------------------------------------------------------------------- /data_safe_haven/validators/validators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/validators/validators.py -------------------------------------------------------------------------------- /data_safe_haven/version.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/data_safe_haven/version.py -------------------------------------------------------------------------------- /docs/source/_static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/_static/favicon.ico -------------------------------------------------------------------------------- /docs/source/_static/logo_turing_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/_static/logo_turing_dark.png -------------------------------------------------------------------------------- /docs/source/_static/logo_turing_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/_static/logo_turing_light.png -------------------------------------------------------------------------------- /docs/source/_static/overrides.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/_static/overrides.css -------------------------------------------------------------------------------- /docs/source/_static/scriberia_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/_static/scriberia_diagram.jpg -------------------------------------------------------------------------------- /docs/source/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/conf.py -------------------------------------------------------------------------------- /docs/source/contributing/devops_gap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/contributing/devops_gap.png -------------------------------------------------------------------------------- /docs/source/contributing/example-conversation-in-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/contributing/example-conversation-in-issue.png -------------------------------------------------------------------------------- /docs/source/contributing/gitflow.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/contributing/gitflow.svg -------------------------------------------------------------------------------- /docs/source/contributing/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/contributing/index.md -------------------------------------------------------------------------------- /docs/source/deployment/configure_entra_id.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/configure_entra_id.md -------------------------------------------------------------------------------- /docs/source/deployment/deploy_shm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/deploy_shm.md -------------------------------------------------------------------------------- /docs/source/deployment/deploy_sre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/deploy_sre.md -------------------------------------------------------------------------------- /docs/source/deployment/images/backup_fix_protection_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/images/backup_fix_protection_error.png -------------------------------------------------------------------------------- /docs/source/deployment/images/entra_authentication_methods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/images/entra_authentication_methods.png -------------------------------------------------------------------------------- /docs/source/deployment/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/index.md -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist.md -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_internet_browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_internet_browser.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_internet_curl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_internet_curl.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_nslookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_nslookup.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_ssh_fqdn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_ssh_fqdn.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_ssh_ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_ssh_ip.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/no_valid_workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/no_valid_workspaces.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/nsg_inbound_access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/nsg_inbound_access.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/pypi_t2_allowed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/pypi_t2_allowed.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/pypi_t2_disallowed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/pypi_t2_disallowed.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/pypi_t3_allowed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/pypi_t3_allowed.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/pypi_t3_disallowed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/pypi_t3_disallowed.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/security_checklist_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/security_checklist_template.md -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/sspr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/sspr.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/sspr_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/sspr_success.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/valid_workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/valid_workspaces.png -------------------------------------------------------------------------------- /docs/source/deployment/security_checklist/workspace_xfce_initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/security_checklist/workspace_xfce_initial.png -------------------------------------------------------------------------------- /docs/source/deployment/setup_context.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/deployment/setup_context.md -------------------------------------------------------------------------------- /docs/source/design/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/index.md -------------------------------------------------------------------------------- /docs/source/design/security/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/security/index.md -------------------------------------------------------------------------------- /docs/source/design/security/objectives.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/security/objectives.md -------------------------------------------------------------------------------- /docs/source/design/security/reference_configuration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/security/reference_configuration.md -------------------------------------------------------------------------------- /docs/source/design/security/sample_security_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/security/sample_security_controls.png -------------------------------------------------------------------------------- /docs/source/design/security/technical_controls.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/design/security/technical_controls.md -------------------------------------------------------------------------------- /docs/source/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/index.md -------------------------------------------------------------------------------- /docs/source/management/allowlist.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/allowlist.md -------------------------------------------------------------------------------- /docs/source/management/data.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/data.md -------------------------------------------------------------------------------- /docs/source/management/egress_token_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/egress_token_read_only.png -------------------------------------------------------------------------------- /docs/source/management/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/index.md -------------------------------------------------------------------------------- /docs/source/management/ingress_token_write_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/ingress_token_write_only.png -------------------------------------------------------------------------------- /docs/source/management/logs.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/logs.md -------------------------------------------------------------------------------- /docs/source/management/sre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/sre.md -------------------------------------------------------------------------------- /docs/source/management/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/management/user.md -------------------------------------------------------------------------------- /docs/source/overview/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/overview/index.md -------------------------------------------------------------------------------- /docs/source/overview/sensitivity_tiers.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/overview/sensitivity_tiers.md -------------------------------------------------------------------------------- /docs/source/overview/using_dsh.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/overview/using_dsh.md -------------------------------------------------------------------------------- /docs/source/overview/what_is_dsh.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/overview/what_is_dsh.md -------------------------------------------------------------------------------- /docs/source/overview/why_use_dsh.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/overview/why_use_dsh.md -------------------------------------------------------------------------------- /docs/source/reference/allowlist.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/allowlist.md -------------------------------------------------------------------------------- /docs/source/reference/config.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/config.md -------------------------------------------------------------------------------- /docs/source/reference/context.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/context.md -------------------------------------------------------------------------------- /docs/source/reference/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/index.md -------------------------------------------------------------------------------- /docs/source/reference/pulumi.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/pulumi.md -------------------------------------------------------------------------------- /docs/source/reference/shm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/shm.md -------------------------------------------------------------------------------- /docs/source/reference/sre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/sre.md -------------------------------------------------------------------------------- /docs/source/reference/users.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/reference/users.md -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/azcopy_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/azcopy_warning.png -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/azure_storage_explorer_connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/azure_storage_explorer_connect.png -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/azure_storage_explorer_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/azure_storage_explorer_container.png -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/azure_storage_explorer_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/azure_storage_explorer_error.png -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/data_ingress.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/data_ingress.md -------------------------------------------------------------------------------- /docs/source/roles/data_provider_representative/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/data_provider_representative/index.md -------------------------------------------------------------------------------- /docs/source/roles/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/index.md -------------------------------------------------------------------------------- /docs/source/roles/investigator/data_egress.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/investigator/data_egress.md -------------------------------------------------------------------------------- /docs/source/roles/investigator/data_ingress.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/investigator/data_ingress.md -------------------------------------------------------------------------------- /docs/source/roles/investigator/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/investigator/index.md -------------------------------------------------------------------------------- /docs/source/roles/programme_manager/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/programme_manager/index.md -------------------------------------------------------------------------------- /docs/source/roles/project_manager/data_egress.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/project_manager/data_egress.md -------------------------------------------------------------------------------- /docs/source/roles/project_manager/data_ingress.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/project_manager/data_ingress.md -------------------------------------------------------------------------------- /docs/source/roles/project_manager/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/project_manager/index.md -------------------------------------------------------------------------------- /docs/source/roles/project_manager/project_lifecycle.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/project_manager/project_lifecycle.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/accessing_the_sre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/accessing_the_sre.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/available_software.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/available_software.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_captcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_captcha.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_forgotten_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_forgotten_password.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_add_authenticator_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_add_authenticator_app.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_additional_security_verification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_additional_security_verification.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_allow_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_allow_notifications.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_app_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_app_qrcode.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_choose_authenticator_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_choose_authenticator_app.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_dashboard_microsoft_authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_dashboard_microsoft_authenticator.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_dashboard_phone_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_dashboard_phone_only.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_dashboard_totp_authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_dashboard_totp_authenticator.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_microsoft_authenticator_app_approved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_microsoft_authenticator_app_approved.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_microsoft_authenticator_app_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_microsoft_authenticator_app_test.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_registered_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_registered_phone.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_totp_allow_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_totp_allow_notifications.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_totp_app_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_totp_app_qrcode.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_totp_authenticator_app_approved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_totp_authenticator_app_approved.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_totp_authenticator_app_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_totp_authenticator_app_test.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_verified_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_verified_phone.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_mfa_verifying_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_mfa_verifying_phone.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_more_information_required.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_more_information_required.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_new_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_new_password.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_new_password_sign_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_new_password_sign_in.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/account_setup_verify_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/account_setup_verify_phone.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/db_beekeeper_studio_mssql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/db_beekeeper_studio_mssql.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/db_beekeeper_studio_postgres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/db_beekeeper_studio_postgres.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/firefox_not_responding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/firefox_not_responding.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_dashboard.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_explore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_explore.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_homepage.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_login.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_new_repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_new_repository.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_pull_request_diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_pull_request_diff.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_pull_request_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_pull_request_finish.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_pull_request_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_pull_request_start.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/gitea_repository_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/gitea_repository_view.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/guacamole_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/guacamole_dashboard.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/guacamole_dashboard_multiple_workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/guacamole_dashboard_multiple_workspaces.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/guacamole_mfa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/guacamole_mfa.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/guacamole_oauth_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/guacamole_oauth_login.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/hedgedoc_access_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/hedgedoc_access_options.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/hedgedoc_homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/hedgedoc_homepage.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/hedgedoc_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/hedgedoc_login.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/hedgedoc_publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/hedgedoc_publish.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_desktop_applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_desktop_applications.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_desktop_pycharm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_desktop_pycharm.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_desktop_rstudio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_desktop_rstudio.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_desktop_vscodium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_desktop_vscodium.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_login_failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_login_failure.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_login_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_login_screen.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_terminal_python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_terminal_python.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_terminal_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_terminal_r.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/images/workspace_xfce_initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/images/workspace_xfce_initial.png -------------------------------------------------------------------------------- /docs/source/roles/researcher/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/index.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/new_user_setup.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/new_user_setup.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/snippets/software_database.partial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/snippets/software_database.partial.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/snippets/software_editors.partial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/snippets/software_editors.partial.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/snippets/software_languages.partial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/snippets/software_languages.partial.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/snippets/software_other.partial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/snippets/software_other.partial.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/snippets/software_presentation.partial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/snippets/software_presentation.partial.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/troubleshooting.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/troubleshooting.md -------------------------------------------------------------------------------- /docs/source/roles/researcher/using_the_sre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/researcher/using_the_sre.md -------------------------------------------------------------------------------- /docs/source/roles/system_manager/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/docs/source/roles/system_manager/index.md -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/pyproject.toml -------------------------------------------------------------------------------- /tests/allowlist/test_allowlist.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/allowlist/test_allowlist.py -------------------------------------------------------------------------------- /tests/commands/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/conftest.py -------------------------------------------------------------------------------- /tests/commands/test_allowlist.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_allowlist.py -------------------------------------------------------------------------------- /tests/commands/test_cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_cli.py -------------------------------------------------------------------------------- /tests/commands/test_config_shm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_config_shm.py -------------------------------------------------------------------------------- /tests/commands/test_config_sre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_config_sre.py -------------------------------------------------------------------------------- /tests/commands/test_context.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_context.py -------------------------------------------------------------------------------- /tests/commands/test_pulumi.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_pulumi.py -------------------------------------------------------------------------------- /tests/commands/test_shm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_shm.py -------------------------------------------------------------------------------- /tests/commands/test_sre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_sre.py -------------------------------------------------------------------------------- /tests/commands/test_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/commands/test_users.py -------------------------------------------------------------------------------- /tests/config/test_config_sections.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/config/test_config_sections.py -------------------------------------------------------------------------------- /tests/config/test_context_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/config/test_context_manager.py -------------------------------------------------------------------------------- /tests/config/test_pulumi.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/config/test_pulumi.py -------------------------------------------------------------------------------- /tests/config/test_shm_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/config/test_shm_config.py -------------------------------------------------------------------------------- /tests/config/test_sre_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/config/test_sre_config.py -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/conftest.py -------------------------------------------------------------------------------- /tests/console/test_format.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/console/test_format.py -------------------------------------------------------------------------------- /tests/console/test_pretty.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/console/test_pretty.py -------------------------------------------------------------------------------- /tests/console/test_prompts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/console/test_prompts.py -------------------------------------------------------------------------------- /tests/external/api/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/external/api/conftest.py -------------------------------------------------------------------------------- /tests/external/api/test_azure_sdk.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/external/api/test_azure_sdk.py -------------------------------------------------------------------------------- /tests/external/api/test_credentials.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/external/api/test_credentials.py -------------------------------------------------------------------------------- /tests/external/api/test_graph_api.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/external/api/test_graph_api.py -------------------------------------------------------------------------------- /tests/functions/test_network.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/functions/test_network.py -------------------------------------------------------------------------------- /tests/functions/test_strings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/functions/test_strings.py -------------------------------------------------------------------------------- /tests/infrastructure/common/test_ip_ranges.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/common/test_ip_ranges.py -------------------------------------------------------------------------------- /tests/infrastructure/programs/resource_assertions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/programs/resource_assertions.py -------------------------------------------------------------------------------- /tests/infrastructure/programs/sre/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/programs/sre/conftest.py -------------------------------------------------------------------------------- /tests/infrastructure/programs/sre/test_application_gateway.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/programs/sre/test_application_gateway.py -------------------------------------------------------------------------------- /tests/infrastructure/programs/sre/test_firewall.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/programs/sre/test_firewall.py -------------------------------------------------------------------------------- /tests/infrastructure/programs/sre/test_workspaces.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/programs/sre/test_workspaces.py -------------------------------------------------------------------------------- /tests/infrastructure/test_project_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/infrastructure/test_project_manager.py -------------------------------------------------------------------------------- /tests/logging/test_logger.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/logging/test_logger.py -------------------------------------------------------------------------------- /tests/logging/test_non_logging_singleton.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/logging/test_non_logging_singleton.py -------------------------------------------------------------------------------- /tests/logging/test_plain_file_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/logging/test_plain_file_handler.py -------------------------------------------------------------------------------- /tests/serialisers/test_azure_serialisable_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/serialisers/test_azure_serialisable_model.py -------------------------------------------------------------------------------- /tests/serialisers/test_yaml_serialisable_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/serialisers/test_yaml_serialisable_model.py -------------------------------------------------------------------------------- /tests/validators/test_typer_validators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/validators/test_typer_validators.py -------------------------------------------------------------------------------- /tests/validators/test_validators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/tests/validators/test_validators.py -------------------------------------------------------------------------------- /typings/fqdn/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/fqdn/__init__.pyi -------------------------------------------------------------------------------- /typings/pulumi/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/pulumi/__init__.pyi -------------------------------------------------------------------------------- /typings/pulumi_azure_native/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/pulumi_azure_native/__init__.pyi -------------------------------------------------------------------------------- /typings/typer/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/typer/__init__.pyi -------------------------------------------------------------------------------- /typings/typer/main.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/typer/main.pyi -------------------------------------------------------------------------------- /typings/typer/models.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/typer/models.pyi -------------------------------------------------------------------------------- /typings/typer/params.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alan-turing-institute/data-safe-haven/HEAD/typings/typer/params.pyi --------------------------------------------------------------------------------