Access conditions/rules for individual content items?

I’m hoping to find a way to limit certain individual content items from being viewed by all end-users. An API query parameter isn’t an option here since naturally I don’t want someone discovering the param and simply removing it.

What i’d like to do is create lots of “page” content types items, but have some which are only accessible to logged in users and some which aren’t. It seems the permissions system allows me to disable access to a content type in its entirety, but not on a conditional basis.

Ideally i’d create a boolean field on the model called “Requires login” or similar, then somehow, somewhere, create a rule that prevents unauthenticated users seeing pages I flag using that field.

Even more ideally i’d also like to create a kind of granular access categorisation system, whereby users who possess a certain property can only access content on which that property has been added as some kind of relation.

Is this possible and I’m missing it, or is there a plugin anyone is aware of?