We visit Russia on a yearly basis (since 2011) - this year will be our first miss due to the situation with Covid 19.
There is an ATM is the cruise port and it is perfectly safe to use the ATM or one of the ATMs at a bank - this is how we obtain any rubles that we may need.
We often hear stories about reputed credit card fraud in Russia. We use our credit cards in Russia for almost everything and have never had an issue with credit card fraud in Russia (or any other destination in Europe) - our issues with credit card fraud have all occurred within the USA (most recently with an online purchase).
The ruble is the national currency of Russia & USD are not widely accepted except in tourist areas where you will not obtain a good conversion rate. IMHO, it is best to use plastic (Visa or MC) - preferably a card that carries no foreign transaction fee. If you are purchasing an expensive keepsake (amber jewelry, imperial porcelain, etc.), it may be wise to use your credit card as you have a method of disputing the charge should an issue occur with your purchase.
We were able to use USD in tourist shops in 2011, nine years ago. I don't quite understand exactly what you mean when you state that it was "forbidden" 9 years ago but "Russians now are allowed to use USD".
As mentioned above, the souvenirs vendors in the tourist shops/kiosks will accept USD (as well as rubles, euros, GPB, & credit cards). Cruise passengers booked on private tours usually need no rubles as stated above. Should you require a few rubles (say, at the post office or another venue where ONLY rubles are accepted), your private guide should be able to assist you in acquiring them with a minimum of fuss.