2024년 4월 22일부터 Terraform Cloud의 이름이 HCP Terraform으로 변경되었습니다.
하기 내용에서는 Terraform Cloud 이름 대신 HCP Terraform 이름으로 대체하여 설명을 진행하도록 하겠습니다.
이전에 Project & Workspace에 대해 설명드렸는데 오늘은 HCP Terraform의 Project 와 Workspace 별로 Team 권한(RBAC)을 설정하는 방법에 대해 설명드리도록 하겠습니다.
1. HCP Terraform 에서의 RBAC 관리의 중요성
HCP Terraform 에서 RBAC(역할 기반 접근 제어)를 사용하는 것은 보안과 효율성 측면에서 중요합니다.
보통 기업에서 다음과 같은 이유로 RBAC 관리를 필요로 하게 됩니다.
- 보안 강화 : 각 사용자에게 필요한 최소한의 권한만 부여함으로써 잠재적인 보안 위협을 줄일 수 있습니다.
- 책임 분리 : 특정 작업에 대한 책임을 명확히 하여 작업의 추적성과 투명성을 높입니다.
- 효율성 향상 : 권한 관리를 중앙에서 일관되게 수행함으로써 관리 효율성을 높이고, 실수를 줄일 수 있습니다.
- 규정 준수 : 보안 규제 준수 요구사항을 충족할 수 있습니다.
HCP Terraform에서는 Project와 Workspace 별로 Team 권한을 개별적으로 설정할 수 있기 때문에 Project와 Workspace 단위에서 세밀한 접근 제어가 가능합니다.
- Project 별 권한 설정 : Project 단위로 Team 권한을 설정하여 Project 내 모든 Workspace에 대한 접근 권한을 제어
- Workspace 별 권한 설정 : 개별 Workspace 단위로 Team 권한을 설정하여 특정 Workspace에 대한 접근 권한을 제어
2. RBAC 관리 Workflow 예시
HCP Terraform에서는 Notification 설정도 가능하며, Email, Slack 등 다양한 알림 설정을 지원하고 있습니다.
Notification 설정을 통해 한층 더 자동화된 RBAC Workflow를 구성할 수 있으며, 팀 간의 효율적인 협업을 진행할 수 있습니다.
2-1) Workflow 시나리오
- Developer Team의 유저는 특정 Workspace에서 Plan 작업만 수행할 수 있습니다.
- Plan 작업이 완료되면, Admin Team의 유저 Email로 알림이 발송되게 됩니다.
- Admin Team의 유저가 이메일로 알림을 받고 링크를 통해 확인합니다.
- Admin Team의 유저가 Workspace의 Plan 동작을 확인 검증 후에 문제가 없다고 판단되면 Apply를 진행합니다.
2-2) Workflow 의 단계별 설정 방법
1. Team 구성 및 역할 부여
- 먼저 HCP Terraform에 두 개의 Team을 구성합니다.
- Developer Team : 이 Team의 멤버는 특정 Workspace에서 Plan 작업만 수행할 수 있습니다.
- Admin Team : 이 Team의 멤버는 모든 권한을 가지고 있으며, Plan 결과를 확인하고 Apply 작업을 수행할 수 있습니다.
- HCP Terraform 화면에서 Settings로 이동합니다.
- Teams로 이동하여 Developer Team과 Admin Team을 생성합니다.
- Developer Team과 Admin Team에 멤버를 각각 추가합니다.
- 예시)
Developer Team에는 'rlarlqja1001' 이라는 멤버를 추가하고
Admin Team에는 'lwnsgh' 라는 멤버를 추가하였습니다.
- 예시)
2. Workspace 설정
- Project 및 Workspace는 이미 생성되어 있다고 가정하고 진행하도록 하겠습니다.
- HCP Terraform 화면에서 해당 Workspace의 Settings로 이동합니다.
- Team Access로 이동하여 add team and permisions를 눌러 해당 Workspace에 팀별간 권한을 설정합니다.
- Workspace에 특정 Team이 어떠한 권한을 부여할지를 선택합니다.
- Permission groups를 선택하면 HCP Terraform에 기본적으로 제공해주는 권한을 선택해주게 됩니다. 기업 또는 사용하고자 하는 유저가 임의로 권한에 대해 Custom이 필요하다면 Custom하여 사용도 가능합니다.
- Team : admin_team 선택
- Permission groups : Admin 선택
3. Notification 설정
- Plan 작업이 완료되면 Admin Team에게 이메일 알림을 보내도록 설정합니다.
- Settings -> Notifications로 이동한 후 Create a Notification을 클릭합니다.
- 알림은 Email을 선택하고, 이름을 입력합니다.(예시: gmail-notification)
- 알림 수신자로 Admin Team 의 멤버 이메일을 입력합니다.
- Workspace의 plan 동작에 대한 알림을 받을 것이기 때문에 다음과 같이 Event 설정을 진행합니다.
- Workspace Events : No events
- Run events : Only certain events - Planning
- 설정한 Notification 설정 확인합니다.
2-3) Workflow 의 단계별 동작 확인
- Developer Team 사용자가 Plan 작업을 실행합니다.
- Plan 작업이 완료되면 Admin Team에게 이메일 알림이 전송됩니다.
- Admin Team 사용자가 Plan 결과를 검토하고 Apply 작업을 수행합니다.
- Developer Team의 'rlarlqja1001' 멤버가 특정 Workspace의 Plan을 동작합니다.
- 'rlarlqja1001'라는 멤버는 해당 Workspace에 plan 권한밖에 없기에 Apply할 수 없는 모습을 확인할 수 있습니다.
- Admin Team의 'lwnsgh' 멤버가 Email을 확인합니다.
- Email에 적힌 링크를 들어가면 Plan 동작한 Workspace를 바로 확인 가능합니다.
- Admin Team 멤버인 'lwnsgh'로 HCP Terraform에 로그인하여 Workspace를 확인합니다.
- 'rlarlqja1001' 멤버가 UI를 통해 해당 Workspace를 Plan 동작한 것을 확인할 수 있습니다.
- Plan 내용을 확인 후 검증합니다.
- 확인 후 이상이 없다면 Confirm & apply를 클릭하여 apply를 실행합니다.
3. 정리
앞서 HCP Terraform에서 특정 Workspace 에 Team별로 권한을 설정하는 방법에 대해 설명드렸지만, Project 레벨에서 Team별로 권한 또한 설정하여 사용도 가능합니다.
HCP Terraform을 사용하면 OSS와는 다르게 별다른 연동 작업 없이 Team 단위 RBAC 설정과 Notification 등 설정이 가능하기에 이러한 기능들과 함께 자동화된 인프라 관련 Workflow를 구축할 수 있습니다.
HCP Terraform의 RBAC 기능과 Notification 설정을 활용하여 Team 별로 권한을 체계적으로 관리하는 방법에 대해 설명드렸습니다.
이를 통해 보다 안전하게 보안을 강화하고 운영 효율성을 극대화할 수 있습니다.
'Terraform Cloud(HCP Terraform)' 카테고리의 다른 글
HCP Terraform(Terraform Cloud)의 Policy(Sentinel)로 보안/거버넌스 정책 적용하기 (0) | 2024.05.26 |
---|---|
HCP Terraform(Terraform Cloud)의 No-code provisioning (0) | 2024.05.19 |
HCP Terraform(Terraform Cloud)의 Module 사용 (0) | 2024.05.19 |
HCP Terraform(Terraform Cloud)의 VCS연동(Github, GitLab, Bitbucket..) (2) | 2024.05.19 |
HCP Terraform(Terraform Cloud)의 Variable Sets (0) | 2024.05.15 |