그룹과 RBAC용 Terraform 패턴
그룹과 RBAC용 Terraform 패턴 (Terraform patterns for groups and RBAC)
Boundary의 RBAC(역할 기반 접근 제어)를 사용하면 역할의 허용 작업을 한 번만 정의하고, 개별적으로 권한을 부여하는 대신 사용자나 그룹을 그 역할에 할당할 수 있어요. 이 페이지는 Boundary 사용자를 그룹화하고 그룹에 RBAC 역할을 할당하는 Terraform 패턴을 보여줍니다.
이 페이지는 사용자 그룹화와 RBAC 역할 할당을 다룹니다. 사용자 자체를 만드는 방법은 사용자와 인증 방법 페이지를 참고하세요.
보안 모범 사례는 인가 결정을 내릴 때 RBAC를 사용하도록 권장합니다. RBAC는 사용자가 수행할 수 있는 작업을 정의하는 역할을 만들고, 그 역할에 사용자를 한 명 이상 할당하는 방법론이에요. Boundary에서는 사용자를 역할에 직접 할당할 수도 있지만, 동등한 접근을 가진 사용자를 그룹에 넣는 것이 더 나은 패턴입니다. 그런 다음 그룹을 Boundary 환경에 최소 권한을 부여하는 역할에 할당할 수 있어요.
본문
사전 요구 사항
이 문서는 독자가 다음을 갖추고 있다고 가정합니다:
- Terraform 기초에 대한 이해
- 기존 Boundary 설치
- Terraform Boundary 프로바이더 구성
- 만들려는 그룹에 할당할 Boundary 사용자와 인증 방법 생성
그룹 구성
이 예시는 Accounting 그룹에 사용자를 추가합니다.
# Add Jeff and Susmitha to the Accounting group
resource "boundary_group" "Accounting" {
name = "Accounting"
description = "The Accounting Department"
member_ids = [boundary_user.susmitha,id, boundary_user.jeff.id]
scope_id = boundary_scope.project.id
}
그룹을 수동으로 채울 필요는 없고, 대신 아이덴티티 프로바이더가 제공하는 기존 그룹을 활용할 수 있어요.
| 그룹 유형 | 멤버십 | 권장되는 경우 |
|---|---|---|
| Static 그룹 | 수동 할당 | 작고 안정적인 멤버십 |
| Managed 그룹 | 아이덴티티 프로바이더에서 자동 채움 | 멤버십이 이미 아이덴티티 프로바이더에 존재 (권장) |
Managed 그룹 구성
이 예시는 Engineering이라는 LDAP(경량 디렉터리 접근 프로토콜) 그룹을 기반으로 자동으로 채워지는 managed 그룹을 만듭니다.
resource "boundary_managed_group_ldap" "Engineering" {
name = "Engineering"
description = "Engineering Managed LDAP Group"
auth_method_id = boundary_auth_method_ldap.forumsys_ldap.id
group_names = ["Engineering"]
}
HashiCorp는 가능하면 managed 그룹을 사용할 것을 권장합니다. 그룹 멤버십 관리를 추상화하고 Boundary 관리를 단순화하기 때문이에요.
역할 구성
그룹을 만든 다음에는 그 그룹에 역할을 하나 이상 할당해서 그룹 멤버들이 Boundary에서 유용한 작업을 할 수 있게 해야 해요.
이 패턴은 readonly라는 역할을 만드는데, 이 역할은 모든 Boundary 리소스에 읽기 전용으로 접근할 수 있게 해주는 grant를 포함합니다. 이 예시는 또한 Accounting static 그룹과 Engineering managed 그룹을 그 역할에 연결합니다.
resource "boundary_role" "readonly" {
name = "readonly"
description = "A readonly role"
# Assign Accounting and Engineering to this role
principal_ids = [boundary_group.accounting.id, boundary_managed_group_ldap.Engineering.id]
# This is the grant string provides read-only access to all objects in the current scope.
grant_strings = ["ids=*;type=*;actions=read"]
scope_id = boundary_scope.project.id
}
관련 역할, 그룹, grant 문서
이 주제에서 언급한 Boundary 리소스에 대한 자세한 내용은 도메인 모델 문서를 참고하세요:
Terraform으로 다음 리소스를 관리하는 방법에 대한 자세한 내용은 Boundary 프로바이더 문서를 참고하세요:
- 계정 — Password, LDAP, OIDC 계정
- 사용자
- 그룹
- LDAP managed 그룹
- 역할
더 알아보기 (Learn more)
호스트와 호스트 세트를 만들어 사용자가 연결할 타깃을 구성하고 싶을 거예요. 타깃에는 주소나 호스트, 그리고 그 호스트에 연결할 자격 증명이 필요합니다.