Gdy używasz bibliotek klienta serwera dla Cloud Firestore, możesz zarządzać dostępem do zasobów za pomocą Identity and Access Management (Uprawnień). Uprawnienia umożliwiają przyznawanie bardziej szczegółowego dostępu do określonych zasobów Google Cloud i zapobiegają niepożądanemu dostępowi do innych zasobów. Na tej stronie opisujemy uprawnienia i role uprawnień w Cloud Firestore. Szczegółowy opis uprawnień znajdziesz w dokumentacji uprawnień.
Uprawnienia umożliwiają wdrożenie zasady jak najmniejszych uprawnień, dzięki czemu przyznajesz tylko niezbędny dostęp do zasobów.
Uprawnienia pozwalają kontrolować, kto (użytkownik) ma jakie (rola) uprawnienia do których zasobów, gdy ustawisz zasady uprawnień.
Zasady uprawnień przyznają użytkownikowi co najmniej 1 rolę, dając mu określone uprawnienia. Możesz na przykład przyznać użytkownikowi rolę datastore.indexAdmin, która umożliwia tworzenie, modyfikowanie, usuwanie, wyświetlanie i wyświetlanie listy indeksów.
Uprawnienia i role
W tej sekcji znajdziesz podsumowanie uprawnień i ról obsługiwanych przez Cloud Firestore.
Wymagane uprawnienia do metod interfejsu API
W tabeli poniżej znajdziesz uprawnienia, które musi mieć element wywołujący, aby wykonać poszczególne działania:
| Metoda | Wymagane uprawnienia |
|---|---|
projects.databases.documents |
|
batchGet |
datastore.entities.get |
batchWrite aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na false |
datastore.entities.create |
batchWrite aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na true |
datastore.entities.create |
batchWrite – aktualizacja lub przekształcenie bez warunku wstępnego |
datastore.entities.create |
beginTransaction |
datastore.databases.get |
commit aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na false |
datastore.entities.create |
commit – aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na true |
datastore.entities.update |
commit – aktualizacja lub przekształcenie bez warunku wstępnego |
datastore.entities.create |
Usuń: commit |
datastore.entities.delete |
createDocument |
datastore.entities.create |
delete |
datastore.entities.delete |
get |
datastore.entities.get |
list |
datastore.entities.getdatastore.entities.list |
listCollectionIds |
datastore.entities.list |
partitionQuery |
datastore.entities.get |
patch |
datastore.entities.update |
rollback |
datastore.databases.get |
runAggregationQuery |
datastore.entities.get |
runQuery |
datastore.entities.get |
executePipeline (RPC)z dowolnym z tych etapów: - collection(...)- collection_group(...)- database()
|
datastore.entities.get
|
executePipeline (RPC)z dowolnym z tych etapów: - documents(...) |
datastore.entities.get
|
executePipeline (RPC)z dowolnym z tych etapów: - update(...) |
datastore.entities.update
|
executePipeline (RPC)z dowolnym z tych etapów: - delete(...) |
datastore.entities.delete
|
write (RPC) aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na false |
datastore.entities.create |
write (RPC) aktualizacja lub przekształcenie z warunkiem wstępnym istnienia ustawionym na true |
datastore.entities.update |
write (RPC) – aktualizacja lub przekształcenie bez warunku wstępnego |
datastore.entities.create |
Usuń: write (RPC) |
datastore.entities.delete |
projects.databases.indexes |
|
create |
datastore.schemas.create |
delete |
datastore.schemas.delete |
get |
datastore.schemas.get |
list |
datastore.schemas.list |
projects.databases |
|
create |
datastore.databases.createJeśli żądanie
Jeśli chcesz sprawdzić, czy powiązania tagów zostały prawidłowo skonfigurowane, wyświetlając listę powiązań, wymagane są te dodatkowe uprawnienia:
|
delete |
datastore.databases.delete |
get |
datastore.databases.getMetadata |
list |
datastore.databases.list |
patch |
datastore.databases.update |
| przywróć | datastore.backups.restoreDatabase |
clone |
datastore.databases.cloneJeśli żądanie
Jeśli chcesz sprawdzić, czy powiązania tagów zostały prawidłowo skonfigurowane, wyświetlając listę powiązań, wymagane są te dodatkowe uprawnienia:
|
projects.locations |
|
get |
datastore.locations.get |
list |
datastore.locations.list |
projects.databases.backupschedules |
|
| get | datastore.backupSchedules.get |
| list | datastore.backupSchedules.list |
| utwórz | datastore.backupSchedules.create |
| update | datastore.backupSchedules.update |
| usuń | datastore.backupSchedules.delete |
projects.locations.backups |
|
| get | datastore.backups.get |
| list | datastore.backups.list |
| usuń | datastore.backups.delete |
Role zdefiniowane
W przypadku uprawnień każda metoda interfejsu API w Cloud Firestore wymaga, aby konto wysyłające żądanie do interfejsu API miało odpowiednie uprawnienia do korzystania z zasobu. Uprawnienia są przyznawane przez ustawienie zasad, które przyznają role użytkownikowi, grupie lub kontu usługi. Oprócz ról podstawowych, właściciela, edytującego i wyświetlającego, możesz przypisać użytkownikom projektu role Cloud Firestore.
W tabeli poniżej znajdziesz role uprawnień Cloud Firestore. Użytkownikowi, grupie lub kontu usługi możesz przypisać wiele ról.
| Rola | Uprawnienia | Opis |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
Pełny dostęp do: Cloud Firestore. |
roles/datastore.user |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
Uprawnienia do zapisu i odczytu danych w bazie danych Cloud Firestore. Rola przeznaczona dla deweloperów aplikacji i kont usługi. |
roles/datastore.viewer |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.listdatastore.insights.get |
Dostęp do wszystkich zasobów Cloud Firestore w trybie odczytu. |
roles/datastore.importExportAdmin |
appengine.applications.getdatastore.databases.exportdatastore.databases.getMetadatadatastore.databases.importdatastore.operations.canceldatastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list |
Pełny dostęp pozwalający na zarządzanie eksportem i importem. |
roles/datastore.bulkAdmin |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.databases.bulkDeletedatastore.operations.canceldatastore.operations.getdatastore.operations.list |
Pełny dostęp z możliwością zarządzania operacjami zbiorczymi. |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list |
Pełny dostęp do zarządzania definicjami indeksów. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadatadatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listresourcemanager.projects.getresourcemanager.projects.list |
Pełny dostęp do skanowań Key Visualizer. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
Dostęp z możliwością odczytu do harmonogramów tworzenia kopii zapasowych w bazie danych Cloud Firestore. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
Pełny dostęp do harmonogramów tworzenia kopii zapasowych w bazie danych Cloud Firestore. |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
Dostęp z możliwością odczytu do informacji o kopiach zapasowych w lokalizacji Cloud Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
Pełny dostęp do kopii zapasowych w lokalizacji Cloud Firestore. |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Możliwość przywrócenia kopii zapasowej Cloud Firestore do nowej bazy danych. Ta rola umożliwia też tworzenie nowych baz danych, niekoniecznie przez przywracanie z kopii zapasowej. |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Możliwość sklonowania bazy danych Cloud Firestore do nowej bazy danych. Ta rola umożliwia też tworzenie nowych baz danych, niekoniecznie przez klonowanie. |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
Dostęp z możliwością odczytu do obserwacji, statystyk i skanowań usługi Key Visualizer. |
Role niestandardowe
Jeśli role zdefiniowane nie spełniają wymagań Twojej firmy, możesz zdefiniować własne role niestandardowe z samodzielnie określonymi uprawnieniami:
Role wymagane do tworzenia tagów i zarządzania nimi
Jeśli jakikolwiek tag jest reprezentowany w działaniach tworzenia lub przywracania, wymagane są niektóre role. Więcej informacji o tworzeniu par klucz-wartość tagu przed powiązaniem ich z zasobami bazy danych znajdziesz w artykule Tworzenie tagów i zarządzanie nimi.
Wymagane są te uprawnienia:
Wyświetl tagi
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
Zarządzanie tagami zasobów
W przypadku zasobu bazy danych, do którego dołączasz wartość tagu, wymagane jest to uprawnienie:
datastore.databases.createTagBinding
Uprawnienia
W tabeli poniżej znajdziesz uprawnienia obsługiwane przez Cloud Firestore.
| Nazwa uprawnienia do bazy danych | Opis | |
|---|---|---|
datastore.databases.get |
rozpocząć lub wycofać transakcję; | |
datastore.databases.import |
Importowanie encji do bazy danych. | |
datastore.databases.export |
Eksportowanie encji z bazy danych. | |
datastore.databases.bulkDelete |
Zbiorcze usuwanie encji z bazy danych. | |
datastore.databases.getMetadata |
Odczytywanie metadanych z bazy danych. | |
datastore.databases.list |
Wyświetlanie listy baz danych w projekcie. | |
datastore.databases.create |
Utwórz bazę danych. | |
datastore.databases.update |
Zaktualizuj bazę danych. | |
datastore.databases.delete |
Usuwanie bazy danych. | |
datastore.databases.clone |
sklonować bazę danych, | |
datastore.databases.createTagBinding |
utworzyć powiązanie tagu z bazą danych, | |
datastore.databases.deleteTagBinding |
Usuwanie powiązania tagu z bazą danych. | |
datastore.databases.listTagBindings |
Wyświetlanie listy wszystkich powiązań tagów bazy danych. | |
datastore.databases.listEffectiveTagBindings |
Wyświetlanie listy obowiązujących powiązań tagów bazy danych. | |
| Nazwa uprawnienia do encji | Opis | |
datastore.entities.create |
Utwórz dokument. | |
datastore.entities.delete |
Usuń dokument. | |
datastore.entities.get |
Odczytywanie dokumentu. | |
datastore.entities.list |
Wyświetlanie nazw dokumentów w projekcie. ( datastore.entities.get jest wymagany, aby uzyskać dostęp do danych dokumentu). |
|
datastore.entities.update |
Aktualizowanie dokumentu. | |
| Nazwa uprawnienia do indeksu | Opis | |
datastore.schemas.create |
Utwórz indeks. | |
datastore.schemas.delete |
Usuń indeks. | |
datastore.schemas.get |
Odczytywanie metadanych z indeksu. | |
datastore.schemas.list |
Wyświetlanie listy indeksów w projekcie. | |
datastore.schemas.update |
Zaktualizuj indeks. | |
| Nazwa uprawnienia do operacji | Opis | |
datastore.operations.cancel |
Anulowanie długotrwałej operacji. | |
datastore.operations.delete |
Usuwanie długo trwającej operacji. | |
datastore.operations.get |
Pobiera najnowszy stan długo trwającej operacji. | |
datastore.operations.list |
Wyświetlanie listy długo trwających operacji. | |
| Nazwa uprawnienia do projektu | Opis | |
resourcemanager.projects.get |
Przeglądaj zasoby w projekcie. | |
resourcemanager.projects.list |
Wyświetlanie listy projektów, których jesteś właścicielem. | |
| Nazwa uprawnienia dostępu do lokalizacji | Opis | |
datastore.locations.get |
uzyskiwać szczegółowe informacje o lokalizacji bazy danych, Wymagane do utworzenia nowej bazy danych. | |
datastore.locations.list |
Wyświetl listę dostępnych lokalizacji baz danych. Wymagane do utworzenia nowej bazy danych. | |
| Nazwa uprawnienia Key Visualizer | Opis | |
datastore.keyVisualizerScans.get |
Uzyskiwanie informacji o skanowaniach Key Visualizer. | |
datastore.keyVisualizerScans.list |
Wyświetlanie listy dostępnych skanowań Key Visualizer. | |
| Nazwa uprawnienia do harmonogramu tworzenia kopii zapasowych | Opis | |
datastore.backupSchedules.get |
Uzyskiwanie informacji o harmonogramie tworzenia kopii zapasowych. | |
datastore.backupSchedules.list |
Wyświetl listę dostępnych harmonogramów tworzenia kopii zapasowych. | |
datastore.backupSchedules.create |
Utwórz harmonogram tworzenia kopii zapasowych. | |
datastore.backupSchedules.update |
Zaktualizuj harmonogram tworzenia kopii zapasowych. | |
datastore.backupSchedules.delete |
Usuń harmonogram tworzenia kopii zapasowych. | |
| Nazwa uprawnienia do tworzenia kopii zapasowych | Opis | |
datastore.backups.get |
Uzyskiwanie informacji o kopii zapasowej. | |
datastore.backups.list |
Wyświetl listę dostępnych kopii zapasowych. | |
datastore.backups.delete |
usunąć kopię zapasową, | |
datastore.backups.restoreDatabase |
przywrócić bazę danych z kopii zapasowej, | |
| Nazwa uprawnienia do statystyk | Opis | |
datastore.insights.get |
Uzyskiwanie statystyk dotyczących zasobu |
Czas oczekiwania na zmianę roli
Cloud Firestore przechowuje uprawnienia w pamięci podręcznej przez 5 minut, więc zmiana roli zacznie obowiązywać dopiero po tym czasie.
Zarządzanie uprawnieniami Cloud Firestore
Zasady uprawnień możesz pobierać i ustawiać za pomocą konsoli Google Cloud, interfejsu IAM API lub narzędzia wiersza poleceń gcloud. Więcej informacji znajdziesz w artykule na temat przyznawania, zmieniania i odbierania dostępu użytkownikom projektu.
Konfigurowanie uprawnień dostępu warunkowego
Możesz używać warunków IAM do definiowania i egzekwowania warunkowej kontroli dostępu.
Na przykład ten warunek przypisuje podmiotowi zabezpieczeń rolę datastore.user do określonej daty:
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
Aby dowiedzieć się, jak zdefiniować warunki IAM na potrzeby dostępu tymczasowego, przeczytaj artykuł o konfigurowaniu dostępu tymczasowego.
Aby dowiedzieć się, jak skonfigurować warunki IAM na potrzeby dostępu do co najmniej 1 bazy danych, przeczytaj artykuł o konfigurowaniu warunków dostępu do bazy danych.
Zależność reguły zabezpieczeń od uprawnień
Cloud Firestore Security Rules dla klientów mobilnych i internetowych zależy od tego konta usługi i powiązania uprawnień:
| Konto usługi | Rola uprawnień |
|---|---|
service-project_number@firebase-rules.iam.gserviceaccount.com |
roles/firebaserules.system |
Firebase automatycznie skonfiguruje dla Ciebie to konto usługi. Jeśli usuniesz rolę firebaserules.system z tego konta usługi, reguły zabezpieczeń będą odrzucać wszystkie żądania. Aby przywrócić to powiązanie uprawnień, użyj tego polecenia gcloud CLI:
gcloud projects add-iam-policy-binding project_id \ --member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \ --role=roles/firebaserules.system
Aby określić project_id i project_number, zapoznaj się z artykułem Identyfikowanie projektów.
Użyj Google Cloud CLI zamiast konsoli Google Cloud, ponieważ rola firebaserules.system jest domyślnie ukryta w konsoli.
Co dalej?
- Dowiedz się więcej o uprawnieniach.
- Przyznaj role uprawnień.
- Dowiedz się więcej o uwierzytelnianiu.