Kiev, fighting a Moscow-backed insurgency in eastern Ukraine, has said it suspects Russia of planning to interfere in the election.
Lawmakers also voted to allocate around US$350 million (308 million euros) to the intelligence services to counter the perceived threat.
Thursday's measure would block Russian nationals from taking part in international election-monitoring missions, and would also apply to parliamentary and local votes.
The proposal has been condemned by Moscow and Kiev's Western allies alike. Kurt Volker, the US special representative in Ukraine, said Russians should take part in monitoring as long as they were overseen by international organisations.
If they do not take part, this allows "people to question election," Volker wrote on Twitter ahead of the vote.
"No games. Ukraine needs to have confidence in its own democratic institutions," he said.
The Organization for Security and Co-operation in Europe (OSCE) is preparing an extensive mission for the March 31 poll. Russian senators told news agencies that Moscow might not recognise the results of the Ukrainian election if Russian observers are not allowed to monitor them.
Russia's OSCE envoy Alexander Lukashevich called the ban "a gross violation of Ukraine's OSCE commitments and international legal norms," in comments carried by the RIA news agency. Volodymyr Zelensky, a comedian who plays the Ukrainian president in a TV series, is currently favourite to take on the real-life role, according to polls.