FHIR Chat · Fine-grained Security Policies · Security and Privacy

Stream: Security and Privacy

Topic: Fine-grained Security Policies


view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:36):

Just placeholder to move the discussion from devdays

view this post on Zulip Brian Gammon (Jun 18 2020 at 19:40):

Great talk today, I'm definitely interested in an extended meetup session on this topic if one transpires.

view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:42):

We will organize it. 40 min is definitely not enough. Let's spend 3h in the online meetup!

view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:42):

@Pavel Smirnov ?

view this post on Zulip Matthew Tyler (Jun 18 2020 at 19:43):

I'm interested in a meetup on this topic too. I have some thoughts and implementations to share.

view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:47):

The format of meetup can be a set of sessions with 5-10 min presentation or problem description + 10-20 min discussion

view this post on Zulip Pavel Smirnov (Jun 18 2020 at 19:49):

Sure, let's make a FHIR meetup for this. We can have it as one of the next FHIR meetups with this group https://www.meetup.com/HealthDev/. Please respond who is also interested and I will reach out to pick a date/time.

view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:53):

@Josh Mandel what do you think about meetup?

view this post on Zulip nicola (RIO/SS) (Jun 18 2020 at 19:55):

Maybe we can invite guys like https://medium.com/@justinsecurity

view this post on Zulip Josh Mandel (Jun 18 2020 at 19:56):

I'd certainly be up for it. And yeah, would be great to include Justin (he's been pretty actively involved in OpenID HEART in addition to UMA and now OAuth.xyz)

view this post on Zulip Patrick Grennan (Jun 18 2020 at 20:26):

Super interesting presentation and discussion today! I would love to join a future meetup on this.

view this post on Zulip John Moehrke (Jun 18 2020 at 21:13):

I am sad I missed it. The Security WG is happy to host this and help move things forward.

view this post on Zulip Jim Steel (Jun 18 2020 at 23:11):

I would be up for that, too. We have been building fine-grained access control stuff in our terminology server, and although our requirements are a little bit different (simpler), we would be interested in a good generalized solution

view this post on Zulip Grahame Grieve (Jun 18 2020 at 23:22):

it certainly sounds like it's time to pursue this with vigor

view this post on Zulip Matthew Tyler (Jun 18 2020 at 23:33):

How have meetups been setup before for this group?

view this post on Zulip Jose Costa Teixeira (Jun 19 2020 at 04:38):

I'm watching the video and some of those topics remind me the Permission draft discussions:

  • Define a data set (like a predefined set of _elements)
  • Define who can access which data for which purposes
  • Define rules on resource profiles - so that these rules can be provided as part of the specification e.g. for a country regulations
  • Define rules on resoure instances - when you send out the data, you also put in the envelope "this data has been allowed for these uses"

view this post on Zulip Jose Costa Teixeira (Jun 19 2020 at 04:39):

The presentation was very very informative.
This is a hot topic and I'd like to see a solution that works integrated with the GDPR requirements

view this post on Zulip David Pyke (Jun 19 2020 at 11:32):

If meetings to discuss this are set up, add me to the list of interested parties

view this post on Zulip Josh Mandel (Jun 19 2020 at 13:47):

we should definitely put together a meeting. The best model I've seen for this is the Internet Identity Workshop, which basically asks people to propose sessions in an "un conference" where are you share some work you've been doing or a specific proposal you want feedback on, and open up for discussion. Works great in groups of maybe 5 to 20 people per topic.

view this post on Zulip Pavel Smirnov (Jun 23 2020 at 21:01):

Please vote for the day/time here: https://doodle.com/poll/92kxffq5bphcv9ra. If none of the proposed times work for you please vote and send me a message with your availability. @nicola (RIO/SS) @Josh Mandel @Brian Gammon @Grahame Grieve @David Pyke @Matthew Tyler . I am sorry if I missed you, please use the same link.

view this post on Zulip Jose Costa Teixeira (Jun 24 2020 at 05:20):

most those slots are 1 to 3 am in Europe. Any chance to find something else?

view this post on Zulip Pavel Smirnov (Jun 24 2020 at 23:26):

Jose, most of the audience in the meetup group is in the US and we decided to go with the time that works for the US and Australia (morning). Nikolai plans to stay late. It is impossible to satisfy all the time zones, sorry :(

view this post on Zulip Pavel Smirnov (Jun 24 2020 at 23:27):

Pavel Smirnov said:

Please vote for the day/time here: https://doodle.com/poll/92kxffq5bphcv9ra. If none of the proposed times work for you please vote and send me a message with your availability. nicola (RIO/SS) Josh Mandel Brian Gammon Grahame Grieve David Pyke Matthew Tyler . I am sorry if I missed you, please use the same link.

Tuesday, June, 30 at 7 pm ET then. I posted the event here: https://www.meetup.com/HealthDev/events/271506022/.

view this post on Zulip David Pyke (Jun 24 2020 at 23:31):

I'm confused, it was at 7pm ET and now it's 4PM ET?

view this post on Zulip David Pyke (Jun 24 2020 at 23:34):

Nevermind, I see in the meetup it's 4PM PT.

view this post on Zulip Jose Costa Teixeira (Jun 25 2020 at 02:28):

@John Moehrke hope you can attend. And hopefully we can update the Permission use cases to show how to have these access rules in an interoperable format

view this post on Zulip Pavel Smirnov (Jun 25 2020 at 04:12):

David Pyke said:

Nevermind, I see in the meetup it's 4PM PT.

It was my mistake. 7pm ET, or 4pm PT.

view this post on Zulip Pavel Smirnov (Jun 29 2020 at 19:58):

The FHIR meetup®: Fine-grained Security Policies Beyond OAuth2 is tomorrow. There will be zoom and youtube options to join. If you are speaking or want to actively participate, please join zoom. Speakers please add your topics to the schedule here: https://docs.google.com/spreadsheets/d/15za6DXk0Cnn97CYWrZRw-1l14Hw3juKmG8bkcm9Yxh8/edit#gid=0. @Josh Mandel @nicola (RIO/SS) @Grahame Grieve @Vassil Peytchev @Mohammad Jafari @Matthew Tyler @David Pyke @Chris Grenz @k connor . I am sorry if I forgot someone.

view this post on Zulip Jens Villadsen (Jun 29 2020 at 21:01):

the timeslot chosen is REALLY bad for europeans.

view this post on Zulip Dmitry Etin (Jun 30 2020 at 14:16):

Is the meetup going to be recorded? It's rather late for Europe. And so far, there's no conference link on the meetup page either @Pavel Smirnov please advise.

view this post on Zulip Pavel Smirnov (Jun 30 2020 at 14:22):

There will be a link soon but it is going to be recorded.

view this post on Zulip Pavel Smirnov (Jun 30 2020 at 17:33):

https://www.youtube.com/watch?v=CLYB2d4akWU here is the link to the meetup broadcast

view this post on Zulip Josh Mandel (Jun 30 2020 at 23:03):

Hi everyone! Looking forward to today's conversation! Please review and add to proposed topics

view this post on Zulip Michael Lawley (Jun 30 2020 at 23:20):

We have developed a new per-resource security model (using meta.security) implemented in our terminology server Ontoserver especially for terminology operations. One of the key issues is that $expand on a ValueSet needs to respect the permissions of all involved resources (the ValueSet(s) and the underlying CodeSystem(s)). This is a slightly different use-case scenario to what is commonly discussed as the main driver is about IP/licensing and governance rather than the clinical / privacy-driven ones linking back to Patient / Practitioner(Role).
It's also made somewhat difficult because the principals ("users") involved are not Patients/Practitioners and thus don't have a corresponding FHIR Resource and cannot be put into Groups -- all of this information is thus managed externally in an OAuth2-based authorization server.
We don't have public doc on this yet (new release not yet out), but this seemed like an opportune time to share a preview of what's coming.

view this post on Zulip Josh Mandel (Jun 30 2020 at 23:34):

Interesting -- indeed!

view this post on Zulip Michael Lawley (Jun 30 2020 at 23:37):

The basic approach is that security labels in the CodeSystem http://ontoserver.csiro.au/CodeSystem/ontoserver-permissions take the form [category].read and [category].write and a user must have at least one of these in authorization token's claims. Resources with no security labels from this CodeSystem are unrestricted. (There is also an authogonal security policy regarding basic READ / WRITE access to the server that must be satisfied as well.)

view this post on Zulip Michael Lawley (Jun 30 2020 at 23:39):

At the moment, you only need write permissions on a Resource to be able to change the security labels. I'm unsure as to whether we should have a separate permission like [category].security for this.

view this post on Zulip Josh Mandel (Jun 30 2020 at 23:41):

And do permissions like [category].read get assigned to clients as scopes?

view this post on Zulip Jim Steel (Jun 30 2020 at 23:48):

+1 for "authogonal"

view this post on Zulip Michael Lawley (Jun 30 2020 at 23:49):

We currently use "permission" to refer to the things you attach to a resource and "authority" as the thing that a "Clients" (as in a user, not an App) are give.
The details of what actually goes in the token are currently in flux. Our original plan ran into problems as some well-known Authorization servers (Keycloak, I'm looking at you) have (what appear to be arbitrary) syntactic restrictions on the acceptable values in a scope (we had planned to use something like group/[category].read but / is not allowed), so we encode them differently. I don't like what we have for this at the moment, but it does need to be something that works easily with existing 3rd party services.

view this post on Zulip Brendan Keeler (Jun 30 2020 at 23:50):

Nice summary of the XYZ presentation now - https://medium.com/@justinsecurity/xyz-why-b855970fdd89

view this post on Zulip John Moehrke (Jun 30 2020 at 23:54):

as Josh explained, there is much magic... We need to determine if we are defining the standards for the API security/privacy for the purpose of interoperability; or we are defining the systems design that can do the magic. I think we need to be careful to focus on the Interop (security/privacy) function, and not get too deep in the systems design. We must be sure there is at-least one systems design that will work, but we should not be mandating a single systems design.

view this post on Zulip Josh Mandel (Jun 30 2020 at 23:55):

Agreed.

We must be sure there is at-least one systems design that will work, but we should not be mandating a single systems design.

Especially this -- I think this is still a hard "low bar" to meet.

view this post on Zulip John Moehrke (Jun 30 2020 at 23:55):

it is very hard to keep to this principle.. I am not saying it is a simplifying principle.

view this post on Zulip John Moehrke (Jun 30 2020 at 23:58):

my point is to define the interfaces, not the systems design... the how policies are written, not all the possible policies... etc...

view this post on Zulip Michael Lawley (Jul 01 2020 at 00:05):

So our model allows you to say that there are categories (groups) of resources and and a resource may be a readable and/or writable member of zero or more categories. Then users are given read and/or write permissions on category members. The FHIR SCRUD operations have natural associations to read / write as do the various operations.

view this post on Zulip Brendan Keeler (Jul 01 2020 at 00:08):

Who is involved in the GNAP project?

view this post on Zulip John Moehrke (Jul 01 2020 at 00:13):

I like the idea of learning from OAuth2, and not being constrained by OAuth2... so I am liking what this can become. If Healthcare added our complexity and community behind this then it could become what we need. I am confident OAuth2 can't meet healthcare needs in the end.. but we should be able to work with OAuth2 in the mean time.

view this post on Zulip Isaac Vetter (Jul 01 2020 at 00:14):

"OAuth doesn't really work for truly ephemeral clients, not SPAs, such as a lamba function that's spun up, requests a key does some stuff and then disappears" -- that's interesting (sorry, guys, I'm literally 5 minutes behind everyone else)

view this post on Zulip John Moehrke (Jul 01 2020 at 00:15):

how important in healthcare are ephemeral clients?

view this post on Zulip Michael Lawley (Jul 01 2020 at 00:15):

CDS Hooks

view this post on Zulip Michael Lawley (Jul 01 2020 at 00:15):

Subscription

view this post on Zulip John Moehrke (Jul 01 2020 at 00:15):

fair

view this post on Zulip Isaac Vetter (Jul 01 2020 at 00:16):

I don't know of any. A CDS Hooks service could definitely be a lambda function, but even the base spec assumes that it's been registered with the OAuth server.

view this post on Zulip Brendan Keeler (Jul 01 2020 at 00:17):

Benefits aside - is healthcare is the right industry to be the front runners for a relatively unproven, currently non-standard protocol? Would hate to march down the XYZ / GNAP path and have it be our generation's MLLP

view this post on Zulip John Moehrke (Jul 01 2020 at 00:17):

Brendan Keeler said:

Benefits aside - is healthcare is the right industry to be the front runners for a relatively unproven, currently non-standard protocol? Would hate to march down the XYZ / GNAP path and have it be our generation's MLLP

scary

view this post on Zulip Brendan Keeler (Jul 01 2020 at 00:17):

I moonlight writing horror stories, @John Moehrke ;)

view this post on Zulip Isaac Vetter (Jul 01 2020 at 00:17):

Personally, I've always appreciated exactly how minimal MLLP is :wink: , but, yeah, Brendan.

view this post on Zulip John Moehrke (Jul 01 2020 at 00:18):

hence why I placed it as working toward a future, while working with OAuth now

view this post on Zulip Brendan Keeler (Jul 01 2020 at 00:18):

Careful complimenting MLLP while in a security channel, @Isaac Vetter

view this post on Zulip John Moehrke (Jul 01 2020 at 00:18):

MLLP is perfectly secureable with mutuall-authenticated-TLS

view this post on Zulip Isaac Vetter (Jul 01 2020 at 00:19):

(ack! I thought this was the #smart stream!) SSH Tunnelling all the way, John!

view this post on Zulip John Moehrke (Jul 01 2020 at 00:19):

TLS is dead... long live TLS

view this post on Zulip Brendan Keeler (Jul 01 2020 at 00:19):

(just kidding MLLP will always be my fav)

view this post on Zulip John Moehrke (Jul 01 2020 at 00:24):

multi-dimensional -- so adorable until healthcare comes at it with 1000 dimensions (org, patient, gardien, clinician, payer, gov, police) ^ sensitivityconfidentialityclassification*compartment ^ patient rules

view this post on Zulip Josh Mandel (Jul 01 2020 at 00:43):

@Matthew Tyler Thanks for the ALFF overview today. Can you share an example here of a policy that returns "advice" on searches?

view this post on Zulip John Moehrke (Jul 01 2020 at 00:44):

XACML fully supports the @josh full magic model of pre-processing, and post-processing (obligations)

view this post on Zulip John Moehrke (Jul 01 2020 at 00:45):

look at the obligations found in the HL7 security labels vocabulary - http://build.fhir.org/v3/ObligationPolicy/vs.html

view this post on Zulip John Moehrke (Jul 01 2020 at 00:45):

and refrains http://build.fhir.org/v3/RefrainPolicy/vs.html

view this post on Zulip John Moehrke (Jul 01 2020 at 00:46):

these are vocabulary for functions... the implementation of that function is an exercise left to the implementer in the post-processing (or import pre-processing of a recipient).

view this post on Zulip John Moehrke (Jul 01 2020 at 00:48):

as vocabulary, this is extensible... and in a FHIR world needs enhancement.

view this post on Zulip Brendan Keeler (Jul 01 2020 at 01:07):

Incredible LinkedIn burn by Josh

view this post on Zulip Brendan Keeler (Jul 01 2020 at 01:07):

Gotta get a Substack Chris

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:08):

I totally am looking to figure out how to get targeted notifications in LinkedIn. For the record, I follow Chris. I just don't know how to watch for updates to his page.

view this post on Zulip Paul Church (Jul 01 2020 at 01:09):

I'm not on LinkedIn at all and I feel fine

view this post on Zulip Paul Church (Jul 01 2020 at 01:12):

I have always thought that Chris's profile governed access control is a great idea - we already put all this effort into profiles, why not use it.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:19):

Yeah, it's a very clean way to reuse this work.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:19):

the extensions shown in the DS4P are there to explain 'why' a specific code is found in the .meta.security.... the .meta.security is the actionable code. not these extensions

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:19):

Making it work in a performant way is another challenge.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:19):

But Chris has shown it's possible.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:22):

critical review of ds4p and gov IG is needed.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:24):

So one common theme from presentation and discussion today, including from Michael, Nicola, Chris: FHIR Compartments are really useful, but limited today. It'd be nice to have more tools to define compartments flexibly, including definitions by what Chris calls "traversals" like

  • One hop: Patient compartment including all resources whose subject is Patient 123
  • Two hops: Organization compartment including data from all Patient compartments whose Patient.managingOrganization is Organization 456

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:26):

for me, that's begging the question. For me, the real question is - and I'm sorry I missed the rest of the meeting - how much interop do we need around access control? Are we simply solving a system architecture problem for pure FHIR servers (which I also am interested in) or are we trying to do something interoperable here?

view this post on Zulip John Moehrke (Jul 01 2020 at 01:26):

it should be noted that there is an equvilant compartment concept in the security domain. We assign resources to a compartment with vocabulary in .meta.security

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:27):

My take is that "we" (anyone implementing FHIR REST API services, whether "pure" or not) need a consistent way to express access control rules.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:27):

do they? I don't think they do. There is a need for API defined standards, but not all access control rules

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:28):

internally consistent? Does it surface publically anywhere?

Are we looking for a FHIR+ that represents an application FHIR server such that a full solution is portable across FHIR Servers?

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:28):

the rules show up in the APIs.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:28):

... how?

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:28):

Like, in OAuth you need to talk about scopes concretely.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:28):

that which shows up at the API.. YES. but not all access control rules.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:29):

it's clear how OAuth scopes show in the API, and we can talk about the requirements for that, but it's not the same as access control rules

view this post on Zulip John Moehrke (Jul 01 2020 at 01:29):

this was my point 2 hours ago that we need to be careful to define what is needed at the API interface, while NOT defining the systems design

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:30):

Saying "I need access to ___" is what an API needs to handle -- and the language for writing "___" needs to be standardized for this to work.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:30):

ANYONE can define a .meta.security compartment using whatever internal rules language they want

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:30):

we need to be careful to define what is needed at the API interface, while NOT defining the systems design

Well, unless we decide that we want access control to be interoperable to some degree or other

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:30):

It may or may not be an HL7 project to define these, but I should clarify that the need need isn't for something in the internals of a server, it's on the edge, where a server commits to upholding a specific "contract" / policy. Interop is super important here because data is fragmented.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:31):

so the server needs to make some computable public contract statement? what would the requirements around computability be there?

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:32):

My data sit in all different servers with different capabilities; if I want any hope of bringing these data together, I need a standard way to describe the data that I need, and that means access policies.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:32):

It seems clear they need to be computable to be useful; or maybe I'm missing something.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:34):

John Moehrke: ANYONE can define a .meta.security compartment using whatever internal rules language they want

https://www.hl7.org/fhir/compartmentdefinition.html says that only HL7 can define a compartment.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:34):

I don't follow that as a story at all. All the stories I have heard to this point - which I also have on my own - is that I have a server and I need to give admin control over access control

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:34):

how would understanding server policies, some of which I can't be allowed to know, change my ability to bring data together?

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:35):

You haven't heard stories where a user is accessing her own data in a remote system that she doesn't control?

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:35):

sure but I haven't heard stories where by having a detailed understanding of the access control policies would make any difference to her

view this post on Zulip John Moehrke (Jul 01 2020 at 01:35):

Josh Mandel said:

John Moehrke: ANYONE can define a .meta.security compartment using whatever internal rules language they want

https://www.hl7.org/fhir/compartmentdefinition.html says that only HL7 can define a compartment.

I have explained that security .meta.security has a compartment concept that is aligned with the security world of compartments... this is independent (but related) to the concept in FHIR of a CompartmentDefinition

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:36):

Like, wanting to delegate access to data about a specific group of patients that you manage?

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:36):

Or a specific subset of your personal data?

view this post on Zulip John Moehrke (Jul 01 2020 at 01:36):

in .meta.security concept of compartment .. it is just a code... what the code means is an internal matter.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:37):

so right now, that would be an OAuth story, right? You can grant access that way; we think that the OAuth scopes are not expressive enough, but it's not the same thing?

view this post on Zulip John Moehrke (Jul 01 2020 at 01:37):

there is a remedial vocabulary , but it is rather useless http://build.fhir.org/v3/Compartment/vs.html

view this post on Zulip Paul Church (Jul 01 2020 at 01:37):

As a patient with the right of access to my data, I want to inform my various data holders to share only certain types of observations with a certain third party application. I don't want that categorization to vary across holders.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:37):

we think that the OAuth scopes are not expressive enough, but it's not the same thing?

An OAuth scope language is something the resource server needs to interpret to make access control decisions. The ones we use today are awfully weak, and it means that every serious server is inventing its own.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:38):

These server-specific languages aren't consistent, so they're not interoperable.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:38):

That means connecting a client to a server is a project instead of just a decision.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:38):

Paul Church said:

As a patient with the right of access to my data, I want to inform my various data holders to share only certain types of observations with a certain third party application. I don't want that categorization to vary across holders.

agreed.. this is the set of use-cases that the Consent resource is trying (not well due to lack of community engagement).

view this post on Zulip John Moehrke (Jul 01 2020 at 01:39):

and we also have an emerging group wanting a Permission resource that is not specific to a 'consent' act.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:39):

ok so I'm fine if we say that we're trying to beef up our language for authorization - which is what this is. I just think that's a totally different thing that access control, and the kind of things Nicola was talking about

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:39):

I'd suggest the lack of engagement on consent might reflect that the proposed solutions aren't close enough to what the community wants.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:40):

I don't think these defined layers are super helpful, but I'd be interested to hear other perspectives.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:40):

the community can come in and DRIVE this. all it takes is 2 people to show up to have majority

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:40):

well.. Consent is something different to most of what we are wanting here. I think that the lack of engagement is due to the gap, and also that the consent work is trying to make computable the existing paper/legislative mess

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:41):

the community can come in and DRIVE this. all it takes is 2 people to show up to have majority

You need something close, for people to react to and build on. Otherwise they'll keep inventing. Like we're hearing about here.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:41):

I agree that the boundary may not be super helpful, but there's a scope/complexity issue at the heart of this

view this post on Zulip John Moehrke (Jul 01 2020 at 01:41):

Consent is a very specific use-case... where consent applies... but as we expand that concept to Permission we are getting closer to the set of use-cases that are the discussed Compartment need

view this post on Zulip John Moehrke (Jul 01 2020 at 01:42):

it is an access control Permission.. might be because of consent, might be because of some business arrangement

view this post on Zulip Paul Church (Jul 01 2020 at 01:42):

I think if there was a robust and well adopted consent story, then it would connect to this discussion. But it's not a blocker.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:44):

consent is being driven from too constrained workgroup (CBCP) which only is considering the needs around patient privacy consent.. and not broader need of Permission (compartment)

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:44):

the underlying language is similar, I think. Which is where Justin's XYZ story was relevant. Though I kind of suspected that XYZ langauge still wasn't rich enough

view this post on Zulip John Moehrke (Jul 01 2020 at 01:46):

well, re-inventing the 15th security policy standard is always inviting.

view this post on Zulip Isaac Vetter (Jul 01 2020 at 01:46):

As a patient ... I want to inform my various data holders [and] don't want that categorization to vary across holders.

Note that none of the demonstrated systems actually enables a patient to make a choice. From my perspective, it seems that the "server-specific languages" are simple a technical end-run around the "existing paper/legislative mess"; thereby, pushing the actual hard part on the doctor's office.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:47):

that sounds off-base to me -- the whole point of a language for these rules is that they can be automatically applied, and the doctor's office doesn't have to do a thing.

view this post on Zulip Isaac Vetter (Jul 01 2020 at 01:48):

who uses the language to write the rules, Josh?

view this post on Zulip Isaac Vetter (Jul 01 2020 at 01:48):

In AidBox? In MS? in ...

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:48):

Clients and servers... communicate using this langauge.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:48):

Just as with SMART scopes in OAuth.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:49):

That's a too-simple example of such a language.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:49):

a blood-pressure application should not need to think about this complexity

view this post on Zulip Isaac Vetter (Jul 01 2020 at 01:49):

image.png

@nicola (RIO/SS) to pick on you as an example, who typically uses your really powerful, programming language UI for configuring access control rules?

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:49):

I think Isaac has a point.. the real world mess will make a mess of whatever we do, and the cleaner what we do is, the more mess we externalise

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:50):

@Isaac Vetter I'm not sure what you want to convey with that image.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:51):

The context on that image: represents one example of vendor-specific langauge @nicola (RIO/SS) presented as part of an information-sharing exercise on today's call.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:52):

it's a language very focused on the system architecture; it would not be relevant for the sharing story discussed above

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:53):

I mostly agree @Grahame Grieve ; it's just an example of something that has actually been built today. But it's certainly relevant, because it gives me a way to say "Allow access only to observations about patient 123 with such-and-such characteristics..."

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:55):

The aim would be to make these descriptions in terms of FHIR API and data models, so they have a chance at being reusable.

view this post on Zulip Paul Church (Jul 01 2020 at 01:56):

I think the vendor discussion on the call is very useful, even if it's not an HL7 standard or patient facing it's going to be an obstacle to adoption if each server vendor has a slightly different domain specific language for configuring access policies.

view this post on Zulip John Moehrke (Jul 01 2020 at 01:56):

there are a set of interop definitions that we need. This Compartment/Permission/Consent is just one... different from the app authentication (SMART) discussion

view this post on Zulip John Moehrke (Jul 01 2020 at 01:56):

BY ALL MEANS OVERWHELM US!!!!!!

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:57):

We'll do our best. Decision is to take design / test implementation discussions to this channel here, unless y'all kick us out ;-)

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:57):

I actually do think we should go here; if we're going to move away from making toy apps interoperable to making real world solutions interoperable (as opposed to classic B2B integration, or 1-way C2B channels), then we need an interoperable security model.

view this post on Zulip Josh Mandel (Jul 01 2020 at 01:58):

Gah, I'm now totally unable to summarize your perspective Grahame :p

view this post on Zulip Grahame Grieve (Jul 01 2020 at 01:59):

in my mind, it's a FHIR+ thing - not something that legacy vendors would ever buy into, but something that the new FHIR-from-ground-up servers need to create a new market. So if those of us making those would commit to support a common language/API for managing this, I think it would be good.

view this post on Zulip Gino Canessa (Jul 01 2020 at 01:59):

Great stuff, thanks everyone!

view this post on Zulip Josh Mandel (Jul 01 2020 at 02:00):

Thanks. That's interesting at any rate. So if it's a "FHIR+" thing, the question becomes what piece of it reflects back into real FHIR -- because I still think SMART 1.0 scopes aren't up to the task.

view this post on Zulip Grahame Grieve (Jul 01 2020 at 02:00):

I'm glad you can't summarise my perspective; it's split between what I want individually, and what I want as product lead. I want the community to want this, but we can't do that by fiat - hence why I'm making sure we understand where we are, and why, and the ramifications of where we might go

view this post on Zulip Grahame Grieve (Jul 01 2020 at 02:01):

and it makes total sense that if we did a FHIR+ thing around security, the underlying security language would be consistent across scopes and the permission resource

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 02:37):

@Isaac Vetter aidbox is FHIR backed and developers who are building next EHR use this DSLs to define Permissions and show nice checkboxes list - like epic does ;) One of them is well known json schema another is well known SQL. @Grahame FHIR server is useless in production unless it provides access control, User to Patient/Practitioner linkage etc.

Some of this DSLs should stay vendor specific for pragmatic reasons. The good thing standard can do is define extension points and give vendors to make it work thro practice and after that probably incorporate best ideas back.

That's how sql, css and other successful standards do.

view this post on Zulip Michael Lawley (Jul 01 2020 at 02:41):

@John Moehrke I believe the compartment concept is effectively what we've done for Ontoserver.

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 02:42):

I'm really scared some overspecification signs comming not from practice side

view this post on Zulip Michael Lawley (Jul 01 2020 at 02:44):

What we don't have is a way to connect our notion of compartments with FHIR's Group and then to Group.member.entity[Person] (because Person is not an allowed reference) (where Person would be fhirUser).

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 02:46):

We turn fhir ref restrictions into documentation in aidbox for same reason ;)

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 02:48):

Closed-world design just does not work in real-world

view this post on Zulip Michael Lawley (Jul 01 2020 at 02:49):

If we had that, then the authorization mgmt could be done entirely within the FHIR API and we wouldn't need to push stuff through the OAuth token. OTOH, putting the AuthZn story in an external server means we've only one place to manage group membership and that can be shared across FHIR servers.

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 02:51):

So we need SCIM User modeled in FHIR

view this post on Zulip Michael Lawley (Jul 01 2020 at 02:53):

Yes, I'm now looking to SCIM if we need an API for our use-case. At the moment we only need a UI :-)

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 03:02):

Just empty User resource may be really better

view this post on Zulip nicola (RIO/SS) (Jul 01 2020 at 03:04):

with a couple of predefined refs to pt and pr

view this post on Zulip Jose Costa Teixeira (Jul 01 2020 at 05:35):

I'm watching the video and IMO the data for enaling Access Control should be more interoperable if we want to ensure interoperability on a system level, not only on a server.

view this post on Zulip Jose Costa Teixeira (Jul 01 2020 at 05:37):

For Belgium I'm trying to have a decent GDPR-compatible implementation, with things like:

  1. Queries pass through the access control (e.g. some users cannot search by national ID number)
  2. Data Subject rights (e.g. erasure, knowledge of processing) pass through some decision as well (e.g. patient requests do not erase vaccination data)
  3. Response is also passing through the same filter (e.g. if the result data set has less than 5 patients, we don't provide that dataset)
  4. consent is only one of the lawful basis of processing, we have others
  5. purpose of use is essential part of the data set for decision
  6. Data element identification can be done on a) Segment, b) element type, c) element instance
  7. This is all metadata (I'm looking at the Permission resource, but other solution may meet the requirements) and that metadata should be interoperable - for example a patient may know (some of) the permissions that apply to their data - including the specific instances he has allowed or not.
    And we currently feel the pain of having access control buried in a technical implementation - which makes controlling or changing hard to manage.

view this post on Zulip Jose Costa Teixeira (Jul 01 2020 at 05:39):

From discussions in the Security calls, we do not want to replace e.g. xacml, we want the permission metadata (input to xacml engine) to be consistent/traceable

view this post on Zulip Jose Costa Teixeira (Jul 01 2020 at 05:40):

@nicola (RIO/SS) I think your AccessPolicy resource is what Permission is expected to do.
actually, Permission would express a policy or an instanciation thereof

view this post on Zulip Grahame Grieve (Jul 01 2020 at 06:23):

@Michael Lawley if I designed a FHIR+ with a security layer, I'd start by including SCIM for the stuff SCIM does, and focus on how you bind between the 2

view this post on Zulip Matthew Tyler (Jul 01 2020 at 18:58):

Josh Mandel said:

Matthew Tyler Thanks for the ALFF overview today. Can you share an example here of a policy that returns "advice" on searches?

I'd like to put together a more detailed presentation and demo for something in the near future. I'll be out for the next week, so perhaps a few weeks from now or timed with our other regular meet ups.

view this post on Zulip Nancy Lush (Jul 02 2020 at 16:39):

Multiple workgroups have already done the deep-dive into this topic and there are several implementations. There are also meaningful FHIR+ use cases. (Grahame, you are correct in that this is a different paradigm and needs to be thought of differently.) Several years ago, we still had several blockers. We are now at that inflection point where this technology could be available now. Two recommendations:

  1. We (Patient Centric Solutions) would be willing to do a demonstration and explain why we made certain decisions at this stage in our product implementation.
  2. Convene a meeting that includes other experts on this topic so that we can accelerate understanding.

view this post on Zulip Jenni Syed (Jul 06 2020 at 16:33):

Coming in waaaay late here (thanks holiday weekend) but I think we need to keep the application authorization language separate from the user authorization language. SMART 1 made that "easy" (in that it allowed whatever existing user policies to be combined when the user was in the workflow) and the OAuth 2 scopes should focus on what they do best - limiting what the app can do on behalf of the user. It shouldn't ever be able to go beyond what the user can do.

view this post on Zulip Jenni Syed (Jul 06 2020 at 16:34):

IE: The OAuth 2 scopes aren't focused on user access. If a patient wants to say that Doc X can only do Y - that's not OAuth... that feels ... weird

view this post on Zulip Jenni Syed (Jul 06 2020 at 16:34):

That is more consent based :) And yes, we haven't tried to represent that beyond basic patient consent today in the standard...

view this post on Zulip Jenni Syed (Jul 06 2020 at 16:35):

And haven't attempted to build out RBAC-type security (or really anything) for "provider" users today at all

view this post on Zulip Grahame Grieve (Jul 06 2020 at 21:27):

it seems to me that we all agree to this - these are separate problems, and very definitely separate spaces. But we also think that the underlying language - the way we are expressing the rules - should be consistent between the 2 purposes

view this post on Zulip Jens Villadsen (Jul 06 2020 at 21:48):

Having glimpsed at this thread I just want to add my 2 cents: The setup that I've worked on for the past 1.5 years is a national FHIR greenfield project, meaning that I have had the luxury of getting to define the security model being a combination of RBAC and ABAC. One of the requirements is to bridge SAML and Oauth which I imagine is a pretty common use case. The bridging part enables users get an initial set of RT/AT's with the roles from the SAML login. When (clinical) users wants to go into details of a certain patient, a new set of RT/AT's must be handed out based upon their affiliation with the patient (this is the only way to do it as I see it when users come from an existing SAML federation and you don't wan't to force users to log out, in order to elevate their rights if you can verify the correctness of this within the system). This is not needed when patient themselves access their record as their RT/AT's are fixed to themselves (much like SMART). This setup also uses the compartment definitions to some extent (- which I would encourage to have careteams added).

view this post on Zulip PKumar (Jul 22 2020 at 12:09):

We are building FHIR APIs on Azure FHIR. However, what are the best practices to ensure the security is handled? I know that Azure is using AD authentication but I am looking more from the FHIR literature, what are the resources that I can use to enable better security/restricted access/managing permissions?

Thanks in advance!

view this post on Zulip John Moehrke (Jul 22 2020 at 12:22):

see http://build.fhir.org/secpriv-module.html

view this post on Zulip PKumar (Jul 22 2020 at 13:32):

Thanks @John Moehrke

I have gone through the link content. I see that Consent, Provenance and Audit are available. But in a case when I want to give access to particular resource lets say observation resource to client A with edit permission, I can create consent accordingly. But in the actual implementation workflow how does this be taken up? Does the client request first be validated against the consent resource API and if the request is satisfied with the consent, then should I give access to corresponding patient resource API?

view this post on Zulip John Moehrke (Jul 22 2020 at 16:46):

That is an implementation detail that is beyond the scope of the FHIR core standard. The FHIR core standard is a specification of the API definition, not the systems design behind that API.

view this post on Zulip John Moehrke (Jul 22 2020 at 16:47):

That said, there are some security implementation guides that are being developed. SMART-on-FHIR is the only one that is available today in published form, and has implementations built into some of the reference implementations like HAPI.

view this post on Zulip PKumar (Jul 22 2020 at 17:12):

Thanks for the response @John Moehrke

Should I consider consent, provenance resources are used as APIs to let the incoming client aware of the rules that we are going to check upon? so that the client can accordinlgy plan to send requests to our FHIR server?

Lets say I have FHIR server and exposing Patient API. I will also expose consent API that has details about what is required to access Patient data. Now the client who wants to integrate my Patient API, would first likely to hit consent API, understand the rules and accordingly make the API calls to ensure the successful transaction.

Thanks in Advance, I am fundamentally confused as I am new to this concept. Your help is much appreciated.

view this post on Zulip John Moehrke (Jul 22 2020 at 18:03):

There are many security models. The one you mention is possible. There is no manditory security model. So it is up to you to define the security models you will support.

view this post on Zulip John Moehrke (Jul 22 2020 at 18:04):

In the case of SMART-on-FHIR... the consent tends to be managed transparently to the client and OAuth; handled transparently within the Resource Server. That transparent access control decision/enforcement might use Consent, might use some internal logic.

view this post on Zulip PKumar (Jul 23 2020 at 09:15):

thanks very much @John Moehrke

If I go with a separate portal for my customers who access the APIs, then how would they login to my portal?

should that be through Azure AD (or any open auth 2.0) and in backend we add it to SMART on FHIR? or does SMART on FHIR can be a kind of authentication to be shown in the front end as a lable and through that user can login?

view this post on Zulip John Moehrke (Jul 23 2020 at 12:48):

possibly @Josh Mandel can help with implementation details on how a user based that uses Azure AD can be authenticated using OpenID-Connect inside of the SMART-on-FHIR use of OAuth.

view this post on Zulip PKumar (Jul 27 2020 at 11:55):

I was going through the security labels but facing difficulty to comprehend the use case on when to implement security labels and does these labels play part in resource level authentication workflow? Looking forward for response, Thanks!

view this post on Zulip John Moehrke (Jul 29 2020 at 13:17):

I am not sure what specifics you need. I do have some articles I have written on my blog

view this post on Zulip John Moehrke (Jul 29 2020 at 13:18):

and I have a tutorial I teach in HL7 education

view this post on Zulip PKumar (Jul 30 2020 at 09:12):

Thanks @John Moehrke I will go through the links

view this post on Zulip Louis St-Amour (Sep 24 2020 at 15:35):

Hi folks, I recognize the talk was many months ago, but @Josh Mandel mentioned different ways of evaluating policy for accessing resources. Has any consideration been given to using Open Policy Agent for this task? https://www.openpolicyagent.org I've actually experimented with using WASM with it for application-level support in other embedded scenarios, and while I didn't quite get it right the first time, the project seems to have excellent community support right now. https://github.com/open-policy-agent/npm-opa-wasm/pull/25#issuecomment-654489286

Also wondering what industry support there might be for UMA vs OAuth.xyz, it sounds like Microsoft is also working on dynamic OAuth 2.0 registration which overlaps with OAuth.xyz? Would it make sense to suggest that despite the odd parts of OpenID Connect and OAuth 2, it's unlikely to go anywhere, and thus UMA or something like it (maybe with different licensing) would "win" in the future? I haven't looked into UMA enough to see how it could be implemented yet with OPA, but I might next...

view this post on Zulip John Moehrke (Sep 28 2020 at 15:32):

there is a profile of UMA for healthcare use -- See HEART. It is mentioned in the core FHIR spec on the security pages along with many alternative security models.

view this post on Zulip René Spronk (Jan 08 2021 at 14:29):

Hmm. Would you happen to know of a recorded overview presentation about HEART ? (UMA: https://www.youtube.com/watch?v=0cCXJvJ6GUY )

view this post on Zulip René Spronk (Jan 11 2021 at 13:58):

FYI: HEART tutorial: https://www.youtube.com/watch?v=8wpYVQDvYJI&feature=youtu.be


Last updated: Apr 12 2022 at 19:14 UTC