Аутентификация AWS RDS IAM с помощью Terraform - PullRequest
3 голосов
/ 24 апреля 2019

Я пытаюсь правильно настроить свою инфраструктуру без паролей и ключей.AWS RDS имеет возможность сделать это, позволяя пользователям (приложениям) проходить аутентификацию с помощью сгенерированных токенов.

Однако в документации один из шагов ( этот ) требует запусказапрос в базе данных Postgres, чтобы создать пользователя и предоставить ему определенные разрешения:

CREATE USER test_rds WITH LOGIN;
GRANT rds_iam TO test_rds;

Я хочу предоставить весь стек Terraform.Я искал несколько «хаков» для запуска запроса ( здесь ) после создания экземпляра RDS, используя:

resource "null_resource" "db_setup" {
  depends_on = ["aws_db_instance.your_database_instance",   "aws_security_group.sg_allowing_external_access"]

    provisioner "local-exec" {
 // run shell commands to manually psql into the db

или:

resource "aws_instance" "web" {


  provisioner "remote-exec" {
    inline = [
   // run shell commands to manually psql into the db

, но обаиз них требуется создать мастер-пароль и каким-то образом передать его внутри «сценариев».

Можно ли сделать это с помощью Terraform чисто, без передачи жестко закодированных паролей?

Я хотел бы подготовить базу данных и разрешить доступ к ней только определенным экземплярам EC2 / ECS с правильными разрешениями без каких-либо паролей в моем git-репозитории.

1 Ответ

3 голосов
/ 24 апреля 2019

После включения аутентификации IAM для базы данных RDS вы больше не можете использовать аутентификацию на основе пароля для этого пользователя / роли.

Это означает, что вы можете использовать менее безопасный пароль или даже просто сгенерировать случайныйпароль (с использованием ресурса random_id ), который вы используете для установки мастер-пароля и в первую очередь для аутентификации, чтобы вы могли предоставить разрешения rds_iam для главного пользователя и всех других пользователей, которых вы создаете.

Хотя этот пароль окажется в файле состояния (даже если он генерируется случайным образом), как уже упоминалось, после применения гранта rds_iam вы не сможете использовать этот пароль для входа в базу данных..

...