Conversation
|
The HTML and XML files are derived from the makrdown right? So I see no reason to check it into the git repo. |
|
Apparently I can't reploy on the mailinglist so I'll post my thoughts here. If I understand it correctly to proposal is that the MCP server provides the COAZ mapping of tool parameters to the AuthZEN evaluation request. In practice no MCP server has implemented this, and tool developers might be slow to adopt. If I want to secure some MCP server that does not implement this mapping, it might be interesting to have a different way of providing the mapping to the gateway. The mapping should remain consistent as long as the tool API does not change. Providing the mapping separately would make it possible to secure any MCP server without AuthZEN specific changes. BTW: I like using SARC as an abbreviation for Subject, Action, Resource, Context. |
That is correct.
It is possible for an MCP Gateway to intercept the response from the list tools call, and add this mapping when it returns the response to the client. How the MCP Gateway defines that mapping in the first place could be a proprietary implementation detail.
There is merit to specifying this mapping separately too, we can add that to the draft.
|
In this case one would diverge from this proposed spec because the MCP server does not provide the mapping right? Other that that, how does this proposal compare to @embesozzi at #429 according to you? Do they try to fix the same problem? |
Not really, the spec can be the same. The response from the MCP Server need not include the mapping. It can be added by the Gateway in the response to the client.
Martin can probably answer this better, but my understanding is that #429 proposes a general architecture, and this provides a specific mapping for MCP tools to become AuthZen compatible. |
|
My idea was to define an implementation-agnostic mapping between the MCP request and the AuthZEN request model to simplify adoption. |
|
I agree with @embesozzi's last comment here: the MCP Message <-> AuthZEN mapping is key, the same mapping can then also be used in the coaz response. As a 1st step, I'd suggest discussing specifically that mapping and agreeing on what that could look like. The coaz MCP extension then becomes trivial imho, it just reuses the same mapping. |
This mapping is exactly what COAZ is all about. |
|
I mentioned this on a couple of meetings but forgot to add a comment to formalize it - sorry. I think we should make The current example has a tool like A multi-mapping example could be something like
Then the PDP must be requested one Of course the resources don't have to be of the same type, neither does the subject need to be the same. I'm sure we can produce more creative and powerful examples if we want to 🙂 |
|
This could work, but:
|
|
Let me elaborate...
My problem with this MCP profile, is that you're in-effect externalizing the fine-grained access control to the client (your Gateway, say). By extension, I don't see why that Client couldn't also perform the Searches then ? After all, a set of And by extension, the Gateway could perform coarse access control only really. And in that sense, a Resource Search where Anyway I think this should be discussed much further. |
|
Thanks @baboulebou , my comments below:
I'm not sure I understand. This is exactly what the COAZ mapping does.
If we address your point 1. above, we will have more clarity on this one.
As I've stated previously, the client could do any prior AuthZ checks it wants, but the server or a gateway, if it exists, won't trust those decisions, and will want to do the checks themselves. The COAZ mapping being in the List Tools response helps the client understand how the parameters will be interpreted by the server from an authorization perspective.
I'm not sure I understand the search use case, but we can discuss it. The COAZ mapping works to get a simple authorization answer to MCP tool calls.
Happy to discuss in the call this week. |
I think I realize the core misunderstanding about the COAZ proposal. It is not meant for a client to make access decisions. It is for an MCP server to make access decisions, but in a way that is exposed to the client, and in such a way that a Gateway could enforce the access decisions on behalf of the server. Does that make sense? The abstract actually says this almost exactly. Is there somewhere else in the spec you think I should add this information to make it unambiguous that I'm not proposing the mapping to be enforced by the client? |
|
Thanks for the reply and clarification. Let me then try to also clarify. In any case, I think this should be debated with the wider group: This quote from your proposal is my main concern:
My concern here is that it is, really, a profile on MCP, not on AuthZEN. And I know the MCP group didn't want that profile, I did follow that discussion, but I question whether we are the right group for proposing this. Instead, I though that we could focus first on the simpler use-case. Forget Gateways or Clients; how can a MCP Tool implementer include a PEP in the tool code itself (where fine-graine AuthZ actually makes sense), and map input MCP message to AuthZEN payload? Again, for this part, the MCP tool doesn't have to advertise anything at all to the client or outside world. And actually, I think this may be sufficient for our AuthZEN purposes... |
I guess my test for whether this is valuable to AuthZen or not is to check whether implementers of AuthZen - either PDPs or PEPs would benefit from something like this. I feel we will benefit, and therefore it can belong here.
I'm not sure what you are proposing should be "instead of" the COAZ proposal. It could be in addition to the COAZ proposal.
I disagree, because I think we need a standardized way of communicating to an AuthZen PDP from an MCP Server or Gateway in order to offload access decisions to a PDP, and COAZ defines that. |
|
This is helpful and clarifies that identity is expected to be present via context and/or subject, with at least one field derived from the token. One question I had while reading this:
However, it is not fully clear whether the profile intends to standardize the relationship between these identities, or only ensure that both are available as inputs to the authorization decision.
From an authorization and audit perspective, the distinction between:
can be significant. Is the intent of the profile to:
Curious how others are thinking about this, especially for interoperability and audit use cases. |
Preview this proposal here