빅데이터 모니터링 에이전트를 위한 Linux User/Group 권한 부여 (usermod)
과거 사내 빅데이터 모니터링 플랫폼를 수많은 고객사의 Hadoop 클러스터에 설치하면서 가장 흔하게 겪는 초반 이슈 중 하나는 바로 ‘권한(Permission) 모델 구성’이었습니다.
클러스터 각 노드에 설치된 플랫폼 수집 에이전트는 JMX 지표 외에도 데몬의 로컬 로그(.log) 파일들이나 설정 파일(.xml)을 직접 파싱해야 할 때가 많았습니다. 그러나 고객사의 엄격한 보안 지침상 에이전트를 root 권한으로 실행할 수는 없었고, 전용 계정인 flamingo 유저를 생성하여 수집을 진행해야 했습니다.
이때 HDFS나 YARN 서비스가 남기는 데이터를 읽기 위해 flamingo 계정을 Hadoop 관련 그룹에 소속시켜야 했는데, 기존에 부여된 그룹(예: wheel 또는 사내 관리 그룹) 권한을 날려버리는 실수(대형 장애로 이어질 수 있는)를 방지하는 것이 아주 중요했습니다.
안전한 그룹 추가 명령어 (usermod -aG)
사용자를 특정 그룹에 추가할 때, 기존 그룹 리스트를 그대로 유지하면서 새로운 그룹에만 추가해야 할 때는 반드시 -a (append) 옵션과 -G 옵션을 함께 사용해야 합니다.
만약 -a 없이 -G만 사용하면 사용자의 소속 그룹이 해당 그룹 단 하나로 완전히 초기화/덮어쓰기 되기 때문에 운영 서버에서는 매우 치명적입니다.
$ usermod -aG [추가할_그룹명] [사용자명]플랫폼 데이터 엔지니어링 환경 적용 사례
고객사의 CDH(Cloudera)나 HDP(Hortonworks) 클러스터 환경에서, 플랫폼 에이전트가 HDFS 데이터 및 설정 파일에 원활하게 접근하여 지표를 수집하기 위해 hdfs 또는 hadoop 그룹에 권한을 부여했던 실제 명령어 예시입니다.
# 1. 기본 로그 수집을 위해 flamingo 유저의 기본 그룹(Primary Group)을 변경할 때 (소문자 -g)
$ usermod -g hdfs flamingo
# 2. HDFS외에 YARN, Hive 등 다른 접근 권한도 필요할 때 기존 권한을 잃지 않고 보조 그룹(Secondary Group)으로 hadoop 추가
$ sudo usermod -aG hadoop flamingo
# 3. 추가된 그룹 최종 확인
$ id flamingo
# uid=1001(flamingo) gid=1002(hdfs) groups=1002(hdfs),1003(hadoop)이처럼 단순한 리눅스 명령어 하나도 대규모 분산 클러스터를 다루는 빅데이터 솔루션 구축 환경에서는 서버 접근 장애를 예방하기 위해 그 옵션의 의미를 정확히 파악하고 신중하게 사용해야 합니다.