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