Identity and Access Management (uprawnienia)

Zarządzanie dostępem do zasobów za pomocą usługi Identity and Access Management (IAM). Usługa IAM umożliwia przyznawanie bardziej szczegółowego dostępu do konkretnych Google Cloudzasobów i zapobiega niepożądanemu dostępowi do innych zasobów. Na tej stronie opisujemy uprawnienia i role IAM dla Cloud Firestore. Szczegółowy opis IAM znajdziesz w dokumentacji IAM.

IAM umożliwia wdrożenie zasady minimalnego wymaganego poziomu uprawnień, która polega na przyznawaniu wyłącznie niezbędnych praw dostępu do zasobów.

Uprawnienia pozwalają kontrolować, kto (użytkownik) ma jakie (rola) uprawnienia do których zasobów, gdy ustawisz zasady uprawnień. Zasady IAM przyznają użytkownikowi co najmniej 1 rolę, która daje mu określone uprawnienia. Możesz na przykład przyznać użytkownikowi rolę datastore.indexAdmin, która umożliwia mu tworzenie, modyfikowanie, usuwanie, wyświetlanie i przeglądanie indeksów.

Uprawnienia i role

W tej sekcji podsumowujemy uprawnienia i role obsługiwane przez Cloud Firestore.

Wymagane uprawnienia do metod interfejsu API

W tabeli poniżej znajdziesz uprawnienia, które musi mieć wywołujący, aby wykonać poszczególne działania:

Metoda Wymagane uprawnienia
projects.databases.MongoDBCompatible
ListDatabases datastore.databases.getMetadata
ListIndexes datastore.indexes.list
Find datastore.entities.get
datastore.entities.list
Aggregate datastore.entities.get
datastore.entities.list
GetMore

Te same uprawnienia, które były wymagane przez wywołanie, które utworzyło kursor.

ListCollections datastore.entities.list
Count datastore.entities.list
Distinct datastore.entities.get
datastore.entities.list
CommitTransaction datastore.databases.get
AbortTransaction datastore.databases.get
EndSessions datastore.databases.get
KillCursors datastore.databases.get
Insert datastore.entities.create
Update datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.entities.create (tylko w przypadku operacji upsert)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (tylko w przypadku zastępowania lub aktualizowania)
datastore.entities.create (tylko w przypadku wstawiania lub aktualizowania)
datastore.entities.delete (tylko w przypadku usuwania)
CreateCollection datastore.entities.create
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
create datastore.databases.create
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
przywróć datastore.backups.restoreDatabase
clone datastore.databases.clone sklonować bazę danych,

Jeśli żądanie clone zawiera wartość tags, wymagane są te dodatkowe uprawnienia:

  • datastore.databases.createTagBinding

Jeśli chcesz sprawdzić, czy powiązania tagów zostały ustawione prawidłowo, wyświetlając listę powiązań, musisz mieć te dodatkowe uprawnienia:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
get datastore.backupSchedules.get
list datastore.backupSchedules.list
create datastore.backupSchedules.create
update datastore.backupSchedules.update
delete datastore.backupSchedules.delete
projects.locations.backups
get datastore.backups.get
list datastore.backups.list
delete datastore.backups.delete
projects.databases.usercreds
get datastore.userCreds.get
list datastore.userCreds.list
create datastore.userCreds.create
enable datastore.userCreds.update
disable datastore.userCreds.update
resetPassword datastore.userCreds.update
delete datastore.userCreds.delete

Gotowe role

W przypadku IAM każda metoda interfejsu API w Cloud Firestorewymaga, 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ściciel, edytujący i wyświetlający możesz przyznawać użytkownikom projektu role Cloud Firestore.

W tabeli poniżej znajdziesz role Cloud Firestore IAM. Możesz przyznać użytkownikowi, grupie lub kontu usługi wiele ról.

Rola Uprawnienia Opis
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Pełny dostęp do Cloud Firestore.
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Uprawnienia do odczytu i zapisu danych w bazie danych Cloud Firestore. Rola przeznaczona dla twórców aplikacji i kont usługi.
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Dostęp do wszystkich zasobów Cloud Firestore w trybie odczytu.
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

datastore.operations.list
datastore.operations.get
resourcemanager.projects.get
resourcemanager.projects.list
Pełny dostęp do zarządzania definicjami indeksów.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.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.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Pełny dostęp do harmonogramów tworzenia kopii zapasowych w bazie danych Cloud Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Dostęp z możliwością odczytu do informacji o kopii zapasowej w Cloud Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Pełny dostęp do kopii zapasowych w lokalizacji Cloud Firestore.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.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.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.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.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
Dostęp z możliwością odczytu do obserwacji, statystyk i skanowań usługi Key Visualizer.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Dostęp z możliwością odczytu do danych logowania użytkowników w Cloud Firestore bazie danych.
roles/datastore.userCredsAdmin datastore.userCreds.get
datastore.userCreds.list
datastore.userCreds.create
datastore.userCreds.update
datastore.userCreds.delete
datastore.databases.list
datastore.databases.getMetadata
Pełny dostęp do danych logowania użytkowników w Cloud Firestore bazie danych.

Role niestandardowe

Jeśli wstępnie zdefiniowane role 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 w działaniach związanych z tworzeniem lub przywracaniem występuje tag, 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.listTagBindings
  • datastore.databases.listEffectiveTags
Zarządzanie tagami w zasobach

W przypadku zasobu bazy danych, do którego dołączasz wartość tagu, wymagane jest to uprawnienie:

  • datastore.databases.createTagBinding

Uprawnienia

Tabela poniżej zawiera listę uprawnień, które obsługuje Cloud Firestore.

Nazwa uprawnienia do bazy danych Opis
datastore.databases.get Rozpoczynanie lub wycofywanie transakcji.
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 Usuń bazę danych.
datastore.databases.clone sklonować bazę danych,
datastore.databases.createTagBinding Utwórz powiązanie tagu z bazą danych.
datastore.databases.deleteTagBinding Usuwanie wiązania tagu z bazą danych.
datastore.databases.listTagBindings Wyświetl wszystkie powiązania tagów z bazą danych.
datastore.databases.listEffectiveTagBindings Wyświetla listę obowiązujących powiązań tagów z bazą danych.
Nazwa uprawnienia do jednostki Opis
datastore.entities.create Utwórz dokument.
datastore.entities.delete Usuń dokument.
datastore.entities.get Odczytaj dokument.
datastore.entities.list Wyświetlanie listy nazw dokumentów w projekcie.
(datastore.entities.get jest wymagany do uzyskania dostępu do danych dokumentu).
datastore.entities.update zaktualizować dokument,
Nazwa uprawnienia do indeksu Opis
datastore.indexes.create Utwórz indeks.
datastore.indexes.delete Usuń indeks.
datastore.indexes.get Odczytywanie metadanych z indeksu.
datastore.indexes.list Wyświetlanie listy indeksów w projekcie.
datastore.indexes.update Zaktualizuj indeks.
Nazwa uprawnienia do operacji Opis
datastore.operations.cancel Anulowanie długotrwałej operacji.
datastore.operations.delete Usuwanie długotrwałej operacji
datastore.operations.get Pobiera najnowszy stan długo trwającej operacji.
datastore.operations.list Wyświetl listę długo trwających operacji.
Nazwa uprawnienia do projektu Opis
resourcemanager.projects.get Przeglądaj zasoby w projekcie.
resourcemanager.projects.list Wyświetl listę projektów, których jesteś właścicielem.
Nazwa uprawnienia dostępu do lokalizacji Opis
datastore.locations.get Uzyskiwanie szczegółowych informacji 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 Pobieranie szczegółów skanowań usługi Key Visualizer.
datastore.keyVisualizerScans.list Wyświetlanie listy dostępnych skanów usługi Key Visualizer.
Nazwa uprawnienia Harmonogram tworzenia kopii zapasowych Opis
datastore.backupSchedules.get Pobieranie szczegółów harmonogramu tworzenia kopii zapasowych
datastore.backupSchedules.list Wyświetl dostępne harmonogramy tworzenia kopii zapasowych.
datastore.backupSchedules.create Utwórz harmonogram tworzenia kopii zapasowych.
datastore.backupSchedules.update Aktualizowanie harmonogramu tworzenia kopii zapasowych.
datastore.backupSchedules.delete Usuń harmonogram tworzenia kopii zapasowych.
Nazwa uprawnienia do tworzenia kopii zapasowych Opis
datastore.backups.get Pobieranie szczegółów kopii zapasowej.
datastore.backups.list Wyświetl listę dostępnych kopii zapasowych.
datastore.backups.delete Usuń kopię zapasową.
datastore.backups.restoreDatabase Przywróć bazę danych z kopii zapasowej.
Nazwa uprawnień do statystyk Opis
datastore.insights.get Uzyskiwanie statystyk dotyczących zasobu
Nazwa uprawnienia danych logowania użytkownika Opis
datastore.userCreds.get Uzyskiwanie szczegółowych informacji o danych logowania użytkownika
datastore.userCreds.list Wyświetl listę dostępnych danych logowania użytkownika.
datastore.userCreds.create Utwórz dane logowania użytkownika.
datastore.userCreds.update Włączanie i wyłączanie danych logowania użytkownika oraz resetowanie jego hasła.
datastore.userCreds.delete Usuń dane logowania użytkownika.

Opóźnienie zmiany roli

Cloud Firestore buforuje uprawnienia IAM przez 5 minut, więc zastosowanie zmiany roli może potrwać do 5 minut.

Zarządzanie uprawnieniami Cloud Firestore

Zasady IAM 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 Przyznawanie, zmienianie i odbieranie uprawnień dostępu uczestnikom projektu.

Konfigurowanie uprawnień dostępu warunkowego

Za pomocą warunków uprawnień możesz definiować i egzekwować warunkową kontrolę 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 uprawnień dla dostępu tymczasowego, zapoznaj się z artykułem Konfigurowanie dostępu tymczasowego.

Aby dowiedzieć się, jak skonfigurować warunki uprawnień dotyczące dostępu do co najmniej 1 bazy danych, przeczytaj artykuł Konfigurowanie warunków dostępu do bazy danych.

Co dalej?