Description
@surfdoc has provided me with credentials for Jupyter Health and Jupyter Health Testing.
I've placed the two sets of credentials as KV pairs in aws secretmanager in our aws project: ch-health-creds-[prod|testing]
.
My questions so far are about credentials and their lifetimes/lifecycles
- client id/secret are used to communicate with the CHCloud API. That means that anywhere we want to talk to this API, we must provide these values, i.e. to users of the Hub, so they can call
ch_client.fetch_data()
. Right? - The private signing key (it's actually an encryption key, right, not just signing?). Is it one per application? What happens if a key is lost or re-issued? Can there be more than one?
- Deep links are specific to (patient, partner, key), right? Does it make sense for one part
- What exactly does the storage delegate store? So far, I've found the patient id:random id mapping and the private key(s), is that all?
What I'm trying to get at is what does "Jupyter Health" have access to, vs what does an individual Hub user have access to, and how can/should they differ (e.g. subsets of keys or shared keys, etc.). This will affect what credentials we load into the Hub user environment, and the presumably custom StorageDelegate class that we will use, because SQLite isn't going to work for shared state. For example, I see these broad categories:
- single shared storage delegate for everyone on the Hub. Necessarily means everyone has access to all data associated with a given partner
- each user has entirely their own storage delegate, not shared with anyone else - no users can access data created by another
- 'project'-level, where there is more than one storage delegate, where each user has access to one or more storage delegates, and each delegate may be accessible to one or more users
Which of these best represents the credential/access patterns we expect here? In particular, does 3. make sense where a single 'partner' might have different users with different access scopes, or does this generally mean creating a new 'partner', and keys should be considered an implementation detail?