Я действительно запутался в том, как вход IAM работает с AlloyDB. Я ничего не вижу в документах о сопоставлении пользователей postgres с учетными записями службы IAM.
С Cloud SQL Postgres я могу сделать это: https://cloud.google.com/sql/docs/postgres/authentication
CLOUD_IAM_SERVICE_ACCOUNT
, (gcloud sql users create <GSA> --type=CLOUD_IAM_SERVICE_ACCOUNT
)Приложения авторизуются в своей собственной базе данных postgres через свою учетную запись службы IAM (через прокси-сервер) и не могут получить доступ к другим базам данных на сервере postgres.
Как мне это сделать с AlloyDB?
Глядя на документы, я вижу упоминание о CLOUD_IAM_USER
https://cloud.google.com/alloydb/docs/database-users/about#view-list
Но я не вижу, как создавать пользователей AlloyDB через API:
Поддерживает ли API sql users
AlloyDB? С помощью Cloud SQL я могу создавать пользователей сервисных учетных записей IAM через Cloud SQL API.
Еще нет, нет. Но это приближается. Никаких обещаний по датам, конечно, нет, но это в активной разработке.
Вроде да... Я не думаю, что (в настоящее время) команда работает над созданием пользователей уровня БД. Итак, когда у нас есть аутентификация IAM, вы можете создавать удостоверения IAM через API. Так что с этой точки зрения да, но я еще не уверен, какой уровень разрешений/доступа на уровне базы данных вы сможете точно настроить как часть этого. Мне нужно увидеть эту функцию внутри, прежде чем я узнаю. :) И это может измениться до того, как оно доберется до вас.
В настоящее время нет способа контролировать доступ на уровне каждой базы данных без ручного создания и аутентификации с помощью обычных пользователей postgres?
Кроме того, до того, как mysql поддержал это, я сделал это в своих грантах, чтобы ограничить доступ пользователей БД только к прокси: grant usage on DB.TABLE to 'username'@'cloudsqlproxy~%';
. Могу ли я сделать это с помощью AlloyDB postgres?
Для вопроса о доступе: вроде как вы могли бы написать команды psql с пользователем, прошедшим проверку подлинности IAM, для выполнения GRANT (супер хакерский, но можно было бы сделать это таким образом). И, к сожалению, нет, этот трюк не сработает, потому что это трюк MySQL. В настоящее время Postgres не заполняет пользователя/хост.
Чтобы контролировать доступ только к прокси, вы можете/должны использовать правила брандмауэра для управления доступом. Я смотрю, есть ли у нас конкретные документы о том, как это сделать.
Можно ли будет создавать пользователей AlloyDB через API? Кроме того, в postgres присутствует роль сплава biamuser. Если я вручную создам пользователя postgres с правильным соглашением об именах и добавлю его к этой роли, будет ли это работать?