Advanced Search does not honor permissions when returning results. For the most part this is actually a great feature.
With the addition of this other suggestion (Request access to a Space/Dataset/File), this allows an individual to learn about and get value from other people/teams that they may not have been aware of.
There are times when an object (Space/Dataset/File) should NOT be "discoverable" by those who do not have explicit privileges granted. In other words "Advanced Search" should not even return it even if the user can't access it.
The current way to avoid this is to have custom metadata for the space the object is located in that only people with rights to that space can see. This then means that they can't participate in use of an "Common Vocabulary" metadata at the instance level. I don't think these two things should be mutually exclusive. I am suggesting a feature at that allows you to flag and object as "discoverable" (therefore not discoverable).
Ideally "discoverable" could be set at the Instance level for defaulting. If the instance was declared "discoverable=false", then all "Advanced Searches" would only return results the user had permission to access. If the instance level was declared "discoverable=true". then it would work as it does today. When Spaces or standalone Datasets are created, they should inherit from the Instance level setting by default. This can be overridden after the fact.
For Spaces, when "discoverable=false" none of the datasets or files should be returned from an "Advanced Search". When a Dataset is created under a Space it should inherit the Spaces setting. This can be overridden after the fact.
For Datasets, when "discoverable=false" none of the files should be returned from an "Advanced Search". When a File is created under a dataset it should inherit the Dataset setting. This can be overridden after the fact.
For Files, when "discoverable=false" then it will never be returned from an "Advanced Search" by anyone that doesn't have permission. Regardless of the instance, space or dataset setting. This is the most granular level of control.
Note1: Collections are tricky, but I believe we can just apply the rule to the underlying dataset an effectively treat collection as a "non player" in this. I don't think "Advanced Search" searches Collections, but rather the Datasets that are in them? Curious what other think?
Note2: If a dataset is a member of two or more spaces, there is always a risk that one space owner may wish the dataset to be "discoverable=false" and another may want "discoverable=true". Such is life....work it out.