본문 바로가기
공부/IaC

[Terraform] AD User 만들기

by haejang 2024. 1. 31.
728x90
728x90

 

 

# 사용한 프로바이더

https://registry.terraform.io/providers/l-with/ldap/latest/docs

 

Terraform Registry

 

registry.terraform.io

 

terraform {
  required_providers {
    ldap = {
      source  = "l-with/ldap"
      version = ">= 0.4"
    }
  }
}

locals {
  ad_server_ip = "1.1.1.1"
  ad_domain    = "honglab.com"
  ad_admin_pw  = ""
}

provider "ldap" {
  host = local.ad_server_ip
  port = 389
  tls  = false

  bind_user     = "Admin@${local.ds_domain}"
  bind_password = local.ds_admin_pw
}

 

여기서 나는 AWS Directory Service - Microsoft AD 를 사용했다.

이 경우, ad_server_iptolist(aws_directory_service_directory.this.dns_ip_addresses)[0] 로 작성 가능하다.

 

# 유저 생성

resource "ldap_entry" "this" {
  dn        = "CN=user01,OU=Users,OU=honglab,DC=hoglab,DC=com"
  data_json = jsonencode({
    objectClass        = ["user"]
    givenName          = ["${first name}"]
    sn                 = ["${last name}"]
    displayName        = ["${display name}"]
    sAMAccountName     = ["user01"]                           # user logon name (pre-Windows 2000)
    userPrincipalName  = ["user01@${upper(local.ad_domain)}"] # user logon name
    userAccountControl = ["544"]                              # ACCOUNTDISABLE 비트가 해제된 값 (유저 활성화)
    mail               = ["user01@${local.ad_domain}"]
    name               = ["user01"]
    description        = ["Created By Terraform"]
  })

  lifecycle {
    ignore_changes = [data_json]
  }
}

 

user01이란 유저를 만들어 보았다.

data_json에는 다양한 값들이 들어가는데 시스템에서 업데이트되는 값들도 있어서 필수로 ignore_changes를 해줘야 한다.

-> 유저 속성 수정이 테라폼으로는 불가하다. 나의 경우는 유저가 생성만 되면 되어서 괜찮다.

 

userAccountControl의 경우, 기본값으로 546으로 설정된다.

https://learn.microsoft.com/ko-kr/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties

 

UserAccountControl 속성 플래그 - Windows Server

UserAccountControl 특성을 사용하여 사용자 계정 속성을 조작하는 방법에 대한 정보를 설명합니다.

learn.microsoft.com

 

546이면 512 + 32 + 2 이므로, 

- NORMAL_ACCOUNT (512)

- PASSWD_NOTREQD (32)

- ACCOUNTDISABLE (2)

가 활성된 값이다.

 

참고로 나는 AWS Workspace를 만들기 위해 AD User를 만들고 있었는데, ACCOUNTDISABLE이 된 상태에서는 password를 reset할 수 있는 메일이 날라오지 않아서 해당 값을 뺀 544를 사용하였다.

 

추가로, AWS Workspace 콘솔에서 AD User를 생성하는 경우 514로 생성되어 있었다.

 

 

728x90
728x90

댓글