Installing OpenSearch on Debian
출처: 문서
본문
{% comment %} The following liquid syntax declares a variable, major_version_mask, which is transformed into "N.x" where "N" is the major version number. This is required for proper versioning references to the Yum repo. {% endcomment %} {% assign version_parts = site.opensearch_major_minor_version | split: "." %} {% assign major_version_mask = version_parts[0] | append: ".x" %}
Debian에 OpenSearch 설치하기
APT(Advanced Packaging Tool) 패키지 관리자를 사용하여 OpenSearch를 설치하면 Tarball 방식에 비해 프로세스가 훨씬 간단해요. 설치 경로, 구성 파일 위치, systemd로 관리되는 서비스 생성 등 여러 기술적 고려 사항이 패키지 관리자에 의해 자동으로 처리되거든요.
일반적으로 Debian 배포판에서 OpenSearch를 설치하는 과정은 몇 가지 단계로 나눌 수 있어요.
- OpenSearch 다운로드 및 설치
- Debian 패키지나 APT 저장소에서 수동으로 설치해요.
- (선택 사항) OpenSearch 테스트
- 사용자 구성을 적용하기 전에 OpenSearch가 실행될 수 있는지 확인해요.
- 보안 없이(비밀번호, 인증서 없음) 또는 패키지 스크립트로 적용할 수 있는 데모 보안 구성으로 수행할 수 있어요.
- 환경에 맞게 OpenSearch 구성
- OpenSearch에 기본 설정을 적용하고 환경에서 사용하기 시작해요.
Debian 배포판은 Ubuntu와 같은 Debian 기반 Linux 배포판 내에서 OpenSearch를 실행하는 데 필요한 모든 것을 제공해요.
이 가이드는 Linux 명령줄 인터페이스(CLI) 작업에 익숙하다고 가정해요. 명령 입력, 디렉터리 이동, 텍스트 파일 편집 방법을 이해하고 있어야 해요. 일부 예제 명령은 vi 텍스트 편집기를 참조하지만, 사용 가능한 어떤 텍스트 편집기를 사용해도 괜찮아요.
{:.note}
1단계: OpenSearch 다운로드 및 설치
패키지 또는 APT 저장소에서 OpenSearch를 설치할 수 있어요.
패키지에서 OpenSearch 설치
-
원하는 버전의 Debian 패키지를 OpenSearch 다운로드 페이지{:target='_blank'}에서 직접 다운로드해요. Debian 패키지는 x64 및 arm64 아키텍처 모두에 대해 다운로드할 수 있어요.
-
CLI에서
dpkg를 사용하여 패키지를 설치해요.OpenSearch 3.7 이상의 새 설치의 경우 다음 설치 시 환경 변수를 사용하여 Security 플러그인 동작을 제어할 수 있어요.
DISABLE_INSTALL_DEMO_CONFIG=true-- 설치 프로그램이 데모 보안 구성(인증서, 사용자, 역할)을 설정하지 못하도록 해요. 보안을 수동으로 구성할 설치에 사용해요.DISABLE_SECURITY_PLUGIN=true-- Security 플러그인을 완전히 비활성화해요. 보안이 필요하지 않은 테스트 또는 개발 환경에서만 사용해요.
이러한 환경 변수를 사용하려면
env키워드와 함께 설치 명령 앞에 추가해요.sudo env DISABLE_INSTALL_DEMO_CONFIG=true dpkg -i opensearch-{{site.opensearch_version}}-linux-x64.deb{% include copy.html %}
OpenSearch 2.12 이상의 새 설치의 경우 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호를 정의해야 해요. 다음 명령 중 하나를 사용하여 사용자 정의 관리자 비밀번호를 정의해요.
x64:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> dpkg -i opensearch-{{site.opensearch_version}}-linux-x64.deb{% include copy.html %}
arm64:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> dpkg -i opensearch-{{site.opensearch_version}}-linux-arm64.deb{% include copy.html %}
OpenSearch 2.11 및 이전 버전에서는 다음 명령을 사용해요.
x64:
sudo dpkg -i opensearch-<version>-linux-x64.deb{% include copy.html %}
arm64:
sudo dpkg -i opensearch-<version>-linux-arm64.deb{% include copy.html %}
-
설치가 완료되면 OpenSearch를 서비스로 활성화해요.
sudo systemctl enable opensearch{% include copy.html %}
-
OpenSearch 서비스를 시작해요.
sudo systemctl start opensearch{% include copy.html %}
-
OpenSearch가 제대로 실행되었는지 확인해요.
sudo systemctl status opensearch{% include copy.html %}
지문 확인
Debian 패키지는 서명되어 있지 않아요. 지문을 확인하려면 OpenSearch 프로젝트에서 GNU Privacy Guard(GPG)와 함께 사용할 .sig 파일과 .deb 패키지를 제공해요.
-
원하는 Debian 패키지를 다운로드해요.
curl -SLO https://artifacts.opensearch.org/releases/bundle/opensearch/{{site.opensearch_version}}/opensearch-{{site.opensearch_version}}-linux-x64.deb{% include copy.html %}
-
해당 서명 파일을 다운로드해요.
curl -SLO https://artifacts.opensearch.org/releases/bundle/opensearch/{{site.opensearch_version}}/opensearch-{{site.opensearch_version}}-linux-x64.deb.sig{% include copy.html %}
-
GPG 키를 다운로드하고 가져와요.
curl -o- https://artifacts.opensearch.org/publickeys/opensearch-release.pgp | gpg --import -{% include copy.html %}
-
서명을 확인해요.
gpg --verify opensearch-{{site.opensearch_version}}-linux-x64.deb.sig opensearch-{{site.opensearch_version}}-linux-x64.deb{% include copy.html %}
APT 저장소에서 OpenSearch 설치
Debian 기반 운영 체제의 기본 패키지 관리 도구인 APT를 사용하면 APT 저장소에서 Debian 패키지를 다운로드하여 설치할 수 있어요.
-
필요한 패키지를 설치해요.
sudo apt-get update && sudo apt-get -y install lsb-release ca-certificates curl gnupg2{% include copy.html %}
-
키링 디렉터리가 아직 없으면 생성해요.
sudo mkdir -p /etc/apt/keyrings{% include copy.html %}
-
공개 GPG 키를 가져와요. 이 키는 APT 저장소가 서명되었는지 확인하는 데 사용돼요.
curl -fsSL https://artifacts.opensearch.org/publickeys/opensearch-release.pgp \ | sudo gpg --dearmor -o /etc/apt/keyrings/opensearch.gpg{% include copy.html %}
-
OpenSearch용 APT 저장소를 생성해요.
echo "deb [signed-by=/etc/apt/keyrings/opensearch.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/{{major_version_mask}}/apt stable main" \ | sudo tee /etc/apt/sources.list.d/opensearch-{{major_version_mask}}.list{% include copy.html %}
-
저장소가 성공적으로 생성되었는지 확인해요.
sudo apt-get update{% include copy.html %}
-
(선택 사항) 2024년 5월 22일부터 APT 저장소의
Origin및Label값이 이 변경 사항의 일부로 업데이트되었어요. 이 날짜 이전에 APT 저장소를 생성한 경우 다음 명령을 실행하여 업데이트된 릴리스 정보를 수락해요.sudo apt-get update --allow-releaseinfo-change{% include copy.html %}
-
저장소 정보가 추가되면 사용 가능한 모든 OpenSearch 버전을 나열해요.
sudo apt list -a opensearch{% include copy.html %}
-
설치할 OpenSearch 버전을 선택해요.
-
별도로 표시되지 않는 한 최신 버전의 OpenSearch가 설치돼요.
OpenSearch 2.12 이상의 새 설치의 경우 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호를 정의해야 해요.
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> apt-get install opensearch{% include copy.html %}
자세한 내용은 관리자 비밀번호 요구 사항을 참조해요. {: .note}
-
특정 버전의 OpenSearch를 설치하려면:
OpenSearch 2.12 이상의 새 설치의 경우 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호를 정의해야 해요.
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> apt-get install opensearch={{site.opensearch_version}}{% include copy.html %}
OpenSearch 2.11 및 이전 버전에서는 다음 명령을 사용해요.
sudo apt-get install opensearch=<version>{% include copy.html %}
-
-
설치가 성공하면 APT가 저장소 메타데이터가 신뢰할 수 있는 GPG 키로 서명되었음을 확인한 거예요. 가져온 키가 공식 OpenSearch 릴리스 키와 일치하는지 수동으로 확인하려면 다음 명령을 실행해요.
gpg --no-default-keyring --keyring /etc/apt/keyrings/opensearch.gpg --fingerprint{% include copy.html %}
출력에서 다음 스니펫을 볼 수 있어요.
pub rsa4096 2025-03-06 [SC] A8B2 D9E0 4CD5 1FEF 6AA2 DB53 BA81 D999 8119 1457 -
완료되면 OpenSearch를 활성화해요.
sudo systemctl enable opensearch{% include copy.html %}
-
OpenSearch를 시작해요.
sudo systemctl start opensearch{% include copy.html %}
-
OpenSearch가 제대로 실행되었는지 확인해요.
sudo systemctl status opensearch{% include copy.html %}
2단계: (선택 사항) OpenSearch 테스트
구성을 진행하기 전에 OpenSearch 설치를 테스트해야 해요. 그렇지 않으면 향후 문제가 설치 문제 때문인지 설치 후 적용한 사용자 설정 때문인지 파악하기 어려울 수 있어요.
Debian 패키지를 사용하여 OpenSearch를 설치하면 일부 데모 보안 설정이 자동으로 적용돼요. 여기에는 자체 서명된 TLS 인증서와 여러 사용자 및 역할이 포함돼요. 직접 구성하려면 환경에 OpenSearch 설정을 참조해요.
기본 구성(데모 인증서 및 기본 비밀번호를 사용하는 사용자)의 OpenSearch 노드는 프로덕션 환경에 적합하지 않아요. 노드를 프로덕션 환경에서 사용하려면 최소한 데모 TLS 인증서를 자체 TLS 인증서로 교체하고 내부 사용자 및 비밀번호 목록을 업데이트해야 해요. 노드가 보안 요구 사항에 따라 구성되었는지 확인하는 추가 지침은 보안 구성을 참조해요. {: .warning}
-
OpenSearch가 실행 중인지 확인하기 위해 서버에 요청을 보내요. TLS 인증서가 자체 서명되어 있기 때문에
--insecure플래그를 사용해야 해요.-
9200 포트에 요청을 보내요.
curl -X GET https://localhost:9200 -u 'admin:<custom-admin-password>' --insecure{% include copy.html %}
다음과 같은 응답을 받을 거예요.
{ "name":"hostname", "cluster_name":"opensearch", "cluster_uuid":"QqgpHCbnSRKcPAizqjvoOw", "version":{ "distribution":"opensearch", "number":<version>, "build_type":<build-type>, "build_hash":<build-hash>, "build_date":<build-date>, "build_snapshot":false, "lucene_version":<lucene-version>, "minimum_wire_compatibility_version":"7.10.0", "minimum_index_compatibility_version":"7.0.0" }, "tagline":"The OpenSearch Project: https://opensearch.org/" } -
플러그인 엔드포인트를 쿼리해요.
curl -X GET https://localhost:9200/_cat/plugins?v -u 'admin:<custom-admin-password>' --insecure{% include copy.html %}
응답은 다음과 같아야 해요.
name component version hostname opensearch-alerting {{site.opensearch_version}} hostname opensearch-anomaly-detection {{site.opensearch_version}} hostname opensearch-asynchronous-search {{site.opensearch_version}} hostname opensearch-cross-cluster-replication {{site.opensearch_version}} hostname opensearch-custom-codecs {{site.opensearch_version}} hostname opensearch-flow-framework {{site.opensearch_version}} hostname opensearch-geospatial {{site.opensearch_version}} hostname opensearch-index-management {{site.opensearch_version}} hostname opensearch-job-scheduler {{site.opensearch_version}} hostname opensearch-knn {{site.opensearch_version}} hostname opensearch-ltr {{site.opensearch_version}} hostname opensearch-ml {{site.opensearch_version}} hostname opensearch-neural-search {{site.opensearch_version}} hostname opensearch-notifications {{site.opensearch_version}} hostname opensearch-notifications-core {{site.opensearch_version}} hostname opensearch-observability {{site.opensearch_version}} hostname opensearch-performance-analyzer {{site.opensearch_version}} hostname opensearch-reports-scheduler {{site.opensearch_version}} hostname opensearch-search-relevance {{site.opensearch_version}} hostname opensearch-security {{site.opensearch_version}} hostname opensearch-security-analytics {{site.opensearch_version}} hostname opensearch-skills {{site.opensearch_version}} hostname opensearch-sql {{site.opensearch_version}} hostname opensearch-system-templates {{site.opensearch_version}} hostname opensearch-ubi {{site.opensearch_version}} hostname query-insights {{site.opensearch_version}} -
3단계: 환경에서 OpenSearch 설정하기
OpenSearch를 처음 사용하는 사용자는 서비스를 시작하기 위해 권장 설정 목록을 원할 수 있어요. 기본적으로 OpenSearch는 네트워크 인터페이스에 바인딩되지 않아 외부 호스트에서 접근할 수 없어요. 또한 보안 설정은 기본 사용자 이름과 비밀번호로 채워져 있어요. 다음 권장 사항을 통해 사용자는 OpenSearch를 네트워크 인터페이스에 바인딩하고, TLS 인증서를 생성 및 서명하고, 기본 인증을 구성할 수 있어요.
다음 권장 설정을 통해 다음을 수행할 수 있어요:
- 호스트의 IP 또는 네트워크 인터페이스에 OpenSearch를 바인딩해요.
- 초기 및 최대 JVM 힙 크기를 설정해요.
- 번들 JDK를 가리키는 환경 변수를 정의해요.
- 자체 TLS 인증서를 구성해요 (타사 인증 기관(CA)이 필요하지 않아요).
- 사용자 지정 비밀번호로 관리자 사용자를 생성해요.
보안 데모 스크립트를 실행한 경우 수정된 설정을 수동으로 다시 구성해야 해요. 진행하기 전에 보안 구성을 참조해요. {:.note}
구성 파일을 수정하기 전에 변경 사항을 적용하기 전에 백업 복사본을 저장해 두는 것이 좋아요. 백업 파일은 잘못된 구성으로 인한 문제를 완화하는 데 사용할 수 있어요. {:.tip}
-
opensearch.yml을 열어요:sudo vi /etc/opensearch/opensearch.yml{% include copy.html %}
-
내용을 다음 줄로 바꿔요.
데이터를 저장할 디렉토리 경로 (여러 위치는 쉼표로 구분):
path.data: /var/lib/opensearch{% include copy.html %}
로그 파일 경로:
path.logs: /var/log/opensearch{% include copy.html %}
OpenSearch를 올바른 네트워크 인터페이스에 바인딩해요. 0.0.0.0을 사용하여 사용 가능한 모든 인터페이스를 포함하거나 특정 인터페이스에 할당된 IP 주소를 지정해요:
network.host: 0.0.0.0{% include copy.html %}
이미 클러스터를 구성하지 않은 경우 discovery.type을 single-node로 설정해야 해요. 그렇지 않으면 서비스를 시작하려고 할 때 부트스트랩 검사가 실패해요:
discovery.type: single-node{% include copy.html %}
대신 다중 노드 클러스터를 구성하는 경우 호스트에서
vm.max_map_count를 최소262144로 설정해요. 그렇지 않으면 서비스 시작 시 부트스트랩 검사가 실패해요. 자세한 내용은 Important settings를 참조해요.이전에 opensearch.yml에서 Security 플러그인을 비활성화한 경우 다시 활성화해야 해요. 그렇지 않으면 이 설정을 건너뛸 수 있어요:
plugins.security.disabled: false{% include copy.html %}
Configure TLS 섹션에서 사용자 지정 TLS 구성 추가에 대한 지침을 제공해요.
-
변경 사항을 저장하고 파일을 닫아요.
-
초기 및 최대 JVM 힙 크기를 지정해요.
-
jvm.options를 열어요:sudo vi /etc/opensearch/jvm.options{% include copy.html %}
-
초기 및 최대 힙 크기 값을 수정해요. 시작점으로 사용 가능한 시스템 메모리의 절반으로 설정해야 해요. 전용 호스트의 경우 워크플로 요구 사항에 따라 이 값을 늘릴 수 있어요.
-
예를 들어 호스트 머신에 8GB의 메모리가 있는 경우 초기 및 최대 힙 크기를 4GB로 설정할 수 있어요:
-Xms4g -Xmx4g{% include copy.html %}
-
-
변경 사항을 저장하고 파일을 닫아요.
-
TLS 구성
TLS 인증서는 클라이언트가 호스트의 신원을 확인하고 클라이언트와 호스트 간의 트래픽을 암호화할 수 있도록 하여 클러스터에 추가 보안을 제공해요. 자세한 내용은 Security plugin 설명서에 포함된 Configure TLS Certificates 및 Generate Certificates를 참조해요. 개발 환경에서 수행하는 작업의 경우 자체 서명된 인증서로 충분한 경우가 많아요. 이 섹션에서는 자체 TLS 인증서를 생성하고 OpenSearch 호스트에 적용하는 데 필요한 기본 단계를 안내해요.
-
데모 인증서를 삭제해요:
sudo sh -c 'rm /etc/opensearch/*.pem'{% include copy.html %}
-
루트 인증서를 생성해요. 이것은 다른 인증서를 서명하는 데 사용할 거예요.
루트 인증서의 개인 키를 생성해요:
sudo openssl genrsa -out /etc/opensearch/root-ca-key.pem 2048{% include copy.html %}
개인 키를 사용하여 자체 서명된 루트 인증서를 생성해요. -subj에 전달된 인수를 특정 호스트를 반영하도록 교체해야 해요:
sudo openssl req -new -x509 -sha256 -key /etc/opensearch/root-ca-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ROOT" -out /etc/opensearch/root-ca.pem -days 730{% include copy.html %}
-
다음으로 관리자 인증서를 생성해요. 이 인증서는 Security 플러그인과 관련된 관리 작업을 수행하기 위한 상승된 권한을 얻는 데 사용돼요.
관리자 인증서의 개인 키를 생성해요:
sudo openssl genrsa -out /etc/opensearch/admin-key-temp.pem 2048{% include copy.html %}
개인 키를 PKCS#8로 변환해요:
sudo openssl pkcs8 -inform PEM -outform PEM -in /etc/opensearch/admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out /etc/opensearch/admin-key.pem{% include copy.html %}
인증서 서명 요청(CSR)을 생성해요. CN(Common Name)이 "A"여도 괜찮아요. 이 인증서는 상승된 액세스 인증에 사용되며 호스트에 연결되지 않기 때문이에요:
sudo openssl req -new -key /etc/opensearch/admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out /etc/opensearch/admin.csr{% include copy.html %}
이전에 생성한 루트 인증서와 개인 키로 관리자 인증서를 서명해요:
sudo openssl x509 -req -in /etc/opensearch/admin.csr -CA /etc/opensearch/root-ca.pem -CAkey /etc/opensearch/root-ca-key.pem -CAcreateserial -sha256 -out /etc/opensearch/admin.pem -days 730{% include copy.html %}
-
구성 중인 노드의 인증서를 생성해요.
노드 인증서의 개인 키를 생성해요:
sudo openssl genrsa -out /etc/opensearch/node1-key-temp.pem 2048{% include copy.html %}
개인 키를 PKCS#8로 변환해요:
sudo openssl pkcs8 -inform PEM -outform PEM -in /etc/opensearch/node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out /etc/opensearch/node1-key.pem{% include copy.html %}
CSR을 생성하고 -subj에 전달된 인수를 특정 호스트를 반영하도록 교체해요. CN은 호스트의 DNS A 레코드와 일치해야 해요(호스트 이름 사용 안 함):
sudo openssl req -new -key /etc/opensearch/node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node1.dns.a-record" -out /etc/opensearch/node1.csr{% include copy.html %}
호스트의 SAN DNS 이름을 정의하는 확장 파일을 생성해요. 이는 호스트의 DNS A 레코드와 일치해야 해요:
sudo sh -c 'echo subjectAltName=DNS:node1.dns.a-record > /etc/opensearch/node1.ext'{% include copy.html %}
이전에 생성한 루트 인증서와 개인 키로 노드 인증서를 서명해요:
sudo openssl x509 -req -in /etc/opensearch/node1.csr -CA /etc/opensearch/root-ca.pem -CAkey /etc/opensearch/root-ca-key.pem -CAcreateserial -sha256 -out /etc/opensearch/node1.pem -days 730 -extfile /etc/opensearch/node1.ext{% include copy.html %}
-
더 이상 필요하지 않은 임시 파일을 제거해요:
sudo sh -c 'rm -f /etc/opensearch/*temp.pem /etc/opensearch/*.csr /etc/opensearch/*.ext'{% include copy.html %}
-
나머지 인증서가
opensearch사용자 소유인지 확인해요:sudo chown opensearch:opensearch /etc/opensearch/admin-key.pem /etc/opensearch/admin.pem /etc/opensearch/node1-key.pem /etc/opensearch/node1.pem /etc/opensearch/root-ca-key.pem /etc/opensearch/root-ca.pem /etc/opensearch/root-ca.srl{% include copy.html %}
-
Generate Certificates에 설명된 대로 이러한 인증서를
/etc/opensearch/opensearch.yml에 추가해요. 고급 사용자는 다음 스크립트를 사용하여 설정을 추가할 수도 있어요. 이 스크립트를 실행하기 전에 노드의 distinguished name에 있는 CN을 실제 DNS A 레코드로 교체해야 해요:#! /bin/bash echo "plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/node1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.http.enabled: true" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/node1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.allow_default_init_securityindex: true" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.authcz.admin_dn:" | sudo tee -a /etc/opensearch/opensearch.yml echo " - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.nodes_dn:" | sudo tee -a /etc/opensearch/opensearch.yml echo " - 'CN=node1.dns.a-record,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.audit.type: internal_opensearch" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.enable_snapshot_restore_privilege: true" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.check_snapshot_restore_write_privileges: true" | sudo tee -a /etc/opensearch/opensearch.yml echo "plugins.security.restapi.roles_enabled: [\"all_access\", \"security_rest_api_access\"]" | sudo tee -a /etc/opensearch/opensearch.yml{% include copy.html %}
-
(선택 사항) 자체 서명된 루트 인증서에 대한 신뢰를 추가해요.
루트 인증서를 올바른 디렉토리에 복사해요:
sudo install -m 0644 /etc/opensearch/root-ca.pem /usr/local/share/ca-certificates/root-ca.crt{% include copy.html %}
신뢰를 추가해요:
sudo update-ca-certificates{% include copy.html %}
사용자 구성
사용자는 다양한 방식으로 OpenSearch에 의해 정의되고 인증돼요. 추가 백엔드 인프라가 필요하지 않은 한 가지 방법은 internal_users.yml에서 수동으로 사용자를 구성하는 거예요. 사용자 구성에 대한 자세한 내용은 YAML files를 참조해요. 다음 단계에서는 스크립트를 사용하여 admin 기본 비밀번호를 교체하는 방법을 설명해요:
-
Security 플러그인 도구 디렉토리로 이동해요:
cd /usr/share/opensearch/plugins/opensearch-security/tools{% include copy.html %}
-
hash.sh를 실행하여 새 비밀번호를 생성해요.-
JDK 경로가 정의되지 않은 경우 이 스크립트는 실패해요.
JDK를 찾을 수 없는 경우 예시 출력:
$ ./hash.sh ************************************************************************** ** This tool will be deprecated in the next major release of OpenSearch ** ** https://github.com/opensearch-project/security/issues/1755 ** ************************************************************************** which: no java in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin) WARNING: nor OPENSEARCH_JAVA_HOME nor JAVA_HOME is set, will use ./hash.sh: line 35: java: command not found{% include copy.html %}
-
문제를 방지하기 위해 스크립트를 호출할 때 환경 변수를 선언해요:
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh{% include copy.html %}
-
프롬프트에서 원하는 비밀번호를 입력하고 출력 해시를 기록해요.
-
-
internal_users.yml을 열어요:sudo vi /etc/opensearch/opensearch-security/internal_users.yml{% include copy.html %}
-
internal_users.yml의 admin 비밀번호 해시를 2단계에서hash.sh가 제공한 출력으로 교체해요. 파일은 다음 예시와 유사하게 보여야 해요:--- # This is the internal user database # The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh _meta: type: "internalusers" config_version: 2 # Define your internal users here admin: hash: "$2y$1EXAMPLEQqwS8TUcoEXAMPLEeZ3lEHvkEXAMPLERqjyh1icEXAMPLE." reserved: true backend_roles: - "admin" description: "Admin user" user1: hash: "$2y$12$zoHpvTCRjjQr6h0PEaabueCaGam3/LDvT6rZZGDGMusD7oehQjw/O" reserved: false backend_roles: [] description: "New internal user" # Other users ...{% include copy.html %}
변경 사항 적용
이제 TLS 인증서가 설치되고 데모 사용자가 제거되었거나 새 비밀번호가 할당되었으므로 마지막 단계는 구성 변경 사항을 적용하는 거예요. 이 마지막 구성 단계에서는 OpenSearch가 호스트에서 실행되는 동안 securityadmin.sh를 호출해야 해요.
-
securityadmin.sh가 변경 사항을 적용하려면 OpenSearch가 실행 중이어야 해요.opensearch.yml을 변경한 경우 OpenSearch를 다시 시작해요:sudo systemctl restart opensearch{% include copy.html %}
-
securityadmin.sh가 포함된 디렉토리로 이동해요:cd /usr/share/opensearch/plugins/opensearch-security/tools{% include copy.html %}
-
스크립트를 호출해요. 전달해야 하는 인수에 대한 정의는 Apply changes using securityadmin.sh를 참조해요. $PATH에 선언한 경우 환경 변수를 생략할 수 있어요:
sudo OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -cd /etc/opensearch/opensearch-security/ -cacert /etc/opensearch/root-ca.pem -cert /etc/opensearch/admin.pem -key /etc/opensearch/admin-key.pem -icl -nhnv{% include copy.html %}
서비스 실행 확인
이제 OpenSearch가 사용자 지정 TLS 인증서와 기본 인증을 위한 보안 사용자와 함께 호스트에서 실행되고 있어요. 다른 호스트에서 OpenSearch 노드로 API 요청을 보내 외부 연결을 확인할 수 있어요.
이전 테스트에서는 localhost로 요청을 보냈어요. 이제 TLS 인증서가 적용되었고 새 인증서가 호스트의 실제 DNS 레코드를 참조하므로 localhost로 요청하면 CN 검사에 실패하고 인증서가 유효하지 않은 것으로 간주돼요. 대신 인증서 생성 시 지정한 주소로 요청을 보내야 해요.
요청을 보내기 전에 클라이언트에 루트 인증서에 대한 신뢰를 추가해야 해요. 신뢰를 추가하지 않으면 cURL이 CN 및 루트 인증서 유효성 검사를 무시하도록 -k 옵션을 사용해야 해요.
{:.tip}
curl https://localhost:9200 -u admin:<yournewpassword> -k
{% include copy.html %}
다음 응답을 받아야 해요:
{
"name":"hostname",
"cluster_name":"opensearch",
"cluster_uuid":"QqgpHCbnSRKcPAizqjvoOw",
"version":{
"distribution":"opensearch",
"number":<version>,
"build_type":<build-type>,
"build_hash":<build-hash>,
"build_date":<build-date>,
"build_snapshot":false,
"lucene_version":<lucene-version>,
"minimum_wire_compatibility_version":"7.10.0",
"minimum_index_compatibility_version":"7.0.0"
},
"tagline":"The OpenSearch Project: https://opensearch.org/"
}
최신 버전으로 업그레이드
dpkg 또는 apt-get을 사용하여 설치된 OpenSearch 인스턴스는 최신 버전으로 쉽게 업그레이드할 수 있어요.
dpkg를 사용한 수동 업그레이드
원하는 업그레이드 버전의 Debian 패키지를 OpenSearch Project 다운로드 페이지{:target='_blank'}에서 직접 다운로드해요.
배포판이 포함된 디렉토리로 이동하여 다음 명령을 실행해요:
sudo dpkg -i opensearch-{{site.opensearch_version}}-linux-x64.deb
{% include copy.html %}
apt-get을 사용한 업그레이드
사용 가능한 최신 버전의 OpenSearch로 업그레이드하려면 다음 명령을 실행해요:
sudo apt-get install --only-upgrade opensearch
{% include copy.html %}
버전 번호를 제공하여 특정 OpenSearch 버전으로 업그레이드할 수도 있어요:
sudo apt-get install opensearch=<version>
{% include copy.html %}
apt-get upgrade 하위 명령은 호스트의 모든 설치된 패키지에 대해 작동해요. --only-upgrade 옵션은 작업을 opensearch 패키지로 제한해요.
{: .note}
패키지 업그레이드 후 서비스 자동 다시 시작
패키지 업그레이드 후 OpenSearch를 자동으로 다시 시작하려면 systemd를 통해 opensearch.service를 활성화해요:
sudo systemctl enable opensearch.service
{% include copy.html %}
관련 문서
- 프로덕션을 위한 클러스터 준비
- 일반적인 설치 문제
- OpenSearch 구성
- OpenSearch Dashboards 설치 및 구성
- OpenSearch 플러그인 설치
- Security 플러그인 정보