본문으로 건너뛰기
버전: 3.19.0

SQL 스토리지 백엔드에 대한 권한 관리

이 문서에서는 SQL 스토리지 백엔드 사용 시 권한을 설정하고 관리하는 방법을 설명한다.

소개

권한을 처리하기 위해 헬름은 쿠버네티스의 RBAC 기능을 사용한다. SQL 스토리지 백엔드를 사용할 때는 쿠버네티스의 역할을 사용하여 사용자가 특정 리소스에 액세스할 수 있는지 여부를 결정할 수 없다. 이 문서는 이러한 권한을 생성하고 관리하는 방법을 보여준다.

초기화

헬름 CLI가 처음으로 데이터베이스에 연결되면, 클라이언트는 이전에 초기화되었는지 확인한다. 그렇지 않은 경우 필요한 설정을 자동으로 처리한다. 이 초기화에는 퍼블릭 스키마에 대한 관리자 권한이 필요하거나 최소한 다음을 수행할 수 있어야 한다.

  • 테이블 생성
  • 퍼블릭 스키마에 대한 권한 부여

데이터베이스에 대한 마이그레이션이 실행된 후, 다른 모든 역할은 클라이언트를 사용할 수 있다.

PostgreSQL에서 관리자가 아닌 사용자에게 권한 부여

권한을 관리하기 위해 SQL 백엔드 드라이버는 PostgreSQL의 RLS(행 수준 보안) 기능을 활용한다. RLS를 사용하면 모든 사용자가 같은 테이블에서 읽고 쓸 수 있지만, 명시적으로 허용된 행만 조작할 수 있다. 기본적으로 올바른 권한이 명시적으로 부여되지 않은 역할은 helm list를 실행할 때 항상 빈 목록을 반환하며, 클러스터의 리소스를 검색하거나 수정할 수 없다.

지정된 역할에 특정 네임스페이스에 대한 액세스 권한을 부여하는 방법을 알아보자:

CREATE POLICY <name> ON releases_v1 FOR ALL TO <role> USING (namespace = 'default');

이 명령어는 namespace = 'default' 조건을 충족하는 모든 리소스를 읽고 쓸 수 있는 권한을 role 역할에 부여한다. 이 정책을 만든 후 role 역할을 대신하여 데이터베이스에 연결된 사용자는 helm list를 실행할 때 default 네임스페이스에 있는 모든 릴리스를 볼 수 있으며, 수정 및 삭제할 수 있다.

권한은 RLS를 사용하여 세분화하여 관리할 수 있으며, 테이블의 다른 열에 대한 접근을 제한할 수도 있다:

  • key
  • type
  • body
  • name
  • namespace
  • version
  • status
  • owner
  • createdAt
  • modifiedAt