-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SN forwards a request despite of access to object operation denied
error
#1709
Comments
Firstly node tries to read the object locally not matter what, so |
@cthulhu-rider, we discussed that a little with @aprasolova and thought that it is pretty strange behavior: if a node looks for the object locally and finds out that it should not return that according to the ACL rules why does it try to ask other nodes for that object? What could change if other nodes will respond successfully? Should a node return object that it thinks it must not? Also, all appearances that a node, in that case, has all the needed info to answer |
Maybe I haven't caught the issue theme correctly. In described scenario object isn't stored locally, yes? So how can
? |
@cthulhu-rider, no, an object IS stored locally and a Node is not able to get it because of ACL. And the logic is: "could not get it locally (does not matter why), then ask other nodes". Not clear why. If the local engine returns 2048 (access denied), RPCs to other nodes seem redundant. |
behavior continues to amaze for reading ops https://rest.fs.neo.org/HXSaMJXk2g8C14ht8HSi7BBaiYZ1HeWh2xnWPGQCg4H6/1487-1712598182/index.html#suites/7d0d2bff4573ced7a233aef01d2141a2/d40aabea2b91708f/ i see following possible options:
in total, i suggest to:
|
Dangerous for open networks, easy to DoS.
Clients will freak out on this.
Makes sense even for 2/3+ replies. But at the same time can ACL checks be completely done locally? Because
this is a correct thing to do in general, SN is being asked for something and if it can check ACLs locally then any problems with them can be immediately returned to the client. If client is not satisfied (bad node) he can try another SN. |
this is what really freaks the clients. Everyone expects responsive and transparent behavior. I meant returning multi-status when majority averaging a single status cannot be done. E.g. N container nodes returned N different statuses. Server got them, returned them, so client is not burderned to get them on his own with this, the behavior of container nodes (one of the core NeoFS features) becomes even more transparent to the client
they are done locally. If object holder sees access violation, it aborts request immediately. The behavior discussed concerns transit nodes w/o an object, and they behave different
such a threshold is not defined anywhere, now it sounds like fiction. Proposal is welcome this topic may also affect case when most nodes, for example, refuse to service the request while "last" node responds. Now this will be a success because GET makes best effort. At the same time, this differs great from "all OK" case |
Closes #1709. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
In a container, where HEAD is denied, I execute HEAD on an object
D6w3YA6k9FaGnM4vrv2UoyyRjGwcjLAiSDYTfcHCyBac/GhPM1dEK27HvkqdoW8L9nyJda7ZGMYBHGWhJFWMq9Eu1
. In storage node logs I see that the node getsaccess to object operation denied
, and despite of it forwards the request into the container.2049
status code, which corresponds to theobject not found
error. Is it ok? Anyways, in a CLI I get2048
status code, but the log message confuses me.This test fails
Your Environment
NeoFS v0.31.0
The text was updated successfully, but these errors were encountered: