каковы привилегии пользователя Postgres, созданного gcp

# #postgresql #google-cloud-platform #terraform

Вопрос:

Я создал экземпляр Postgres, базу данных и пользователя в GCP, который ничего не спрашивал меня о настройке привилегий пользователя. и он не спрашивал, как пользователь будет относиться к базе данных.

Когда я проверяю использование разрешений пользователя psql , я увидел информацию ниже. Похоже, у пользователя очень сильные права доступа?

Итак, как мне предоставить разрешение администратора user: myuser только для базы данных: mydatabase?

 mydatabase=>l
Name   | owner |Encoding |  Collate   |   Ctype    | Access privileges 
mydatabase | cloudsqlsuperuser | UTF8  | en_US.UTF8 |en_US.UTF8 |
... 

mydatabase=>du
Role name| List of roles Attributes| Member of                                            
myuser   | Create role, Create DB  | {cloudsqlsuperuser}
cloudsqlsuperuser  | Create role, Create DB  | {pg_monitor,pg_signal_backend}
...
 

Я считаю, что этот вопрос не имеет никакого отношения к Терраформированию, но вот мой код Терраформирования на случай, если он поможет найти ответ:

 resource "google_sql_database_instance" "mypostgres" {...}

resource "google_sql_database" "mypostgres_db" {
  name  = "mydatabase"
  instance = google_sql_database_instance.mypostgres.name
  ...
}

resource "google_sql_user" "mypostgres_user" {
  name     = "myuser"
  instance = google_sql_database_instance.mypostgres.name
  password = "mypassword"
  ...
}
 

Комментарии:

1. эй, там! не могли бы вы поделиться, используете ли вы облачный SQL или у вас есть база данных в GCE?

2. Я использую облачный SQL. Спасибо

3. @SamuelRomero: похоже, что любой пользователь, созданный GCP Cloud SQL, имеет очень высокие привилегии суперпользователя. Вот почему GCP даже не просит меня связать пользователя с базой данных, когда я создаю пользователя: см. cloud.google.com/sql/docs/postgres/…

Ответ №1:

С помощью облачного SQL Google Cloud создает пользователя-суперадминистратора со всеми разрешениями.

Затем вы можете создать новых пользователей, либо встроенного пользователя (пользователя стандартной базы данных, с логином и паролем), либо пользователя Cloud IAM, который повторно использует возможности Cloud IAM для аутентификации пользователей.

Вы также можете создавать базы данных.

Однако RBAC-это не облачный API Google, а функция базы данных, и вы не можете предоставлять пользователям разрешения на доступ к базе данных. Вам нужно запустить команду В базе данных, и terraform не может сделать это за вас.

Комментарии:

1. Спасибо @guillaume. понял, не может RBAC на уровне GCP или на уровне терраформ. должен делать это с уровня psql. Вы знаете, как предоставить разрешение user: myuser администратору только для базы данных: база данных mydatabase с помощью psql? ПРЕДОСТАВЬТЕ ВСЕ ПРАВА НА БАЗУ ДАННЫХ mydatabase моему пользователю; Я не думаю, что это дает моему пользователю разрешение на вставку, удаление таблиц базы данных mydatabase.

2. Это правильная команда для предоставления всех привилегий. Вы также можете сузить их для обеспечения наименьших привилегий, выбрав в этом списке: ВЫБРАТЬ, ВСТАВИТЬ, ОБНОВИТЬ, УДАЛИТЬ, ОБРЕЗАТЬ, ССЫЛКИ, ЗАПУСТИТЬ, СОЗДАТЬ, ПОДКЛЮЧИТЬ, ВРЕМЕННО, ВЫПОЛНИТЬ, ИСПОЛЬЗОВАНИЕ

3. Большое спасибо