Secret 읽기 권한이 있는 RBAC Role

Secret 조회 권한은 필요한 주체와 네임스페이스로 제한하세요.

설명

Role이나 ClusterRole에 secrets 리소스의 get, list, watch 권한이 있고 해당 역할이 주체에 바인딩되면, 그 주체는 허용 범위의 Secret 데이터를 읽을 수 있습니다. 목록 조회와 변경 감시도 Secret 값을 반환할 수 있습니다. Secret에는 비밀번호, 토큰, 인증서, 키가 들어가는 경우가 많아 노출 시 영향이 큽니다.

일반 운영자나 애플리케이션에는 꼭 필요한 경우에만 좁은 범위로 부여해야 합니다.

잠재적 영향

  • 비밀번호, 토큰, 키 같은 민감한 정보가 노출될 수 있습니다.
  • 탈취된 자격 증명을 이용해 다른 시스템으로 침해가 확산될 수 있습니다.

해결 방법

  • secrets에 대한 불필요한 get, list, watch 및 와일드카드 권한을 제거하세요.
  • 필요한 네임스페이스와 주체로 범위를 좁히고 실제 RoleBinding·ClusterRoleBinding을 함께 점검하세요.

예시

역할의 규칙만 비교합니다. 실제 접근은 별도 바인딩에 따라 부여되며 변경 후의 Pod 조회 권한도 필요한 경우에만 사용하세요.

변경 전

hcl
resource "kubernetes_role" "role" {
  metadata {
    name = "terraform-example"
  }

  rule {
    api_groups = [""]
    resources  = ["secrets"]
    verbs      = ["get", "list", "watch"]
  }
}

변경 후

hcl
resource "kubernetes_role" "role" {
  metadata {
    name = "terraform-example"
  }

  rule {
    api_groups = [""]
    resources  = ["pods"]
    verbs      = ["get", "list", "watch"]
  }
}

설명:

  • 변경 전: Secret 읽기 권한을 정의합니다.
  • 변경 후: Secret 권한을 제거하고 Pod 조회 권한만 정의합니다.

참조