You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Authorisation is the process of deciding whether or not to allow a request. On storage systems, requests typically involve a path. This is the "request path".
instructs the client machine to make an HTTP GET request. The request path is /my-VO/reference-data/some-data.root.
The storage AuthZ scopes (storage.read, storage.create, etc) MUST contain a path. These paths are expressed in the scope in the form $AUTHZ:$PATH (e.g., storage.read:/foo). This $PATH is the scope path.
However, the document seems to contain no discussion on how a scope's path relates to request paths.
I think relationship between a scope's path and request paths is a critical piece of information, as authorisation statements only makes sense in the context of requests made by a client.
For example, the following is the scheme adopted by dCache:
Each VO (i.e., each issuer) has a corresponding authorisation base path. This is the VO's base path: the path under which the VO should write data.. All AuthZ scope paths are resolved relative to the issuer's AuthZ base path.
For example, if a dCache is configured so that the AuthZ base path for the ATLAS VO issuer is /data/atlas then the following scopes have the following consequences:
storage.read:/ authorises reading of all files in /data/atlas
storage.create:/home/paul authorises creating (non-destructively) of files and directories in /data/atlas/home/paul.
I think this approach makes sense. It allows the OP to issue tokens that are independent of the individual storage system, provided the storage system provides storage resources for a VO under a single directory and provided the VO has a common data-placement policy.
For example, an ATLAS token with storage.read:/public would work on two storage systems even if one storage service places all ATLAS data under /pnfs/example.org/data/atlas and another storage service places ATLAS data under /vos/atlas/data.
However, this is not the only solution: there are other approaches with different trade-offs.
To promote interoperability, I think the document should at least acknowledge that there is a question on how to map scope paths (the $PATH in $AUTHZ:$PATH scopes) to the corresponding request paths when an agent makes a request involving that scope's token.
Ideally, the document would describe a standard approach for doing this mapping.
The text was updated successfully, but these errors were encountered:
…requests
In #34, @paulmillar pointed out there's no explicit mention of how to authorize a request resource with a given storage scope.
This is my first draft at an attempt for some examples and expansion of what was previously written about handling an "authorized area".
Authorisation is the process of deciding whether or not to allow a request. On storage systems, requests typically involve a path. This is the "request path".
For example, the
curl
command:instructs the client machine to make an HTTP GET request. The request path is
/my-VO/reference-data/some-data.root
.The storage AuthZ scopes (
storage.read
,storage.create
, etc) MUST contain a path. These paths are expressed in the scope in the form$AUTHZ:$PATH
(e.g.,storage.read:/foo
). This$PATH
is the scope path.However, the document seems to contain no discussion on how a scope's path relates to request paths.
I think relationship between a scope's path and request paths is a critical piece of information, as authorisation statements only makes sense in the context of requests made by a client.
For example, the following is the scheme adopted by dCache:
Each VO (i.e., each issuer) has a corresponding authorisation base path. This is the VO's base path: the path under which the VO should write data.. All AuthZ scope paths are resolved relative to the issuer's AuthZ base path.
For example, if a dCache is configured so that the AuthZ base path for the ATLAS VO issuer is
/data/atlas
then the following scopes have the following consequences:storage.read:/
authorises reading of all files in/data/atlas
storage.create:/home/paul
authorises creating (non-destructively) of files and directories in/data/atlas/home/paul
.I think this approach makes sense. It allows the OP to issue tokens that are independent of the individual storage system, provided the storage system provides storage resources for a VO under a single directory and provided the VO has a common data-placement policy.
For example, an ATLAS token with
storage.read:/public
would work on two storage systems even if one storage service places all ATLAS data under/pnfs/example.org/data/atlas
and another storage service places ATLAS data under/vos/atlas/data
.However, this is not the only solution: there are other approaches with different trade-offs.
To promote interoperability, I think the document should at least acknowledge that there is a question on how to map scope paths (the
$PATH
in$AUTHZ:$PATH
scopes) to the corresponding request paths when an agent makes a request involving that scope's token.Ideally, the document would describe a standard approach for doing this mapping.
The text was updated successfully, but these errors were encountered: