User 생성 및 Group 맵핑 자동화
# main.tf 에 아래 내용 추가
resource "okta_user" "user_admin" {
first_name = "K8s"
last_name = "Admin"
login = "k8s.admin@example.com"
email = "k8s.admin@example.com"
}
resource "okta_user" "user_readonly" {
first_name = "K8s"
last_name = "Readonly"
login = "k8s.readonly@example.com"
email = "k8s.readonly@example.com"
}
resource "okta_group_memberships" "admin_membership" {
group_id = okta_group.k8s_admins.id
users = [okta_user.user_admin.id]
}
resource "okta_group_memberships" "readonly_membership" {
group_id = okta_group.k8s_readonly.id
users = [okta_user.user_readonly.id]
}
# OpenToFu 실행
[root@k8s-master terraform-access-control]# tofu plan
okta_group.k8s_admins: Refreshing state... [id=00gypu0d5yYlmpq6d697]
okta_group.k8s_readonly: Refreshing state... [id=00gypu3w4aLdzWj86697]
OpenTofu used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
OpenTofu will perform the following actions:
# okta_group_memberships.admin_membership will be created
+ resource "okta_group_memberships" "admin_membership" {
+ group_id = "00gypu0d5yYlmpq6d697"
+ id = (known after apply)
+ track_all_users = false
+ users = (known after apply)
}
# okta_group_memberships.readonly_membership will be created
+ resource "okta_group_memberships" "readonly_membership" {
+ group_id = "00gypu3w4aLdzWj86697"
+ id = (known after apply)
+ track_all_users = false
+ users = (known after apply)
}
# okta_user.user_admin will be created
+ resource "okta_user" "user_admin" {
+ custom_profile_attributes = (known after apply)
+ email = "k8s.admin@example.com"
+ expire_password_on_create = false
+ first_name = "K8s"
+ id = (known after apply)
+ last_name = "Admin"
+ login = "k8s.admin@example.com"
+ raw_status = (known after apply)
+ skip_roles = false
+ status = "ACTIVE"
}
# okta_user.user_readonly will be created
+ resource "okta_user" "user_readonly" {
+ custom_profile_attributes = (known after apply)
+ email = "k8s.readonly@example.com"
+ expire_password_on_create = false
+ first_name = "K8s"
+ id = (known after apply)
+ last_name = "Readonly"
+ login = "k8s.readonly@example.com"
+ raw_status = (known after apply)
+ skip_roles = false
+ status = "ACTIVE"
}
Plan: 4 to add, 0 to change, 0 to destroy.
[root@k8s-master terraform-access-control]# tofu apply
okta_group.k8s_admins: Refreshing state... [id=00gypu0d5yYlmpq6d697]
okta_group.k8s_readonly: Refreshing state... [id=00gypu3w4aLdzWj86697]
OpenTofu used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
OpenTofu will perform the following actions:
# okta_group_memberships.admin_membership will be created
+ resource "okta_group_memberships" "admin_membership" {
+ group_id = "00gypu0d5yYlmpq6d697"
+ id = (known after apply)
+ track_all_users = false
+ users = (known after apply)
}
# okta_group_memberships.readonly_membership will be created
+ resource "okta_group_memberships" "readonly_membership" {
+ group_id = "00gypu3w4aLdzWj86697"
+ id = (known after apply)
+ track_all_users = false
+ users = (known after apply)
}
# okta_user.user_admin will be created
+ resource "okta_user" "user_admin" {
+ custom_profile_attributes = (known after apply)
+ email = "k8s.admin@example.com"
+ expire_password_on_create = false
+ first_name = "K8s"
+ id = (known after apply)
+ last_name = "Admin"
+ login = "k8s.admin@example.com"
+ raw_status = (known after apply)
+ skip_roles = false
+ status = "ACTIVE"
}
# okta_user.user_readonly will be created
+ resource "okta_user" "user_readonly" {
+ custom_profile_attributes = (known after apply)
+ email = "k8s.readonly@example.com"
+ expire_password_on_create = false
+ first_name = "K8s"
+ id = (known after apply)
+ last_name = "Readonly"
+ login = "k8s.readonly@example.com"
+ raw_status = (known after apply)
+ skip_roles = false
+ status = "ACTIVE"
}
Plan: 4 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
OpenTofu will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
okta_user.user_readonly: Creating...
okta_user.user_admin: Creating...
okta_user.user_readonly: Creation complete after 1s [id=00uyqkkr0zYwrqaiA697]
okta_user.user_admin: Creation complete after 1s [id=00uyqkipnrb2GMobo697]
okta_group_memberships.readonly_membership: Creating...
okta_group_memberships.admin_membership: Creating...
okta_group_memberships.admin_membership: Creation complete after 2s [id=00gypu0d5yYlmpq6d697]
okta_group_memberships.readonly_membership: Creation complete after 4s [id=00gypu3w4aLdzWj86697]
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
# Console 확인
![]() |
![]() |
# README.md
## User & Access Control Automation
- OpenTofu를 사용해 Okta 사용자 계정 자동 생성
- 역할 기반 그룹(k8s-admins / k8s-readonly) 설계
- 사용자 → 그룹 매핑 자동화
- 접근제어 정책을 그룹 중심으로 관리'Okta+QueryPie+k8s' 카테고리의 다른 글
| QueryPie ACP Community Edition 구축 (0) | 2026.01.05 |
|---|---|
| QueryPie 구축(K8s) (0) | 2025.12.31 |
| Okta OIDC Application 생성 (0) | 2025.12.30 |
| Okta IAM 자동화 (1) | 2025.12.29 |
| opentofu 설치 (0) | 2025.12.29 |

