After running into problems setting up Views integration with CiviCRM installed on a separate database, I gave up and started my project over with CiviCRM installed on the same database as Drupal 9. This has solved the privileges problem I was having.
Here's my old question about the Privileges problem (which I'd still love an answer to if anyone has one!)
However, I'm now running into an issue where CiviCRM fields aren't showing up as an option in Views. The documentation seems to suggest that if CiviCRM is installed on the same db as Drupal, this data should show up with no further configuration needed.
If your CiviCRM and Drupal are located within the same database the 12 steps below are not required.
Help! What am I doing wrong?
EDIT: At @KarinG's suggestion I installed and enabled the CiviCRM Entity module, which has fixed the problem where CiviCRM entities weren't showing up as options in Views. However, I now have a problem where those entities are not showing up in the results. I've flushed Drupal's caches many times at this point.
No results are returned.
Thank you in advance for all your help! It really feels like there's just some silly box I've left unchecked somewhere.