Getting started with OpenSearch security

Cloud_ Ghost·2025년 9월 8일

opensearch

목록 보기
17/23

OpenSearch 보안 시작하기

https://docs.opensearch.org/latest/getting-started/security/

데모 구성은 OpenSearch 보안을 시작하는 가장 간단한 방법입니다. OpenSearch에는 install_demo_configuration.sh(Windows의 경우 install_demo_configuration.bat)를 포함하여 여러 유용한 스크립트가 번들로 제공됩니다.

이 스크립트는 plugins/opensearch-security/tools에 위치하며 다음 작업을 수행합니다:

  • 전송 계층과 REST 계층 모두에서 TLS 암호화를 위한 데모 인증서를 생성합니다
  • 데모 사용자, 역할, 역할 매핑을 구성합니다
  • 인증 및 권한 부여를 위해 내부 데이터베이스를 사용하도록 Security 플러그인을 구성합니다
  • 클러스터를 시작하는 데 필요한 기본 구성으로 opensearch.yml 파일을 업데이트합니다

데모 구성과 빠르게 시작하는 방법에 대한 자세한 정보는 "데모 구성 설정"에서 찾을 수 있습니다.

⚠️ 중요: 데모 인증서 및 기본 비밀번호와 같은 이 구성의 특정 측면은 운영 환경에서 절대 사용해서는 안 됩니다. 운영 환경으로 이동하기 전에 데모 구성의 이러한 부분을 사용자 정의 정보로 교체해야 합니다.

데모 구성 설정

install_demo_configuration.sh 스크립트를 실행하기 전에 강력한 비밀번호로 OPENSEARCH_INITIAL_ADMIN_PASSWORD라는 환경 변수를 생성해야 합니다. 이는 OpenSearch에서 인증하기 위한 admin 사용자의 비밀번호로 사용됩니다. 온라인 도구 Zxcvbn을 사용하여 비밀번호의 강도를 테스트하세요. 그 후 install_demo_configuration.sh를 실행하고 터미널 프롬프트를 따라 필요한 세부 정보를 입력할 수 있습니다.

스크립트가 실행된 후 OpenSearch를 시작하고 다음 명령을 실행하여 구성을 테스트할 수 있습니다:

curl -k -XGET -u admin:<password> https://<opensearch-ip>:9200

다음과 유사한 출력을 볼 수 있습니다:

{
  "name" : "smoketestnode",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "0a5DYAk0Rbi14wqT3TqMiQ",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.13.0",
    "build_type" : "tar",
    "build_hash" : "7ec678d1b7c87d6e779fdef94e33623e1f1e2647",
    "build_date" : "2024-03-26T00:04:51.025238748Z",
    "build_snapshot" : false,
    "lucene_version" : "9.10.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

OpenSearch Dashboards 설정

OpenSearch Dashboards를 빠르게 시작하려면 opensearch_dashboards.yml에 다음 구성을 추가할 수 있습니다:

opensearch.hosts: [https://localhost:9200]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanaserver
opensearch.requestHeadersWhitelist: [authorization, securitytenant]

opensearch_security.multitenancy.enabled: true
opensearch_security.multitenancy.tenants.preferred: [Private, Global]
opensearch_security.readonly_mode.roles: [kibana_read_only]
# https 없이 opensearch-dashboards를 실행하는 경우 이 설정을 사용하세요
opensearch_security.cookie.secure: false

OpenSearch와 OpenSearch Dashboards를 설치하는 데 사용된 방법에 따라 바이너리 또는 서비스를 시작할 수 있습니다.

바이너리를 사용할 때는 기본 경로 없이 URL을 설정하기 위해 yarn start 명령에 --no-base-path를 제공해야 합니다. 이를 설정하지 않으면 임의의 3글자 기본 경로가 추가됩니다.

OpenSearch Dashboards를 시작한 후 다음 두 로그 줄을 볼 수 있습니다:

[info][listening] Server running at http://localhost:5601
[info][server][OpenSearchDashboards][http] http server running at http://localhost:5601

이제 브라우저에서 http://localhost:5601을 사용하여 OpenSearch Dashboards에 접근할 수 있습니다. 사용자명 adminOPENSEARCH_INITIAL_ADMIN_PASSWORD 환경 변수에 구성된 비밀번호를 사용하세요.

사용자 추가

사용자, 역할 및 기타 보안 관련 구성을 추가하는 방법에는 세 가지가 있습니다:

  1. 적절한 구성 파일 업데이트 (사용자 추가/업데이트/제거를 위한 internal_users.yml)
  2. API 사용
  3. OpenSearch Dashboards UI 사용

보안 구성 파일은 config/opensearch-security 디렉터리에 위치합니다.

internal_users.yml 파일을 다음 설정으로 업데이트하여 OpenSearch Dashboards 사용자를 추가할 수 있습니다:

test-user:
  hash: "$2y$12$CkxFoTAJKsZaWv/m8VoZ6ePG3DBeBTAvoo4xA2P21VCS9w2RYumsG"
  backend_roles:
  - "test-backend-role"
  - "kibanauser"
  description: "test user user"

해시 문자열은 plugins/opensearch-security/tools/ 디렉터리에 위치한 hash.sh 스크립트를 사용하여 생성됩니다. 이 경우 문자열 secretpassword의 해시가 사용되었습니다.

OpenSearch Dashboards를 탐색하는 데 필요한 사용자 권한을 제공하는 내장 백엔드 역할 kibanauser의 사용에 주목하세요.

역할 생성

roles.yml에 포함된 역할은 다음 구조를 사용합니다:

<rolename>:
  cluster_permissions:
    - <cluster permission>
  index_permissions:
    - index_patterns:
      - <index pattern>
      allowed_actions:
        - <index permissions>

이 구조를 사용하여 다음 예제에서 구성된 역할과 같이 특정 인덱스에 대한 액세스를 제공하는 새 역할을 구성할 수 있습니다:

human_resources:
  index_permissions:
    - index_patterns:
      - "humanresources"
      allowed_actions:
        - "READ"

이 예제에서는 클러스터 권한이 나열되지 않았습니다. 이는 kibanauser 백엔드 역할을 사용하여 이미 매핑된 내장 역할 kibana_user에서 제공되기 때문입니다.

사용자를 역할에 매핑

사용자가 OpenSearch에 로그인할 때 올바른 권한을 얻기 위해 적절한 역할에 매핑되어야 합니다. 이 매핑은 다음 구조를 가진 roles_mapping.yml 파일을 사용하여 수행됩니다:

<role_name>:
  users:
    - <username>
    - ...
  backend_roles:
    - <rolename>

새로 생성된 사용자 test-user를 역할 human_resources에 매핑하기 위해 roles_mapping.yml 파일에서 다음 구성을 사용할 수 있습니다:

human_resources:
  backend_roles:
    - test-backend-role

추가 예제로, roles_mappings.yml 파일에는 kibana_user 역할에 매핑된 백엔드 역할 kibanauser가 포함되어 있습니다:

kibana_user:
  reserved: false
  backend_roles:
  - "kibanauser"
  description: "Maps kibanauser to kibana_user"

보안 인덱스에 구성 업로드

사용자, 역할 또는 기타 보안 구성을 구성하는 마지막 단계는 이를 OpenSearch 보안 인덱스에 업로드하는 것입니다. 파일만 업데이트하고 업로드하지 않으면 이미 실행 중인 OpenSearch 클러스터의 구성이 변경되지 않습니다.

구성을 업로드하려면 install_demo_configuration.sh 실행 중에 생성된 admin 인증서와 함께 다음 명령을 사용할 수 있습니다:

./plugins/opensearch-security/tools/securityadmin.sh -cd "config/opensearch-security" -icl -key "../kirk-key.pem" -cert "../kirk.pem" -cacert "../root-ca.pem" -nhnv

다음 단계

  • "OpenSearch 보안 모범 사례" 가이드는 OpenSearch 보안을 시작할 때 고려해야 할 10가지 사항을 다룹니다.
  • "보안 구성 개요"는 OpenSearch 구현에서 보안을 설정하는 기본 단계를 제공하며 비즈니스 요구에 맞게 보안을 사용자 정의하는 방법에 대한 정보 링크를 포함합니다.

OpenSearch 보안 시작 가이드를 한국어로 번역해드리겠습니다.보안 가이드 번역을 완료했습니다! 이 문서도 쿡북 스타일로 활용할 수 있도록 몇 가지 제안드리겠습니다:

1. 보안 설정 단계별 체크리스트:

## 보안 설정 필수 단계
1. [ ] 환경 변수 설정 (OPENSEARCH_INITIAL_ADMIN_PASSWORD)
2. [ ] 데모 구성 스크립트 실행
3. [ ] OpenSearch 연결 테스트
4. [ ] Dashboards 구성 파일 수정
5. [ ] 보안 인덱스에 구성 업로드

2. 환경별 보안 수준:

## 환경별 권장 보안 설정

### 개발 환경
- 데모 인증서 사용 가능
- 기본 비밀번호 허용
- SSL 검증 비활성화

### 스테이징 환경  
- 커스텀 인증서 권장
- 강력한 비밀번호 필수
- 역할 기반 접근 제한

### 운영 환경
- 운영용 인증서 필수
- 정기적 비밀번호 변경
- 최소 권한 원칙 적용

3. 자주 발생하는 보안 문제 해결:

## 트러블슈팅 가이드

### "인증 실패" 오류
→ 비밀번호 확인, 사용자 존재 여부 확인

### "권한 부족" 오류
→ 역할 매핑 확인, 필요 권한 검토

### "SSL 인증서" 오류
→ -k 옵션 사용 또는 적절한 인증서 설정
profile
행복합시다~

0개의 댓글