클러스터 인증서로 액세스 제어 (RBAC 또는 ABAC) (Deprecated)
- 배포용 제한된 서비스 계정은 GitLab 11.5에서 소개되었습니다.
- GitLab 14.5에서 Deprecated되었습니다.
GitLab에서 클러스터를 만들 때 다음 중 하나를 만들지 여부를 묻습니다:
- GitLab의 기본 및 권장 옵션인 Role-based access control (RBAC) 클러스터.
- Attribute-based access control (ABAC) 클러스터.
GitLab이 클러스터를 생성하면 새로 만든 클러스터를 관리하기 위해 default
네임스페이스에 cluster-admin
권한이 있는 gitlab
서비스 계정이 생성됩니다.
Helm은 또한 각 설치된 애플리케이션에 대해 추가 서비스 계정 및 기타 리소스를 만듭니다. 각 애플리케이션의 Helm 차트 문서를 참조하십시오.
기존의 Kubernetes 클러스터를 추가하는 경우, 해당 계정의 토큰이 클러스터에 대한 관리자 권한을 갖도록 해야 합니다.
GitLab에서 만든 리소스는 클러스터의 유형에 따라 다릅니다.
중요 사항
액세스 제어에 관련하여 다음을 확인하세요:
- 환경별 리소스는 클러스터가 GitLab에서 관리될 때에만 만들어집니다.
- 클러스터가 GitLab 12.2 이전에 생성되었으면 모든 프로젝트 환경을 위한 단일 네임스페이스를 사용합니다.
RBAC 클러스터 리소스
GitLab은 RBAC 클러스터에 대한 다음 리소스를 만듭니다.
이름 | 유형 | 상세 | 생성 시 |
---|---|---|---|
gitlab
| ServiceAccount
|
default 네임스페이스
| 새 클러스터를 만들 때 |
gitlab-admin
| ClusterRoleBinding
|
cluster-admin 역할
| 새 클러스터를 만들 때 |
gitlab-token
| Secret
|
gitlab ServiceAccount을 위한 토큰
| 새 클러스터를 만들 때 |
환경 네임스페이스 | Namespace
| 모든 환경별 리소스를 포함 | 클러스터에 배포할 때 |
환경 네임스페이스 | ServiceAccount
| 환경의 네임스페이스 사용 | 클러스터에 배포할 때 |
환경 네임스페이스 | Secret
| 환경 ServiceAccount을 위한 토큰 | 클러스터에 배포할 때 |
환경 네임스페이스 | RoleBinding
|
admin 역할
| 클러스터에 배포할 때 |
환경 네임스페이스 RoleBinding
은 GitLab 13.6에서 admin
역할로 업데이트되었습니다. 이전에는 edit
역할이 사용되었습니다.
ABAC 클러스터 리소스
GitLab은 ABAC 클러스터에 대한 다음 리소스를 만듭니다.
이름 | 유형 | 상세 | 생성 시 |
---|---|---|---|
gitlab
| ServiceAccount
|
default 네임스페이스
| 새 클러스터를 만들 때 |
gitlab-token
| Secret
|
gitlab ServiceAccount을 위한 토큰
| 새 클러스터를 만들 때 |
환경 네임스페이스 | Namespace
| 모든 환경별 리소스를 포함 | 클러스터에 배포할 때 |
환경 네임스페이스 | ServiceAccount
| 환경의 네임스페이스 사용 | 클러스터에 배포할 때 |
환경 네임스페이스 | Secret
| 환경 ServiceAccount을 위한 토큰 | 클러스터에 배포할 때 |
Runner의 보안
런너는 기본적으로 privileged mode가 활성화되어 있어 특별한 명령어를 실행하고 Docker를 실행할 수 있습니다. 이 기능은 Auto DevOps 작업 중 일부를 실행하는 데 필요합니다. 이로써 컨테이너가 특권 모드로 실행되므로 docker run
작업이 임의의 이미지에서 실행될 때 루트 액세스를 사실상 갖게 되는 중요한 세부 정보를 알아야 합니다.
프리빌리지드 플래그는 실행 중인 컨테이너에 모든 기능을 부여하므로 사실상 호스트가 할 수 있는 모든 작업을 수행할 수 있습니다. 임의의 이미지에서 docker run
작업을 수행할 때 내재된 보안 리스크에 유의하십시오.
런너를 특권 모드로 사용하고 싶지 않은 경우, 다음 중 하나를 사용하십시오:
- GitLab.com의 인스턴스 러너를 사용하십시오. 이러한 보안 문제가 없습니다.
-
docker+machine
을 사용하는 자체 러너를 설정하십시오.