Управляйте доступом к своим ресурсам с помощью системы управления идентификацией и доступом (IAM). IAM позволяет предоставлять более детальный доступ к конкретным ресурсам Google Cloud и предотвращает нежелательный доступ к другим ресурсам. На этой странице описаны разрешения и роли IAM для Cloud Firestore . Для получения подробного описания IAM ознакомьтесь с документацией по IAM .
IAM позволяет применять принцип минимальных привилегий в сфере безопасности , предоставляя доступ к ресурсам только необходимым пользователям.
IAM позволяет контролировать, кто (пользователь) имеет какие (роли) разрешения для каких ресурсов, путем установки политик IAM. Политики IAM предоставляют пользователю одну или несколько ролей, наделяя его определенными разрешениями. Например, вы можете предоставить пользователю роль datastore.indexAdmin , которая позволяет ему создавать, изменять, удалять, просматривать или отображать индексы.
Права доступа и роли
В этом разделе приведено краткое описание разрешений и ролей, поддерживаемых Cloud Firestore .
Необходимые разрешения для методов API
В таблице ниже перечислены права доступа, которыми должен обладать вызывающий пользователь для выполнения каждого действия:
| Метод | Необходимые разрешения | |
|---|---|---|
projects.databases.MongoDBCompatible | ||
ListDatabases | datastore.databases.getMetadata | |
ListIndexes | datastore.indexes.list | |
Find | datastore.entities.getdatastore.entities.list | |
Aggregate | datastore.entities.getdatastore.entities.list | |
GetMore | Те же права доступа, которые требовались для вызова, создавшего курсор. | |
ListCollections | datastore.entities.list | |
Count | datastore.entities.list | |
Distinct | datastore.entities.getdatastore.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.getdatastore.entities.listdatastore.entities.updatedatastore.entities.create (только для операции обновления/вставки) | |
FindAndModify | datastore.entities.getdatastore.entities.listdatastore.entities.update (только для замены или обновления)datastore.entities.create (только для операции обновления/вставки)datastore.entities.delete (только для удаления) | |
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 | |
| восстановить | datastore.backups.restoreDatabase | |
clone | datastore.databases.clone | Клонировать базу данных. Если ваш запрос
Для проверки успешности установки привязок тегов путем вывода списка привязок требуются следующие дополнительные разрешения:
|
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 | |
Предопределенные роли
В системе IAM для каждого метода API в Cloud Firestore требуется, чтобы учетная запись, выполняющая запрос API, имела соответствующие разрешения на использование ресурса. Разрешения предоставляются путем установки политик, которые назначают роли пользователю, группе или учетной записи службы. В дополнение к основным ролям, таким как владелец, редактор и пользователь , вы можете назначать роли Cloud Firestore пользователям вашего проекта.
В таблице ниже перечислены роли Cloud Firestore IAM. Вы можете предоставить пользователю, группе или учетной записи службы несколько ролей.
| Роль | Разрешения | Описание |
|---|---|---|
roles/datastore.owner | appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list | Полный доступ к Cloud Firestore . |
roles/datastore.user | appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.indexes.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list | Доступ на чтение/запись данных в базе данных Cloud Firestore . Предназначено для разработчиков приложений и сервисных учетных записей. |
roles/datastore.viewer | appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.indexes.getdatastore.indexes.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list | Доступ к чтению всех ресурсов Cloud Firestore . |
roles/datastore.indexAdmin | appengine.applications.getdatastore.databases.getMetadatadatastore.indexes.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list | Полный доступ к управлению определениями индексов. |
roles/datastore.backupSchedulesViewer | datastore.backupSchedules.getdatastore.backupSchedules.list | Доступ на чтение к расписаниям резервного копирования в базе данных Cloud Firestore . |
roles/datastore.backupSchedulesAdmin | datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata | Полный доступ к расписаниям резервного копирования в базе данных Cloud Firestore . |
roles/datastore.backupsViewer | datastore.backups.getdatastore.backups.list | Доступ на чтение к резервной информации в хранилище Cloud Firestore . |
roles/datastore.backupsAdmin | datastore.backups.getdatastore.backups.listdatastore.backups.delete | Полный доступ к резервным копиям в Cloud Firestore . |
roles/datastore.restoreAdmin | datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | Возможность восстанавливать резервную копию Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно путем восстановления из резервной копии. |
roles/datastore.cloneAdmin | datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | Возможность клонировать базу данных Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно путем клонирования. |
roles/datastore.statisticsViewer | resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get | Доступ к аналитическим данным, статистике и ключевым визуализациям можно получить по запросу. |
roles/datastore.userCredsViewer | datastore.userCreds.getdatastore.userCreds.list | Доступ на чтение учетных данных пользователя в базе данных Cloud Firestore . |
roles/datastore.userCredsAdmin | datastore.userCreds.getdatastore.userCreds.listdatastore.userCreds.createdatastore.userCreds.updatedatastore.userCreds.deletedatastore.databases.listdatastore.databases.getMetadata | Полный доступ к учетным данным пользователей в базе данных Cloud Firestore . |
Пользовательские роли
Если предопределенные роли не соответствуют вашим бизнес-требованиям, вы можете определить собственные пользовательские роли с указанными вами правами доступа:
Необходимые роли для создания и управления тегами
Если в операциях создания или восстановления используется какой-либо тег, требуются определенные роли. Дополнительные сведения о создании пар «ключ-значение» для тегов перед их связыванием с ресурсами базы данных см. в разделе «Создание и управление тегами» .
Для работы требуются следующие разрешения.
Просмотреть теги
-
datastore.databases.listTagBindings -
datastore.databases.listEffectiveTags
Управление тегами на ресурсах
Для ресурса базы данных, к которому вы прикрепляете значение тега, требуются следующие разрешения.
-
datastore.databases.createTagBinding
Разрешения
В таблице ниже перечислены разрешения, поддерживаемые Cloud Firestore .
| имя разрешения базы данных | Описание | |
|---|---|---|
datastore.databases.get | Начать или отменить транзакцию. | |
datastore.databases.getMetadata | Считывание метаданных из базы данных. | |
datastore.databases.list | Список баз данных в проекте. | |
datastore.databases.create | Создайте базу данных. | |
datastore.databases.update | Обновить базу данных. | |
datastore.databases.delete | Удалить базу данных. | |
datastore.databases.clone | Клонировать базу данных. | |
datastore.databases.createTagBinding | Создайте привязку тегов для базы данных. | |
datastore.databases.deleteTagBinding | Удалите привязку тега для базы данных. | |
datastore.databases.listTagBindings | Перечислите все привязки тегов для базы данных. | |
datastore.databases.listEffectiveTagBindings | Перечислите эффективные привязки тегов для базы данных. | |
| Название разрешения сущности | Описание | |
datastore.entities.create | Создать документ. | |
datastore.entities.delete | Удалить документ. | |
datastore.entities.get | Прочитайте документ. | |
datastore.entities.list | Перечислите названия документов в проекте. (Для доступа к данным документа требуется datastore.entities.get .) | |
datastore.entities.update | Обновить документ. | |
| Имя разрешения индекса | Описание | |
datastore.indexes.create | Создайте индекс. | |
datastore.indexes.delete | Удалить индекс. | |
datastore.indexes.get | Считывание метаданных из индекса. | |
datastore.indexes.list | Перечислите индексы в проекте. | |
datastore.indexes.update | Обновить индекс. | |
| Название разрешения операции | Описание | |
datastore.operations.cancel | Отменить длительную операцию. | |
datastore.operations.delete | Удаление длительной операции. | |
datastore.operations.get | Получает самую актуальную информацию о давно работающем предприятии. | |
datastore.operations.list | Перечислите операции, которые выполняются длительное время. | |
| Название разрешения проекта | Описание | |
resourcemanager.projects.get | Ознакомьтесь с ресурсами проекта. | |
resourcemanager.projects.list | Перечислите собственные проекты. | |
| Название разрешения на определение местоположения | Описание | |
datastore.locations.get | Получите подробную информацию о местоположении базы данных. Это необходимо для создания новой базы данных. | |
datastore.locations.list | Список доступных местоположений баз данных. Необходимо для создания новой базы данных. | |
| Название разрешения Key Visualizer | Описание | |
datastore.keyVisualizerScans.get | Получите подробную информацию о результатах сканирования с помощью Key Visualizer. | |
datastore.keyVisualizerScans.list | Список доступных сканирований Key Visualizer. | |
| Имя разрешения для расписания резервного копирования | Описание | |
datastore.backupSchedules.get | Получите подробную информацию о графике резервного копирования. | |
datastore.backupSchedules.list | Перечислите доступные графики резервного копирования. | |
datastore.backupSchedules.create | Создайте расписание резервного копирования. | |
datastore.backupSchedules.update | Обновить расписание резервного копирования. | |
datastore.backupSchedules.delete | Удалить расписание резервного копирования. | |
| Имя разрешения резервного копирования | Описание | |
datastore.backups.get | Получите подробную информацию о резервном копировании. | |
datastore.backups.list | Список доступных резервных копий. | |
datastore.backups.delete | Удалите резервную копию. | |
datastore.backups.restoreDatabase | Восстановите базу данных из резервной копии. | |
| Название разрешения для получения аналитических данных | Описание | |
datastore.insights.get | Получите представление о ресурсе. | |
| имя разрешения учетных данных пользователя | Описание | |
datastore.userCreds.get | Получите подробную информацию об учетных данных пользователя. | |
datastore.userCreds.list | Отобразить список доступных учетных данных пользователя. | |
datastore.userCreds.create | Создайте учетные данные пользователя. | |
datastore.userCreds.update | Включить или отключить учетные данные пользователя, а также сбросить пароль пользователя. | |
datastore.userCreds.delete | Удалите учетные данные пользователя. |
Задержка при смене роли
Cloud Firestore кэширует разрешения IAM на 5 минут, поэтому для вступления в силу изменения роли может потребоваться до 5 минут.
Управление Cloud Firestore IAM
Вы можете получать и устанавливать политики IAM с помощью консоли Google Cloud, API IAM или инструмента командной строки gcloud . Подробности см. в разделе «Предоставление, изменение и отзыв доступа участникам проекта» .
Настройте условные права доступа.
С помощью условий IAM можно определять и обеспечивать контроль доступа на основе условий.
Например, следующее условие назначает субъекту роль datastore.user до указанной даты:
{
"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')"
}
}
Чтобы узнать, как задать условия IAM для временного доступа, см. раздел «Настройка временного доступа» .
Чтобы узнать, как настроить условия IAM для доступа к одной или нескольким базам данных, см. раздел «Настройка условий доступа к базе данных» .
Что дальше?
- Узнайте больше об IAM .
- Предоставьте роли IAM .
- Узнайте об аутентификации .