Управляйте доступом к своим ресурсам с помощью Identity and Access Management (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 пользователям вашего проекта.
В таблице ниже перечислены роли IAM Cloud Firestore . Вы можете назначить несколько ролей пользователю, группе или учётной записи службы.
| Роль | Разрешения | Описание |
|---|---|---|
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 | Доступ для чтения к результатам сканирования Insights, Stats и Key Visualizer. |
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 | Восстановление базы данных из резервной копии. | |
| Имя разрешения Insights | Описание | |
datastore.insights.get | Получить представление о ресурсе | |
| Имя разрешения учетных данных пользователя | Описание | |
datastore.userCreds.get | Получите подробную информацию об учетных данных пользователя. | |
datastore.userCreds.list | Список доступных учетных данных пользователя. | |
datastore.userCreds.create | Создайте учетные данные пользователя. | |
datastore.userCreds.update | Включить или отключить учетные данные пользователя или сбросить пароль пользователя. | |
datastore.userCreds.delete | Удалить учетные данные пользователя. |
Задержка смены ролей
Cloud Firestore кэширует разрешения IAM на 5 минут, поэтому для вступления изменения роли в силу требуется до 5 минут.
Управление IAM Cloud Firestore
Вы можете получать и настраивать 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 .
- Подробнее об аутентификации .