Terraform을 사용하여 데이터베이스 사용자를 생성하고 역할을 할당하는 방법

Terraform을 사용하여 데이터베이스 사용자를 생성하고 역할을 할당하는 방법

Terraform을 사용하여 SQL Server와 데이터베이스를 만들었습니다. 이제 데이터베이스 사용자를 만들고 역할을 할당해야 합니다.

어떻게 할 수 있나요? 저에게 제안해주세요.

답변1

저는 이 작업을 수행할 Terraform 제공업체에서 작업을 시작했습니다.https://github.com/jayway/terraform-provider-mssql. 아직 초기 작업이지만 로컬 SQL Server 인스턴스에서 해당 로그인에 대한 로그인 및 사용자를 프로비전할 수 있었습니다(이미 실행 중이었기 때문에 AzureRM 공급자와 함께 전혀 테스트하지 않았습니다). . 테스트 및 기여는 매우 환영합니다(그러나 아직 프로덕션 시나리오에는 사용하지 마십시오)!

답변2

사용자 및 역할 생성은 Azure 플랫폼이 아닌 SQL Server의 기능입니다. 따라서 Terraforms ARM 공급자는 이를 처리하지 않으며 내가 볼 수 있는 한 Terraform에는 이 작업에 대한 MSSQL 공급자가 없습니다(MYSQL 및 Postgres가 있음). 이 작업은 SQL 스크립트를 사용하여 수행해야 합니다.

답변3

postgres/psql을 사용하여 이 작업을 수행한 방법은 다음과 같습니다.

먼저, 비밀번호에 사용자 이름을 추가하여 md5 비밀번호 해시를 생성합니다.

$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8

Postgres가 허용하는 암호화된 비밀번호 형식을 얻으려면 결과 해시 앞에 문자열 'md5'를 추가하십시오. md5fd9c9714184c4ae189ca83f1c21aeeb8

그런 다음 실행하려는 데이터베이스 명령이 포함된 독립형 템플릿 파일을 추가합니다.

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
}

마지막으로 서버 생성의 일부로 원격 실행 프로비저너를 추가합니다.

  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",
    ]
  }

답변4

Terraform 파일 프로비저너를 사용하여 SQL을 배포한 다음 원격 실행 프로비저너를 사용하여 SQL Server에 로드합니다.

관련 정보