Управляйте доступом к своим ресурсам с помощью 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.get datastore.entities.list | |
Aggregate | datastore.entities.get datastore.entities.list | |
GetMore | Те же разрешения, которые требовались для вызова, создавшего курсор. | |
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 (только для обновления и вставки) | |
FindAndModify | datastore.entities.get datastore.entities.list datastore.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.get datastore.* resourcemanager.projects.get resourcemanager.projects.list | Полный доступ к 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 | Доступ для чтения и записи к данным в базе данных Cloud Firestore . Предназначен для разработчиков приложений и учётных записей служб. |
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 | Доступ для чтения ко всем ресурсам Cloud Firestore . |
roles/datastore.indexAdmin | appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.list datastore.operations.get resourcemanager.projects.get resourcemanager.projects.list | Полный доступ для управления определениями индексов. |
roles/datastore.backupSchedulesViewer | datastore.backupSchedules.get datastore.backupSchedules.list | Доступ для чтения к расписаниям резервного копирования в базе данных 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 | Полный доступ к расписаниям резервного копирования в базе данных Cloud Firestore . |
roles/datastore.backupsViewer | datastore.backups.get datastore.backups.list | Доступ для чтения к резервной информации в хранилище Cloud Firestore . |
roles/datastore.backupsAdmin | datastore.backups.get datastore.backups.list datastore.backups.delete | Полный доступ к резервным копиям в хранилище 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 | Возможность восстановления резервной копии Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно восстанавливая их из резервной копии. |
roles/datastore.cloneAdmin | datastore.databases.clone datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get | Возможность клонировать базу данных Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно клонируя их. |
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 | Доступ для чтения к результатам сканирования Insights, Stats и Key Visualizer. |
roles/datastore.userCredsViewer | datastore.userCreds.get datastore.userCreds.list | Доступ для чтения к учетным данным пользователя в базе данных Cloud Firestore . |
roles/datastore.userCredsAdmin | datastore.userCreds.get datastore.userCreds.list datastore.userCreds.create datastore.userCreds.update datastore.userCreds.delete datastore.databases.list datastore.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 .
- Подробнее об аутентификации .