본문 바로가기
WIKI 기술 지식 베이스

Defining users and roles

원문 보기 위키 갱신

출처: 문서

본문

사용자와 역할 정의하기

OpenSearch에서 사용자를 정의하는 것은 OpenSearch 데이터에 누가 접근할 수 있는지 제어하기 위해서예요. 내부 사용자 데이터베이스를 사용해 사용자를 저장할 수도 있고, LDAP 또는 Active Directory 같은 외부 인증 시스템에 저장할 수도 있어요.

역할은 권한이나 액션 그룹의 범위를 결정하기 위해 정의해요. 특정 권한을 가진 역할을 만들 수 있는데, 예를 들어 클러스터 전체 권한, 인덱스별 권한, 문서 및 필드 수준 보안, 테넌트를 어떤 식으로든 조합해 담고 있는 역할도 만들 수 있어요.

사용자를 생성할 때 또는 사용자와 역할을 모두 정의한 후에 사용자를 역할에 매핑할 수 있어요. 이 매핑은 사용자에게 할당된 역할을 기준으로 각 사용자의 권한과 접근 수준을 결정해요.


목차 {: .text-delta } - TOC {:toc}

사용자 정의하기

OpenSearch Dashboards, internal_users.yml, 또는 REST API를 사용해 사용자를 정의할 수 있어요. 사용자를 생성할 때는 internal_users.yml이나 REST API를 사용해 사용자를 역할에 매핑할 수도 있고요. OpenSearch Dashboards로 사용자를 정의한다면 사용자를 역할에 매핑 튜토리얼의 단계를 따라 하세요.

새로운 예약 또는 숨김 사용자를 정의하는 경우가 아니라면, 새 사용자, 역할, 역할 매핑을 만들 때는 OpenSearch Dashboards나 REST API를 사용하는 것이 좋아요. .yml 파일은 초기 설정용이며 지속적인 사용을 위한 것이 아니에요. {: .warning }

OpenSearch Dashboards

  1. Security, Internal Users, Create internal user를 차례로 선택하세요.

  2. 사용자 이름과 비밀번호를 입력하세요. Security 플러그인이 비밀번호를 자동으로 해시해서 .opendistro_security 인덱스에 저장해요.

  3. 필요하다면 사용자 속성을 지정하세요.

    속성은 인덱스 권한이나 문서 수준 보안에서 변수 치환에 사용할 수 있는 선택적인 사용자 속성이에요.

  4. Submit을 선택하세요.

internal_users.yml

YAML 파일을 참고하세요.

REST API

사용자 생성을 참고하세요.

역할 정의하기

사용자 정의와 마찬가지로 OpenSearch Dashboards, roles.yml, 또는 REST API를 사용해 역할을 정의할 수 있어요. OpenSearch는 사전 정의된 역할과 특별한 읽기 전용 역할을 제공해요.

새로운 예약 또는 숨김 사용자를 정의하는 경우가 아니라면, 새 사용자, 역할, 역할 매핑을 만들 때는 OpenSearch Dashboards나 REST API를 사용하는 것이 좋아요. .yml 파일은 초기 설정용이며 지속적인 사용을 위한 것이 아니에요. {: .warning }

OpenSearch Dashboards

  1. Security, Roles, Create role을 차례로 선택하세요.

  2. 역할 이름을 입력하세요.

  3. 원하는 대로 권한을 추가하세요.

    예를 들어 어떤 역할에 클러스터 권한은 주지 않고, 두 개의 인덱스에는 read 권한을, 세 번째 인덱스에는 unlimited 권한을, analysts 테넌트에는 읽기 권한을 줄 수 있어요.

  4. Submit을 선택하세요.

roles.yml

YAML 파일을 참고하세요.

REST API

역할 생성을 참고하세요.

역할 편집하기

다음 방법 중 하나를 사용해 역할을 편집할 수 있어요.

OpenSearch Dashboards

  1. Security > Roles를 선택하세요. Create role 섹션에서 Explore existing roles를 선택하세요.
  2. 편집하려는 역할을 선택하세요.
  3. edit role을 선택하세요. 역할에 필요한 변경을 하면 돼요.
  4. 변경 사항을 저장하려면 Update를 선택하세요.

roles.yml

YAML 파일을 참고하세요.

REST API

역할 패치를 참고하세요.

사용자를 역할에 매핑하기

사용자를 생성할 때 역할을 지정하지 않았다면, 나중에 역할을 매핑할 수 있어요.

사용자와 역할과 마찬가지로, 역할 매핑도 OpenSearch Dashboards, roles_mapping.yml, 또는 REST API를 사용해 만들어요.

OpenSearch Dashboards

  1. Security, Roles, 그리고 역할을 차례로 선택하세요.
  2. Mapped users 탭을 선택하고 Manage mapping을 선택하세요.
  3. 사용자나 외부 아이덴티티(백엔드 역할이라고도 해요)를 지정하세요.
  4. Map을 선택하세요.

roles_mapping.yml

YAML 파일을 참고하세요.

REST API

역할 매핑 생성을 참고하세요.

읽기 전용 역할 정의하기

읽기 전용 역할은 사용자가 OpenSearch 클러스터에서 데이터를 읽을 수는 있지만 데이터를 수정하거나 삭제할 수는 없게 해줘요. 읽기 전용 역할은 데이터나 클러스터 자체에 대한 수정은 허용하지 않으면서, 보고, 분석, 시각화 같은 목적으로 데이터에 접근할 수 있게 하고 싶을 때 유용해요. 이렇게 하면 데이터 무결성이 유지되고, 실수로 인한 변경이나 허가되지 않은 변경을 예방할 수 있어요.

OpenSearch의 다른 역할과 마찬가지로, 읽기 전용 역할도 다음 방법으로 설정할 수 있어요:

  • OpenSearch Dashboards 사용
  • yml 설정 파일 수정
  • Cluster Settings API 사용

역할과 역할 매핑에 익숙해지는 가장 간단한 방법은 OpenSearch Dashboards를 사용하는 거예요. 이 인터페이스는 역할을 만들고 사용자에게 역할을 할당하는 과정을 간소화해 주고, 탐색하기 쉬운 워크플로를 제공해요. {: .tip}

기본 읽기 전용 역할 정의하기

사용자가 OpenSearch Dashboards에 접근하고, 기존 대시보드와 시각화를 보고, 여러 인덱스를 쿼리할 수 있게 해주는 기본적인 읽기 전용 역할을 만들려면 다음 권한을 사용하세요. 이 권한들은 클러스터의 모든 테넌트와 인덱스에 대한 접근 권한을 사용자에게 줘요.

클러스터 권한

시각화나 대시보드 같은 클러스터 전체 리소스에 읽기 전용으로 접근해야 하는 사용자에게는 해당 사용자의 역할에 cluster_composite_ops_ro 권한을 추가하세요.

인덱스 권한

시각화를 보려는 사용자에게는 해당 시각화를 만들 때 사용한 인덱스에 대한 접근 권한도 필요해요. 사용자에게 모든 인덱스에 대한 읽기 전용 접근을 주려면 Index 드롭다운에서 all (*)을 지정하고, Index Permissions에서 Read를 지정하세요.

테넌트 권한

테넌트를 사용해 팀이나 프로젝트 간에 작업을 나눈다면, 다음 이미지처럼 all (*) 옵션을 선택한 다음 Read only 옵션을 선택하세요.

역할 생성

모든 권한 유형을 설정하고 역할을 정의하고 나면, 역할의 Mapped users 탭에서 해당 역할을 사용자에게 바로 매핑할 수 있어요. Map users를 선택한 다음 역할에 매핑할 사용자를 고르면 돼요. 다음 이미지를 참고하세요.

사용자 매핑

OpenSearch Dashboards readonly_mode

OpenSearch Dashboards의 readonly_mode 기능은 사용자가 Dashboards 인터페이스에만 접근할 수 있도록 하고, 다른 모든 UI 요소는 화면에서 제거하는 데 사용해요.

이 역할을 설정하려면 opensearch_dashboards.yml 파일에 다음 줄을 추가하세요:

opensearch_security.readonly_mode.roles: [new_role]

할당된 역할이 추가 권한을 부여하거나 사용자가 인덱스에 대한 쓰기 접근 권한이 있는 다른 역할에 매핑되어 있더라도, OpenSearch Dashboards는 이 접근을 제한해요. cURL이나 API를 사용한 OpenSearch 데이터 직접 접근은 여전히 허용되고요. 이 통신에는 OpenSearch Dashboards가 개입하지 않아요.

사용자가 readonly_mode 역할에 매핑되면 Dashboards를 제외한 UI의 다른 모든 요소가 제거돼요. 다음 이미지에서 왼쪽 화면은 readonly_mode 역할에 매핑된 사용자 관점의 화면이고, 오른쪽 화면은 일반적인 사용자 화면이에요.

읽기 전용 모드 비교

사용자를 readonly_mode 역할에만 매핑하면 관련 인덱스나 기존 대시보드를 볼 수 없어요. 인덱스와 대시보드에 대한 읽기 접근에는 별도의 권한이 필요해요. {: .note }

사용자가 opensearch.yml의 plugins.security.restapi.roles_enabled 아래 나열된 역할, 예를 들어 all_access나 security_rest_api_access에도 매핑되어 있다면 readonly_mode는 무시되고, 표준 UI 요소에 접근할 수 있게 돼요.

추가 권한

사용자에게 read_only 역할에 포함된 권한 외에 추가 권한, 예를 들어 alerting이나 anomaly detection 작업을 위한 권한이 필요하다면, alerting_read_access나 anomaly_read_access 같은 사전 정의된 역할을 할당할 수 있어요.

사전 정의된 역할

Security 플러그인에는 유용한 기본값으로 쓸 수 있는 사전 정의된 역할이 여러 개 포함되어 있어요.

내장 역할

다음 표는 항상 제공되는 내장 정적 역할을 정리한 거예요.

역할 설명
all_access 전체 클러스터에 접근할 수 있는 슈퍼유저 역할이에요. 모든 클러스터 작업 수행, 모든 인덱스에 쓰기, 모든 테넌트 접근 권한을 부여해요.
kibana_server OpenSearch Dashboards 서버 사용자가 내부 저장 객체와 시스템 인덱스를 읽고 쓸 때 사용하는 역할이에요. 사람 사용자에게는 할당하지 마세요.
kibana_user 사용자가 로그인해서 OpenSearch Dashboards를 사용할 수 있게 해줘요. 클러스터 읽기 및 검색, 인덱스 모니터링, OpenSearch Dashboards 인덱스에 쓰기 권한을 부여해요. 데이터에 대한 읽기 권한과 조합해서 사용하세요.
logstash Logstash가 OpenSearch와 상호작용하는 데 필요한 권한을 부여해요.
manage_snapshots 스냅샷 리포지토리를 관리하고 스냅샷 및 스냅샷 복원 작업을 실행할 수 있는 권한을 부여해요.
own_index 각 사용자에게 자신의 인덱스(사용자 이름을 딴 인덱스)에 대한 전체 접근 권한을 부여해요. 개인 작업 공간이나 멀티 테넌트 환경에서 유용해요.
readall 클러스터의 모든 인덱스에 대해 _search, _msearch API 호출 같은 읽기 및 검색 권한을 부여해요.
readall_and_monitor readall과 동일한 권한에 클러스터 모니터링 권한(예: 클러스터 상태 및 통계 보기)이 추가된 권한을 부여해요.

이 역할들의 개별 권한을 자세히 살펴보려면 static_roles.yml을 참고하세요.

데모 역할

다음 표는 Security 플러그인을 초기화할 때 roles.yml 파일을 제공하지 않으면 기본적으로 생성되는 데모 역할을 정리한 거예요.

역할 설명
alerting_ack_alerts 알림을 보고 확인할 수 있는 권한을 부여하지만, 대상(destination)이나 모니터를 수정할 수는 없어요.
alerting_full_access 모든 alerting 작업을 수행할 수 있는 전체 권한을 부여해요.
alerting_read_access 알림, 대상, 모니터를 볼 수 있는 권한을 부여하지만, 알림을 확인하거나 대상이나 모니터를 수정할 수는 없어요.
anomaly_full_access 모든 이상 탐지 작업을 수행할 수 있는 전체 권한을 부여해요.
anomaly_read_access 디텍터를 볼 수 있는 권한을 부여하지만, 디텍터를 생성, 수정, 삭제할 수는 없어요.
asynchronous_search_full_access 모든 비동기 검색 작업을 수행할 수 있는 전체 권한을 부여해요.
asynchronous_search_read_access 비동기 검색을 볼 수 있는 권한을 부여하지만, 제출, 수정, 삭제할 수는 없어요.
cross_cluster_replication_follower_full_access 팔로워 클러스터에서 크로스 클러스터 복제 작업을 수행할 수 있는 전체 접근 권한을 부여해요.
cross_cluster_replication_leader_full_access 리더 클러스터에서 크로스 클러스터 복제 작업을 수행할 수 있는 전체 접근 권한을 부여해요.
index_management_full_access ISM, transform, rollup을 포함한 모든 인덱스 관리 작업을 수행할 수 있는 전체 권한을 부여해요.
ml_full_access 작업 시작과 모델 관리를 포함한 모든 머신러닝(ML) 기능을 사용할 수 있는 전체 권한을 부여해요.
ml_read_access ML 설정, 통계, 모델, 작업을 수정 없이 볼 수 있는 권한을 부여해요.
notifications_full_access 모든 Notifications 작업을 수행할 수 있는 전체 권한을 부여해요.
notifications_read_access Notifications 설정/채널과 기능을 볼 수 있는 권한을 부여하지만, 수정할 수는 없어요.
point_in_time_full_access 모든 Point-in-Time 작업을 수행할 수 있는 전체 권한을 부여해요.
reports_instances_read_access 온디맨드 보고서를 생성하고 기존 보고서 인스턴스를 다운로드할 수 있는 권한을 부여하지만, 보고서 정의를 보거나 생성할 수는 없어요.
security_analytics_ack_alerts Security Analytics 알림을 보고 확인할 수 있는 권한을 부여해요.
security_analytics_full_access 모든 Security Analytics 기능을 사용할 수 있는 전체 권한을 부여해요.
security_analytics_read_access Security Analytics 디텍터, 알림, 결과(findings), 매핑, 규칙을 볼 수 있는 권한을 부여해요.
snapshot_management_full_access 모든 스냅샷 관리 작업(리포지토리와 스냅샷 포함)을 수행할 수 있는 전체 권한을 부여해요.
snapshot_management_read_access 스냅샷 관리 정책, 리포지토리, 스냅샷을 수정 없이 볼 수 있는 권한을 부여해요.

각 역할에 할당된 개별 권한 내역은 roles.yml을 참고하세요.

예제

다음 튜토리얼은 OpenSearch Dashboards에서 벌크 액세스 역할을 만드는 단계를 설명해요.

새로운 bulk_access 역할을 만들어 보세요:

  1. OpenSearch Dashboards를 열어요.
  2. Security, Roles를 차례로 선택해요.
  3. bulk_access라는 이름의 새 역할을 만들어요.
  4. Cluster permissions에는 cluster_composite_ops 액션 그룹을 추가해요.
  5. Index Permissions에는 인덱스 패턴을 추가해요. 예를 들어 my-index-*를 지정할 수 있어요.
  6. 인덱스 권한에는 write 액션 그룹을 추가해요.
  7. Create를 선택해요.

역할을 사용자에게 매핑해 보세요:

  1. Mapped users 탭을 선택하고 Manage mapping을 선택해요.
  2. Internal users에 벌크 액세스 사용자를 추가해요.
  3. Map을 선택해요.

관리자 및 슈퍼 관리자 역할

OpenSearch 사용자 역할은 클러스터 리소스에 대한 접근을 제어하는 데 필수적이에요. 사용자는 접근 권한과 책임에 따라 일반 사용자, 관리자 사용자, 슈퍼 관리자 사용자로 분류할 수 있어요.

사용자 정의에 대한 자세한 내용은 사용자 정의를 참고하세요. 역할 정의에 대한 자세한 내용은 역할 정의를 참고하세요.

일반 사용자

일반 사용자는 데이터 조회나 대시보드 사용처럼 OpenSearch 클러스터와 상호작용할 수 있는 기본적인 접근 권한을 가지지만, 관리자 권한은 없어요.

관리자 사용자

관리자 사용자는 클러스터 내에서 다양한 관리 작업을 수행할 수 있는 상위 권한을 가져요. 일반 사용자보다 폭넓은 접근 권한을 가지며, 다음과 같은 권한이 포함돼요:

  • 사용자와 역할 관리
  • 권한 구성
  • 백엔드 설정 조정

관리자 사용자는 opensearch.yml 파일에서 설정을 구성하거나, OpenSearch Dashboards를 사용하거나, REST API를 통해 이런 작업을 수행할 수 있어요. 사용자와 역할 구성에 대한 자세한 내용은 사전 정의된 역할을 참고하세요.

슈퍼 관리자 사용자

슈퍼 관리자 사용자는 OpenSearch 환경에서 가장 높은 수준의 관리 권한을 가져요. 이 역할은 보통 선별된 사용자에게만 부여되며, 신중하게 관리해야 해요.

슈퍼 관리자 사용자는 클러스터 내 모든 설정과 데이터에 제한 없이 접근할 수 있으며, 다음과 같은 권한이 포함돼요:

  • Security 플러그인 구성 수정
  • 보안 인덱스 .opendistro_security 접근 및 관리
  • 모든 보안 제한 사항 재정의

슈퍼 관리자 역할의 인증

슈퍼 관리자 사용자는 비밀번호가 아닌 인증서로 인증돼요. 필요한 인증서는 opensearch.yml 파일의 admin_dn 섹션에 정의되며, 다음 예시에서 볼 수 있듯이 동일한 루트 인증 기관(CA)으로 서명되어야 해요:

YAML
plugins.security.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de

슈퍼 관리자 인증서가 다른 CA로 서명된 경우에는, opensearch.yml의 plugins.security.ssl.http.pemtrustedcas_filepath에 정의된 파일에서 관리자 CA를 노드의 CA와 연결해야 해요.

자세한 내용은 슈퍼 관리자 인증서 구성을 참고하세요.

더 알아보기 (Learn more)