https://docs.opensearch.org/latest/getting-started/security/
데모 구성은 OpenSearch 보안을 시작하는 가장 간단한 방법입니다. OpenSearch에는 install_demo_configuration.sh(Windows의 경우 install_demo_configuration.bat)를 포함하여 여러 유용한 스크립트가 번들로 제공됩니다.
이 스크립트는 plugins/opensearch-security/tools에 위치하며 다음 작업을 수행합니다:
데모 구성과 빠르게 시작하는 방법에 대한 자세한 정보는 "데모 구성 설정"에서 찾을 수 있습니다.
⚠️ 중요: 데모 인증서 및 기본 비밀번호와 같은 이 구성의 특정 측면은 운영 환경에서 절대 사용해서는 안 됩니다. 운영 환경으로 이동하기 전에 데모 구성의 이러한 부분을 사용자 정의 정보로 교체해야 합니다.
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.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에 접근할 수 있습니다. 사용자명 admin과 OPENSEARCH_INITIAL_ADMIN_PASSWORD 환경 변수에 구성된 비밀번호를 사용하세요.
사용자, 역할 및 기타 보안 관련 구성을 추가하는 방법에는 세 가지가 있습니다:
보안 구성 파일은 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 보안 시작 가이드를 한국어로 번역해드리겠습니다.보안 가이드 번역을 완료했습니다! 이 문서도 쿡북 스타일로 활용할 수 있도록 몇 가지 제안드리겠습니다:
1. 보안 설정 단계별 체크리스트:
## 보안 설정 필수 단계
1. [ ] 환경 변수 설정 (OPENSEARCH_INITIAL_ADMIN_PASSWORD)
2. [ ] 데모 구성 스크립트 실행
3. [ ] OpenSearch 연결 테스트
4. [ ] Dashboards 구성 파일 수정
5. [ ] 보안 인덱스에 구성 업로드
2. 환경별 보안 수준:
## 환경별 권장 보안 설정
### 개발 환경
- 데모 인증서 사용 가능
- 기본 비밀번호 허용
- SSL 검증 비활성화
### 스테이징 환경
- 커스텀 인증서 권장
- 강력한 비밀번호 필수
- 역할 기반 접근 제한
### 운영 환경
- 운영용 인증서 필수
- 정기적 비밀번호 변경
- 최소 권한 원칙 적용
3. 자주 발생하는 보안 문제 해결:
## 트러블슈팅 가이드
### "인증 실패" 오류
→ 비밀번호 확인, 사용자 존재 여부 확인
### "권한 부족" 오류
→ 역할 매핑 확인, 필요 권한 검토
### "SSL 인증서" 오류
→ -k 옵션 사용 또는 적절한 인증서 설정