Определите правило для конкретного поля, а не для родителя. Убедитесь, что родительский объект нигде не разрешает запись, затем включите запись для отдельных полей на их собственных условиях:
"users":{
".read": "auth !== null",
"$user_id": {
"isConnected": {
".write": "newData.isBoolean()"
}
}
}
Если вы сравниваете правила безопасности с Firestore (который позволяет получить список полей в документе), вы должны знать, что Firestore не позволяет вам выражать отдельные правила для каждого поля, поэтому вы должны проверить для них индивидуально в правиле для общего документа. База данных реального времени позволяет позволять вам указывать правила для произвольно вложенных детей, поэтому вы можете воспользоваться этим здесь.