ApplicationSet 보안
ApplicationSet 보안 (Security)
ApplicationSet은 강력한 도구라서, 사용하기 전에 보안 영향(security implications)을 이해하는 게 중요해요. ApplicationSet은 임의의 Project 아래에 Application을 만들거나 삭제할 수 있고, 민감한 정보를 외부로 전달할 수도 있기 때문이에요. 그래서 ApplicationSet 생성·수정·삭제 권한은 관리자(admin)에게만 부여해야 해요.
출처: 문서
본문
ApplicationSet은 강력한 도구이며, 사용하기 전에 그 보안 영향(security implications)을 이해하는 것이 매우 중요해요.
관리자만 ApplicationSet을 생성/수정/삭제할 수 있어요
ApplicationSet은 임의의 Project 아래에 Application을 만들 수 있어요. Argo CD 설정에는 높은 권한을 가진 Project(default 등)가 흔히 있는데, 이는 Argo CD 자체의 리소스(예: RBAC ConfigMap)까지 관리할 수 있는 권한을 포함하는 경우가 많아요.
ApplicationSet은 또한 임의의 개수의 Application을 빠르게 만들고, 그만큼 빠르게 삭제할 수도 있어요.
마지막으로 ApplicationSet은 특권(privileged) 정보를 드러낼 수 있어요. 예를 들어 git generator는 Argo CD 네임스페이스의 Secrets을 읽어 임의의 URL(예: api 필드에 제공된 URL)에 auth 헤더로 보낼 수 있어요. (이 기능은 GitHub 같은 SCM 제공자에 요청을 인가하기 위한 것이지만, 악의적인 사용자가 남용할 수도 있어요.)
이런 이유 때문에 관리자만 (Kubernetes RBAC나 다른 메커니즘을 통해) ApplicationSet을 생성·수정·삭제할 권한을 부여받아야 해요.
관리자는 ApplicationSet의 진실 원천(source of truth)에 적절한 통제를 적용해야 해요
비관리자가 ApplicationSet 리소스를 생성하지 못한다 해도, ApplicationSet의 행동에는 영향을 줄 수 있어요.
예를 들어 ApplicationSet이 git generator를 사용한다면, 소스 git 저장소에 push 권한이 있는 악의적인 사용자가 지나치게 많은 수의 Application을 생성해 ApplicationSet·Application 컨트롤러에 부담을 줄 수 있어요. 또한 SCM 제공자의 rate limiting을 유발해 ApplicationSet 서비스를 저하시킬 수도 있어요.
템플릿화된 project 필드 (Templated project field)
project 필드가 템플릿화된 ApplicationSet은 특별히 주의해야 해요. generator의 진실 원천에 쓰기(write) 권한이 있는 악의적인 사용자(예: git generator의 git 저장소에 push 권한이 있는 사람)는 제약이 부족한 Project 아래에 Application을 만들 수 있어요. 제한이 없는 Project(예: default Project) 아래에 Application을 만들 수 있는 악의적인 사용자는, 예를 들어 Argo CD의 RBAC ConfigMap을 수정하는 방식으로 Argo CD 자체를 장악할 수 있어요.
ApplicationSet 템플릿에서 project 필드가 하드코딩되지 않았다면, 관리자는 ApplicationSet의 generator들에 대한 모든 진실 원천을 반드시 통제해야 해요.
더 알아보기 (Learn more)
- git generator — 진실 원천에서 비롯될 수 있는 위험을 이해하려면 생성기 문서를 함께 보세요.
- Project — Argo CD Project와 RBAC 권한 범위 문서.