It's a predicate nominative, which is neither.
It's not the subject, because the subject controls agreement:
Who are you?
Who is he?
Who are they?
Who am I?
But it's not an object because it's not in the accusative case. For someone whose dialects has 'whom', it would not be whom:
Who is your favorite singer?
Whom* is your favorite singer?
This can be verified by historical documents when who/whom was more common, or in various languages (German, Latin, etc.) where the distinction is still used.
(There is an interesting case in Arabic where such sentences, when there is an overt verb [most of the time 'be' is omitted and looks just like English except the missing verb], actually would use the accusative case, suggesting it's an object, not like in English.)
In short, it is an equational-type sentence like "x=y", where the copula 'be' links a subject to a predicate nominal that is a renaming of that subject.