Cómo crear un usuario de base de datos y asignarle un rol con terraform

Cómo crear un usuario de base de datos y asignarle un rol con terraform

He creado un servidor SQL y una base de datos con terraform, ahora tengo que crear un usuario de base de datos y asignarle una función.

Cómo puedo hacerlo. Por favor sugiérame.

Respuesta1

Empecé a trabajar en un proveedor de Terraform que hará esto enhttps://github.com/jayway/terraform-provider-mssql. Todavía es un trabajo muy inicial, pero logré que aprovisione inicios de sesión y usuarios para esos inicios de sesión en una instancia local de SQL Server (que ya se estaba ejecutando, por lo que no lo he probado en absoluto junto con, por ejemplo, el proveedor AzureRM). . Las pruebas y las contribuciones son bienvenidas (¡pero no las use para escenarios de producción todavía)!

Respuesta2

La creación de usuarios y roles es una función del servidor SQL, no de la plataforma Azure. Como tal, el proveedor Terraforms ARM no se ocupa de esto y, hasta donde puedo ver, Terraform no tiene un proveedor MSSQL para este trabajo (sí tiene MYSQL y Postgres). Debería realizar este trabajo utilizando scripts SQL.

Respuesta3

Así es como hice esto usando postgres/psql.

Primero, genere el hash de contraseña md5 agregando el nombre de usuario a la contraseña:

$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8

Anteponga la cadena 'md5' al hash resultante para obtener el formulario de contraseña cifrada que Postgres aceptará: md5fd9c9714184c4ae189ca83f1c21aeeb8

Luego agregue un archivo de plantilla independiente con los comandos de la base de datos que desea ejecutar:

data "template_file" "db_roles" {
  vars {
    username_bob = "bob"
    password_bob = "md5fd9c9714184c4ae189ca83f1c21aeeb8"
  }
  template = <<EOF

  create user $${username_bob};
  alter user $${username_bob} WITH ENCRYPTED PASSWORD '$${password_bob}';

  EOF
}

Finalmente, agregue un aprovisionador de ejecución remota como parte de la creación de su servidor:

  provisioner "remote-exec" {
    inline = [
      "set -x",
      "cat > db_roles.sql <<EOL\n${data.template_file.db_roles.rendered}\nEOL",
      "psql -U myuser < db_roles.sql",
    ]
  }

Respuesta4

Utilice el aprovisionador de archivos Terraform para implementar SQL y luego utilice el aprovisionador de ejecución remota para cargarlo en SQL Server.

información relacionada