Installing OpenSearch using RPM
출처: 문서
본문
{% 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" %}
OpenSearch를 RPM으로 설치해요
RPM 패키지 관리자(RPM)를 사용하여 OpenSearch를 설치하면 Tarball 방법에 비해 과정이 상당히 간소화돼요. 예를 들어 설치 경로, 구성 파일 위치, systemd로 관리되는 서비스 생성과 같은 여러 기술적 고려 사항이 패키지 관리자에 의해 자동으로 처리돼요.
일반적으로 RPM 배포판에서 OpenSearch를 설치하는 과정은 몇 가지 단계로 나눌 수 있어요:
- OpenSearch를 다운로드하고 설치해요.
- RPM 패키지에서 수동으로 설치하거나 YUM 저장소에서 설치할 수 있어요.
- (선택 사항) OpenSearch를 테스트해요.
- 사용자 구성을 적용하기 전에 OpenSearch가 실행될 수 있는지 확인해요.
- 보안 없이(비밀번호 없음, 인증서 없음) 또는 패키지된 스크립트로 적용할 수 있는 데모 보안 구성으로 수행할 수 있어요.
- 환경에 맞게 OpenSearch를 구성해요.
- OpenSearch에 기본 설정을 적용하고 환경에서 사용하기 시작해요.
RPM 배포판은 Red Hat 또는 Red Hat 기반 Linux 배포판에서 OpenSearch를 실행하는 데 필요한 모든 것을 제공해요. 지원되는 운영 체제 목록은 운영 체제 호환성을 참조해요.
이 가이드는 Linux 명령줄 인터페이스(CLI) 작업에 익숙하다고 가정해요. 명령 입력, 디렉터리 이동, 텍스트 파일 편집 방법을 이해하고 있어야 해요. 일부 예제 명령은 vi 텍스트 편집기를 참조하지만, 사용 가능한 모든 텍스트 편집기를 사용할 수 있어요.
{:.note}
1단계: OpenSearch를 다운로드하고 설치해요
패키지 또는 YUM 저장소에서 OpenSearch를 설치할 수 있어요.
패키지에서 OpenSearch 설치해요
-
원하는 버전의 RPM 패키지를 OpenSearch 다운로드 페이지{:target='_blank'}에서 직접 다운로드해요. RPM 패키지는 x64 및 arm64 아키텍처 모두에 대해 다운로드할 수 있어요.
-
공개 GNU Privacy Guard(GPG) 키를 가져와요. 이 키는 OpenSearch 인스턴스가 서명되었는지 확인해요.
sudo rpm --import https://artifacts.opensearch.org/publickeys/opensearch-release.pgp{% include copy.html %}
-
CLI에서
rpm또는yum으로 패키지를 설치할 수 있어요.OpenSearch 3.7 이상의 새 설치에서는 다음 설치 시 환경 변수를 사용하여 보안 플러그인 동작을 제어할 수 있어요:
DISABLE_INSTALL_DEMO_CONFIG=true-- 설치 프로그램이 데모 보안 구성(인증서, 사용자, 역할)을 설정하지 못하게 해요. 보안을 수동으로 구성할 설치에 사용해요.DISABLE_SECURITY_PLUGIN=true-- 보안 플러그인을 완전히 비활성화해요. 보안이 필요하지 않은 테스트 또는 개발 환경에서만 사용해요.
이 환경 변수를 사용하려면 설치 명령 앞에
env키워드를 추가해요:sudo env DISABLE_INSTALL_DEMO_CONFIG=true yum install opensearch-{{site.opensearch_version}}-linux-x64.rpm{% include copy.html %}
OpenSearch 2.12 이상의 새 설치에서는 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호를 정의해야 해요. 관리자 비밀번호 요구 사항에 따라 다음 명령 중 하나를 사용하여 사용자 정의 관리자 비밀번호를 정의해요.
yum을 사용하여 x64 패키지 설치:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> yum install opensearch-{{site.opensearch_version}}-linux-x64.rpm{% include copy.html %}
rpm을 사용하여 x64 패키지 설치:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> rpm -ivh opensearch-{{site.opensearch_version}}-linux-x64.rpm{% include copy.html %}
yum을 사용하여 arm64 패키지 설치:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> yum install opensearch-{{site.opensearch_version}}-linux-arm64.rpm{% include copy.html %}
rpm을 사용하여 arm64 패키지 설치:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> rpm -ivh opensearch-{{site.opensearch_version}}-linux-arm64.rpm{% include copy.html %}
OpenSearch 2.11 및 이전 버전에서는 다음 명령을 사용해요.
yum을 사용하여 x64 패키지 설치:
sudo yum install opensearch-<version>-linux-x64.rpm{% include copy.html %}
rpm을 사용하여 x64 패키지 설치:
sudo rpm -ivh opensearch-<version>-linux-x64.rpm{% include copy.html %}
yum을 사용하여 arm64 패키지 설치:
sudo yum install opensearch-<version>-linux-arm64.rpm{% include copy.html %}
rpm을 사용하여 arm64 패키지 설치:
sudo rpm -ivh opensearch-<version>-linux-arm64.rpm{% 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 %}
YUM 저장소에서 OpenSearch 설치해요
YUM은 Red Hat 기반 운영 체제의 기본 패키지 관리 도구로, YUM 저장소에서 RPM 패키지를 다운로드하고 설치할 수 있어요.
-
OpenSearch용 로컬 저장소 파일을 만들어요:
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/{{major_version_mask}}/opensearch-{{major_version_mask}}.repo -o /etc/yum.repos.d/opensearch-{{major_version_mask}}.repo{% include copy.html %}
-
원활한 설치를 위해 YUM 캐시를 정리해요:
sudo yum clean all{% include copy.html %}
-
저장소가 성공적으로 생성되었는지 확인해요.
sudo yum repolist{% include copy.html %}
-
저장소 파일을 다운로드한 후, 사용 가능한 모든 OpenSearch 버전을 나열해요:
sudo yum list opensearch --showduplicates{% include copy.html %}
-
설치하려는 OpenSearch 버전을 선택해요:
- 별도로 지정하지 않으면 최신 버전의 OpenSearch가 설치돼요.
OpenSearch 2.12 이상의 새 설치에서는 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호가 필요해요. 사용자 정의 관리자 비밀번호를 설정하려면 다음 명령을 사용해요:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> yum install opensearch{% include copy.html %}
OpenSearch 2.11 및 이전 버전에서는 다음 명령을 사용해요:
sudo yum install opensearch{% include copy.html %}
- 특정 버전의 OpenSearch를 설치하려면 패키지 이름 뒤에 버전 번호를 입력해요.
OpenSearch 2.12 이상의 새 설치에서는 데모 보안 구성을 설정하려면 사용자 정의 관리자 비밀번호가 필요해요. 사용자 정의 관리자 비밀번호를 설정하려면 다음 명령을 사용해요:
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> yum install 'opensearch-{{site.opensearch_version}}'{% include copy.html %}
OpenSearch 2.11 및 이전 버전에서는 다음 명령을 사용해요:
sudo yum install 'opensearch-2.11.0'{% include copy.html %}
-
YUM이 처음으로 저장소 메타데이터를 다운로드할 때(예: 사용 가능한 버전을 나열할 때)와 설치 중에 다시 GPG 키를 가져오라는 메시지가 표시되고 키 지문이 제시돼요. 정보가 다음과 일치하는지 확인해요:
Fingerprint: A8B2 D9E0 4CD5 1FEF 6AA2 DB53 BA81 D999 8119 1457- 올바르면
yes또는y를 입력해요. OpenSearch 설치가 계속돼요.
- 올바르면
-
완료되면 OpenSearch를 실행할 수 있어요.
sudo systemctl start opensearch{% include copy.html %}
-
OpenSearch가 올바르게 시작되었는지 확인해요.
sudo systemctl status opensearch{% include copy.html %}
2단계: (선택 사항) OpenSearch 테스트해요
구성을 진행하기 전에 OpenSearch 설치를 테스트해야 해요. 그렇지 않으면 향후 문제가 설치 문제 때문인지 설치 후 적용한 사용자 설정 때문인지 파악하기 어려울 수 있어요.
RPM 패키지를 사용하여 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" : "6XNc9m2gTUSIoKDqJit0PA", "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 인증서를 생성 및 서명하고, 기본 인증을 구성할 수 있습니다.
다음 권장 설정을 통해 다음을 수행할 수 있습니다:
- OpenSearch를 호스트의 IP 또는 네트워크 인터페이스에 바인딩합니다.
- 초기 및 최대 JVM 힙 크기를 설정합니다.
- 번들 JDK를 가리키는 환경 변수를 정의합니다.
- 자체 TLS 인증서를 구성합니다. 타사 인증 기관(CA)이 필요하지 않습니다.
- 사용자 지정 비밀번호로 관리자 사용자를 생성합니다.
보안 데모 스크립트를 실행한 경우 수정된 설정을 수동으로 다시 구성해야 합니다. 진행하기 전에 Security configuration을 참조하세요. {:.note}
구성 파일을 수정하기 전에 항상 변경 사항을 적용하기 전에 백업 복사본을 저장하는 것이 좋습니다. 백업 파일은 잘못된 구성으로 인한 문제를 완화하는 데 사용할 수 있습니다. {:.tip}
-
opensearch.yml을 엽니다.sudo vi /etc/opensearch/opensearch.yml{% 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 %}
-
변경 사항을 저장하고 파일을 닫습니다.
-
초기 및 최대 JVM 힙 크기를 지정합니다.
-
jvm.options를 엽니다.sudo vi /etc/opensearch/jvm.options{% include copy.html %}
-
초기 및 최대 힙 크기 값을 수정합니다. 시작점으로 사용 가능한 시스템 메모리의 절반으로 설정하는 것이 좋습니다. 전용 호스트의 경우 워크플로 요구 사항에 따라 이 값을 늘릴 수 있습니다.
- 예를 들어 호스트 머신에 8GB의 메모리가 있는 경우 초기 및 최대 힙 크기를 4GB로 설정할 수 있습니다:
{% include copy.html %}-Xms4g -Xmx4g
- 예를 들어 호스트 머신에 8GB의 메모리가 있는 경우 초기 및 최대 힙 크기를 4GB로 설정할 수 있습니다:
-
변경 사항을 저장하고 파일을 닫습니다.
-
TLS 구성
TLS 인증서는 클라이언트가 호스트의 신원을 확인하고 클라이언트와 호스트 간의 트래픽을 암호화할 수 있도록 하여 클러스터에 추가 보안을 제공합니다. 자세한 내용은 Security plugin 문서에 포함된 Configure TLS Certificates 및 Generate Certificates를 참조하세요. 개발 환경에서 수행하는 작업의 경우 자체 서명된 인증서로 충분합니다. 이 섹션에서는 자체 TLS 인증서를 생성하고 OpenSearch 호스트에 적용하는 데 필요한 기본 단계를 안내합니다.
-
인증서가 저장될 디렉터리로 이동합니다.
cd /etc/opensearch{% include copy.html %}
-
데모 인증서를 삭제합니다.
sudo rm -f *pem{% include copy.html %}
-
루트 인증서를 생성합니다. 이 인증서는 다른 인증서를 서명하는 데 사용됩니다.
루트 인증서의 개인 키를 생성합니다:
sudo openssl genrsa -out root-ca-key.pem 2048{% include copy.html %}
개인 키를 사용하여 자체 서명된 루트 인증서를 만듭니다. -subj에 전달된 인수를 특정 호스트를 반영하도록 반드시 교체하세요:
sudo openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ROOT" -out root-ca.pem -days 730{% include copy.html %}
-
다음으로 관리자 인증서를 생성합니다. 이 인증서는 Security 플러그인과 관련된 관리 작업을 수행하기 위한 상승된 권한을 얻는 데 사용됩니다.
관리자 인증서의 개인 키를 생성합니다:
sudo openssl genrsa -out admin-key-temp.pem 2048{% include copy.html %}
개인 키를 PKCS#8로 변환합니다:
sudo openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem{% include copy.html %}
인증서 서명 요청(CSR)을 생성합니다. CN(Common Name)이 "A"여도 괜찮습니다. 이 인증서는 상승된 액세스 인증에 사용되며 호스트에 연결되지 않기 때문입니다:
sudo openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr{% include copy.html %}
이전에 생성한 루트 인증서와 개인 키로 관리자 인증서를 서명합니다:
sudo openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730{% include copy.html %}
-
구성 중인 노드의 인증서를 생성합니다.
노드 인증서의 개인 키를 생성합니다:
sudo openssl genrsa -out node1-key-temp.pem 2048{% include copy.html %}
개인 키를 PKCS#8로 변환합니다:
sudo openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem{% include copy.html %}
CSR을 생성하고 -subj에 전달된 인수를 특정 호스트를 반영하도록 교체하세요. CN은 호스트의 DNS A 레코드와 일치해야 하며 호스트 이름을 사용하지 마세요:
sudo openssl req -new -key node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node1.dns.a-record" -out node1.csr{% include copy.html %}
호스트의 SAN DNS 이름을 정의하는 확장 파일을 생성합니다. 이는 호스트의 DNS A 레코드와 일치해야 합니다:
sudo sh -c 'echo subjectAltName=DNS:node1.dns.a-record > node1.ext'{% include copy.html %}
이전에 생성한 루트 인증서와 개인 키로 노드 인증서를 서명합니다:
sudo openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730 -extfile node1.ext{% include copy.html %}
-
더 이상 필요하지 않은 임시 파일을 제거합니다.
sudo rm -f *temp.pem *csr *ext{% include copy.html %}
-
남은 인증서가
opensearch사용자 소유인지 확인합니다.sudo chown opensearch:opensearch admin-key.pem admin.pem node1-key.pem node1.pem root-ca-key.pem root-ca.pem root-ca.srl{% include copy.html %}
-
Generate Certificates에 설명된 대로 이러한 인증서를
opensearch.yml에 추가합니다. 고급 사용자는 스크립트를 사용하여 설정을 추가할 수도 있습니다. 이 스크립트를 실행하기 전에 노드의 고유 이름(DN)에 있는 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 cp /etc/opensearch/root-ca.pem /etc/pki/ca-trust/source/anchors/{% include copy.html %}
신뢰를 추가합니다:
sudo update-ca-trust{% include copy.html %}
사용자 구성
OpenSearch는 다양한 방식으로 사용자를 정의하고 인증합니다. 추가 백엔드 인프라가 필요하지 않은 한 가지 방법은 internal_users.yml에서 수동으로 사용자를 구성하는 것입니다. 사용자 구성에 대한 자세한 내용은 YAML files를 참조하세요. 다음 단계에서는 admin 사용자를 제외한 모든 데모 사용자를 제거하고 스크립트를 사용하여 admin 기본 비밀번호를 교체하는 방법을 설명합니다.
-
Security 플러그인의 tools 디렉터리로 이동합니다.
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 %}
-
admin을 제외한 모든 데모 사용자를 제거하고 해시를 이전 단계에서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"{% 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에 선언한 경우 환경 변수를 생략할 수 있습니다:
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://your.host.address:9200 -u admin:yournewpassword -k
{% include copy.html %}
다음 응답을 받게 됩니다:
{
"name" : "hostname-here",
"cluster_name" : "opensearch",
"cluster_uuid" : "efC0ANNMQlGQ5TbhNflVPg",
"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/"
}
최신 버전으로 업그레이드
RPM 또는 YUM을 사용하여 설치된 OpenSearch 인스턴스는 최신 버전으로 쉽게 업그레이드할 수 있습니다. YUM으로 업데이트하는 것을 권장하지만 RPM을 사용하여 업그레이드할 수도 있습니다.
RPM을 사용하여 수동으로 업그레이드
OpenSearch Project 다운로드 페이지{:target='_blank'}에서 원하는 업그레이드 버전의 RPM 패키지를 직접 다운로드하세요.
배포판이 포함된 디렉터리로 이동하여 다음 명령을 실행합니다:
sudo rpm -Uvh opensearch-{{site.opensearch_version}}-linux-x64.rpm
{% include copy.html %}
YUM을 사용하여 업그레이드
YUM을 사용하여 OpenSearch를 최신 버전으로 업그레이드하려면:
sudo yum update opensearch
{% include copy.html %}
특정 OpenSearch 버전으로 업그레이드할 수도 있습니다:
sudo yum update opensearch-<version-number>
{% include copy.html %}
패키지 업그레이드 후 서비스 자동 다시 시작
OpenSearch RPM 패키지는 패키지 업그레이드 후 서비스를 자동으로 다시 시작하는 것을 지원하지 않습니다. 업그레이드는 OpenSearch를 중지시키므로 업그레이드가 완료된 후 서비스를 시작하세요:
sudo systemctl start opensearch
{% include copy.html %}
관련 문서
- 프로덕션을 위한 클러스터 준비
- 일반적인 설치 문제
- OpenSearch 구성
- OpenSearch Dashboards 설치 및 구성
- OpenSearch 플러그인 설치
- Security 플러그인 정보