Marked as helpful by the asker
request.auth != null only means somebody is logged in. You want this user:
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
Run the Rules Playground in the console with a different uid to confirm it denies. And rotate nothing: Firebase API keys are public by design, the rules are your only lock.