LogoLogo
Illumina KnowledgeIllumina SupportSign In
  • Home
  • Get Started with Emedgene
    • Get started with Emedgene
    • How can Emedgene help you solve a case?
  • Emedgene analyze manual
    • Getting around the platform
      • Top navigation panel
      • Emedgene Applications menu
      • Dashboard
      • Settings
      • User roles
      • Help
      • Okta identity management
    • Managing data storage
      • Manage data storages
      • Manage Azure Blob data storage
      • Manage S3 credentials
      • Manage BaseSpace storage
      • Manage GCS storage (V37.0+)
      • Bring Your Own Bucket
      • Bring Your Own Key
    • Cases tab
      • Cases tab
      • Cases table
      • Case status
      • Browse and select cases
      • Case details
    • Creating a single case
      • Add a new case
      • Select sample type
      • Create a family tree
      • Family tree legend
      • Add a sample
      • Supported Variant callers
      • Adding patient info for the proband
      • Adding patient info for the non-proband samples
      • Secondary findings
      • Labeling a case
      • Gene list
      • Supported parental ethnicities
    • Creating multiple cases
      • Batch case upload from platform
      • CSV format requirements
      • Batch case upload via CLI
    • Reviewing a case
      • Individual case page
      • Individual case page: Top bar
      • Individual case page: Top bar
      • Candidates tab
      • Most Likely Candidates and Candidates
      • Genome Overview
      • Analysis tools tab
      • Variant table columns
      • Variant table
      • Variant search
      • Multiselection of variants and bulk actions (34.0+)
      • Download variants
      • Manually add variants to a delivered case
      • Filters/Presets panel
      • Filters
      • Presets
      • Preset groups
      • Variant Type Filters
      • Variant Effect Filters
      • Quality Filters
      • Polymorphism Filters
      • Gene Filters
      • Phenomatch Filters
      • Inheritance Filters
      • Zygosity Filters
      • User Filters
      • Evidence page
      • Phenotypic match strength
      • Lab tab
      • Versions tab
      • Editing an existing case
      • Finalizing a case
      • Clinical Report
      • Reflex genetic testing
      • Variant zygosity notations
      • STR calling and interpretation
    • Variant page
      • Variant page
      • Variant page top bar
      • Variant tagging widget
      • Variant activity panel
      • Desktop apps panel
      • Clinical Significance section
      • Summary section
      • Quality section
      • Visualization section
      • Population Statistics section
      • Related Cases section
      • CNV overlap percentage
      • Evidence section
      • ACMG SNV Classification wizard
      • Logic behind ACMG classification of SNVs
      • ACMG CNV Classification wizard
      • Variant page sidebar (2.29+)
    • Variant visualization setup
      • Enabling visualization for a VCF case
      • Integration between emedgene and desktop IGV
      • Loading alignment files to your desktop IGV (32.0+)
    • Analyze Network
      • Analyze Network Setup
      • Network sharing configuration
      • Case subject consent for extended sharing
      • Public vs Private network
      • Create a network
      • Set network data sharing policy
      • Leave a network
      • Delete a network
    • Settings
      • My settings
      • Management
      • User Management
      • Network
      • Organization Settings (33.0+)
    • Integrations
      • API Beginner Guide
      • Advanced API Implementations
      • API Key Generation
      • BSSH Integration
      • ICA Integration
      • Webhook Integration
  • Emedgene Curate Manual
    • Curate overview
      • Curate overview
      • Emedgene Applications menu
      • Curate navigation panel
      • Genome assemblies supported by Curate
    • Curate Variants
      • Curate Variants overview
      • Curate Variant table
      • Curate Variant page
      • How to add a variant to Curate
      • Curate Variant annotations in the case
    • Curate Genes (2.28+)
      • Curate Genes overview
      • Curate Gene table
      • Curate Gene page
      • How to add a gene to Curate
    • Import Curate annotations to the case (30.0+)
      • Import Curate Variant annotations to the case (30.0+)
      • Import Curate Gene annotations to the case (30.0+)
  • Frequently Asked Questions
    • All FAQ
      • Which browser should I use with Emedgene?
      • Emedgene annotations and update frequency
      • How do I use developer tools to collect logs?
      • Can I analyze Illumina Complete Long Reads in Emedgene?
      • How do I prepare VCF files generated by DRAGEN MANTA to be used as input for Emedgene?
      • Source of gnomAD data for small variants on GRCh38
      • How are MNVs handled on the platform?
      • Support for gene lists with up to 10,000 genes
      • Genomic Regions by Case Type
      • How do I analyze mtDNA variants?
      • Can I use exome data for CNV detection?
      • How does joint calling work on Emedgene?
      • What is the required format for a BED file defining a kit?
      • Which reference genomes can I use?
      • How do I move between organizations?
      • How do I check the version of my environment?
      • "Failed to generate report". What should I do?
      • How do I prepare VCF files generated by Dragen STR (ExpansionHunter) to be used as input?
      • How does Emedgene Analyze prioritize transcripts?
      • How does Emedgene Analyze merge variants from different sources?
      • Performance issue troubleshooting
      • How does Emedgene calculate variant effect and severity ?
      • How to I prepare metrics files generated by DRAGEN to be used as input for Emedgene
      • How are timekeeping and log timestamps kept accurate and consistent?
  • Release Notes
    • Workbench & Pipeline Updates
      • New in Emedgene V37.0 (February 20, 2025)
        • V37 Patches
      • New in Emedgene V36.0 (October 8 2024)
        • V36 Patches
      • New in Emedgene V35.0 (May 22nd 2024)
        • V35 Patches
      • New in Emedgene V34.0 (January 28th 2024)
        • V34 Patches
      • New in Emedgene V33.0 (September 6th 2023)
        • V33 Patches
      • New in Emedgene V32.0 (June 8th 2023)
        • New pipeline 32 (June 8th 2023)
        • V32 Patches
      • More release notes
        • New in emedgene 31 (March 1st 2023)
        • New in emedgene 30 (January 8th 2023)
        • New in emedgene 2.29 (August 25 2022)
        • New pipeline 5.29 (May 1st 2022)
        • New in emedgene 2.28 (May 1 2022)
        • New in emedgene 2.27 (March 7, 2022)
        • New in emedgene 2.26 (Dec 14, 2021)
        • New in emedgene 2.24-2.25 (Aug 11, 2021)
        • New in emedgene 2.23 (Jun 15, 2021)
        • New in emedgene 2.19-2.22 (Apr 8, 2021)
        • New in emedgene 2.16-2.19 (Dec 7, 2020)
        • New in emedgene 2.12-2.16 (Oct 18, 2020)
    • Knowledgebase Updates
      • 2025
        • Variant Databases (March 30th 2025)
        • Zoidberg 77 (March 17th 2025)
        • Zoidberg 76 (February 3rd 2025)
        • Zoidberg 75 (January 6th 2025)
      • 2024
        • Variant Databases (December 8th 2024)
        • Zoidberg 74 (December 2nd 2024)
        • Zoidberg 73 (October 21th 2024)
        • Variant Databases (September 22nd 2024)
        • Zoidberg 72 (September 10th 2024)
        • Variant Databases (July 21st 2024)
        • Zoidberg 71 (July 24th 2024)
        • Zoidberg 70 (June 3rd 2024)
        • Zoidberg 69 (April 19th 2024)
        • Variant Databases (April 9th 2024)
        • Zoidberg 68 (March 18th 2024)
        • Variant Databases (February 5th 2024)
        • Zoidberg 67 (January 28th 2024)
        • Variant Databases (January 5th 2024)
      • 2023
        • Zoidberg 66 (December 24th 2023)
        • Variant Databases (December 3rd 2023)
        • Zoidberg 65 (November 21th 2023)
        • Variant Databases (November 5th 2023)
        • Zoidberg 64 (October 24th 2023)
        • Variant Databases (October 8th 2023)
        • Zoidberg 63 (September 18th 2023)
        • Variant Databases (September 5th 2023)
        • Zoidberg 62 (August 23th 2023)
        • Zoidberg 61 (August 16th 2023)
        • Variant Databases (August 6th 2023)
        • Zoidberg 60 (July 30th 2023)
        • Variant Databases (July 2nd 2023)
        • Zoidberg 59 (June 18th 2023)
        • Variant Databases (June 4th 2023)
          • Variant Databases (May 7th 2023)
        • Zoidberg 58 (May 21th 2023)
        • Zoidberg 57 (April 16th 2023)
        • Variant Databases (April 2nd 2023)
        • Zoidberg 56 (March 19th 2023)
        • Variant Databases (March 11th 2023)
        • Zoidberg 55 (February 19th 2023)
        • Zoidberg 54 (January 16th 2023)
    • Change log
      • Change log pipeline v34
      • Change log pipeline 31
      • Change log workbench 31
      • Change log pipeline 30
      • Change log workbench 30
      • Change log workbench 2.29
      • Change log pipeline 5.29
      • Change log workbench 2.28
  • Legal
    • Privacy, Security & Compliance
    • Release Policy
Powered by GitBook
On this page
  • Scope
  • Setup
  • Azure Key Vault Setup
  • AWS Key Management Service (KMS) Setup
  • Architecture
  • Searching Encrypted Fields
  • Appendix

Was this helpful?

Export as PDF
  1. Emedgene analyze manual
  2. Managing data storage

Bring Your Own Key

PreviousBring Your Own BucketNextCases tab

Last updated 6 months ago

Was this helpful?

Bring your own key is only available for Enterprise level support accounts and require Illumina support for setup

Scope

Bring Your Own Key (BYOK) is a security feature that allows clients to use their own encryption keys to protect their data. This ensures that clients maintain control over their encryption keys and, consequently, their data. Only Enterprise level support accounts can access this feature, and it requires assistance from Illumina support for setup.

Supported Key Management Services

Illumina supports integration with popular Key Management Services (KMS) such as Azure Key Vault and AWS KMS for managing your encryption keys. This integration allows clients to use their existing key management solutions for generating, storing, and managing their keys securely.

Azure Key Vault

is a cloud service that provides a secure way to store and manage sensitive information like API keys, passwords, and certificates. It offers robust features for key management, including key generation, storage, and lifecycle management.

AWS KMS

(KMS) allows you to create and control encryption keys used to encrypt your data across a wide range of AWS services and applications. It provides centralized management of encryption keys and integrates seamlessly with other AWS services.

These integrations ensure robust key management capabilities and enhance the security of your data through a combination of Illumina's BYOK feature and your preferred KMS provider.

Risk of Losing a Key

Losing the encryption key means that all data encrypted with that key will be inaccessible. This can lead to permanent loss of access to crucial information. It is imperative that clients securely store and manage their keys to prevent such risks.


Setup

Azure Key Vault Setup

Emedgene’s API server will encrypt the client’s information before storing in Emedgene’s database and decrypt that information when needed (e.g. running the pipeline). The key vault is managed by the customer. The customer needs to provide the following information.

Please see below instructions on how to get or create it

Application Tokens:

  • Client Id

  • Client Secret

  • Tenant Id

The key information:

  • Key URL

Create a new Application

  1. Navigate to App registration

  2. Register a new application, click “Register”

  3. When you created the app, please copy Application (client) ID and Directory (tenant) ID

  4. Go to Certificates and secrets (in the left menu)

  5. Press “New client secret” and provide the “Value”

Please note the expiration date of the secret, as once expired it will impair our system.

Create a new Key

  1. Press New Key (Create key vault)

  2. Specify key vault name, region (ie. East US) and pricing tier

  3. Click “Next” to Access Policies

  4. Press “Add access policy” and set Key permissions:

    1. Key Management Operations: -

    2. Cryptographic Operations: Decrypt, Encrypt, Unwrap Key, Wrap Key

  5. Then set Secret permissions:

    1. Secret Permission: Get

    2. Select principal: select the application you created before (in Create a new Application step)

  6. Finish with “Review + create”

Find key details

  1. Navigate to the newly created Key vault

  2. Select keys on the left side, select the key

  3. Select the current version and copy “Key Identifier” https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>\

AWS Key Management Service (KMS) Setup

Description is coming soon.

Please reach out to tech-support@illumina.com to get help with this setup.


Architecture

Emedgene’s API server will encrypt the client’s information before storing in Emedgene’s database and decrypt that information when needed (e.g. running the pipeline). The key vault is managed by the client, and Emedgene will only be provided with access to encrypt/decrypt functions in that key vault. This guarantees that the clients controls access to the information.

Illustration of data flow when creating a case in Emedgene platform:

Illustration of data flow when reading a case data from Emedgene platform:

A preliminary step to this solution is having a key vault owned by the client, and a key that Emedgene is given access to.

The client will create an access policy in the key vault of type “Application” and provide the matching key and secret to Emedgene. The access policy must contain permissions to perform encrypt and decrypt actions.

In order for Emedgene to integrate with the key, depending on the key vault provider, the client needs to provide the following information:

  • Client Id

  • Client Secret

  • Tenant Id

  • Key vault name

  • Key name

Searching Encrypted Fields

Since some of our platform search capabilities run directly on the DB, we can’t directly search any data that is encrypted. To overcome this, we will implement a hashing search functionality as follows.

  • The case data will still be fully encrypted in the DB as it is today

  • Specific fields we want to make “searchable” - as defined by the customer, we will save their hash value alongside the encrypted data.

  • Hashing will be done using SHA-256, and will include a secure random generated salt of 32 characters, which will be added to the value.

  • The salt is unique and will not be used anywhere else in the platform.

  • When the user enters a string to search, we will hash that value using all the salt values, and search those hash values.

Illustration of data flow when searching in Emedgene platform:

Illustration of data flow when creating a case with searchable field in Emedgene platform:

Appendix

Appendix: Control flows text

Write:

Client->Emedgene API: Add New Test Request 
note right of Emedgene API: Process Request 
Emedgene API->Key Vault: PHI 
note right of Key Vault: Encrypt 
Key Vault->Emedgene API: Encrypted PHI 
Emedgene API->Emedgene DB: Store Encrypted PHI

Read

Client->Emedgene API: Get Test Request 
emedgene DB->Emedgene API: Encrypted PHI 
Emedgene API->Key Vault: Encrypted PHI 
note right of Key Vault: Decrypt 
Key Vault->Emedgene API: Decrypted PHI 
Emedgene API->Client: Decrypted PHI

Write Searchable

Client->Emedgene API: Add New Test Request 
note right of Emedgene API: Process Request 
Emedgene API->Key Vault: PHI 
note right of Key Vault: Encrypt 
Key Vault->Emedgene API: Encrypted PHI 
Emedgene API-> Emedgene DB: Get Salt 
Emedgene API-> Emedgene API: Hash Value using Salt 
Emedgene API->Emedgene DB: Store Encrypted PHI + Hashed value

Read Searchable

Client->Emedgene API: Search string 
Emedgene API->AWS Secrets: Get Salt 
Emedgene API-> Emedgene API: Hash string using Salt 
Emedgene API->Emedgene DB: Search hashed string 
Emedgene DB->Emedgene API: Search results 
Emedgene API->Client: Search results

\

Azure Key Vault
AWS Key Management Service
Creating a case in Emedgene platform
Reading a case data from Emedgene platform
Drawing
Drawing
Drawing
Drawing