# Opensearch

AWS Security Workshop - AWS서비스로 SIEM 구축하기(2)
위협 탐지를 위한 대시보드 Opensearch Dashboard의 다양한 데이터 분석과 시각화 기능을 통해 로그 탐색부터 대시보드 구성을 진행한다. 내장된 Alerting 기능을 통해 다양한 외부 채널과 연동하여 알람을 구성 로그 탐색 조회되는 각 도큐먼트의 좌측 드롭다운 버튼을 누르면 좀더 자세히 살펴볼 수 있다. 특정 필드에 대해 검색하기 위해 key-value형태로 조회. "eventSource":"s3.amazonaws.com" 시각화 해보기 1. Pie chart 2. Hor

AWS Security Workshop - AWS서비스로 SIEM 구축하기(1)
실습 목표 직접 Hands On을 통해 아래의 아키텍처를 완성 한다. 사전 실습 환경 CloudFormation으로 배포된 AWS 리소스들 이후 실습을 통해 하나씩 로그 통합 파이프라인을 구축한다. OpenSearch 보안구성 수정 도메인수준 액세스정책 구성 부분을 수정한다. 대시보드 url 이미지 
[오픈서치] 1. index templates
사이드 프로젝트 프로젝트를 진행하면서 많은 양의 데이터를 처리하다 보니 디비에서 받아오는 퍼포먼스가 너무 떨었다. 물리적으로 한 데이터를 카테고리 별로 인덱스를 물리적으로 분리를 했어야 했는데 시행착오를 많이 겪고 나서야 알아버렸다. 그래서 템플릿을 만들어 인덱스를 효율적으로 만들수 있도록 했다. 오픈서치 공식문서를 보여 이해하고 넘어가려했다. Index templates > 인덱스 템플릿(Index Templates)은 새로운 인덱스를 생성할 때 적용되는 기본 설정과 매핑을 정의하는 데 사용됩니다. 인덱스 템플릿을 사용하면, 동일한 구성을 여러 인덱스에 쉽게 적용할 수 있으며, 향후에 새로운 인덱스에 동일한 설정을 자동으로 적용할 수 있습니다. 인덱스 템플릿은 다음과 같은 사항을 설정할 수 있습니다 매핑(Mappings): 데이터 구조와 필드 데이터 타입을 설정할 수 있습니다. **인덱스 설정(Index Settings): 샤드(Shar

OpenSearch
OpenSearch 구성 > 사용자 지정 생성 개발 및 테스트 대기 없는 도메인(가용 영역 수 조절 가능) 가용 영역: 2-AZ 엔진 옵션: 2.7(최신) 인스턴스 유형: t3.small.search 노드 수: 2 노드당 EBS 스토리지 크기: 10 네트워크: 퍼블릭 액세스 세분화된 액세스 제어 마스터 사용자 생성 마스터 이름: skybluelee 마스터 암호: 대문자, 소문자, 숫자, 특수문자 포함. 액세스 정책: 세분화된 액세스 제어만 사용 >AWS KMS 키 선택: AWS 소유 키 사용 고급 클러스터 설정 - 최대 절 수: 1024 OpenSearch Endpoint 도메인 엔드포인트를 복사하여 확인하면 OpenSearch는 http를 기반으로 API 호출이 되므로 와 같은 정보를 확인할 수 있음. OpenSearch 대시보드 URL을 입력하면 
AWS ALB 로그 OpenSearch에 적재하기(총정리)
1. ALB 로그 수집 활성화 1.1 S3에 로그 적재 > 본인이 만든 ALB 클릭 -> 속성 탭 -> Edit > ALB 로그 수집을 활성화 하면 S3에 로그가 저장된다. 1.2 로그 수집되는지 확인 > 위에서 명시한 접두사 밑으로 여러 폴더가 생성되면서 로그가 만들어진다. ALB 로그는 트래픽이 있을 때마다 S3에 저장하는 것이 아니라 5분 간격으로 그 사이에 있었던 모든 로그를 하나의 파일에 저장한다. 기본적으로 .gz 파일로 압축되어 저장되며 저장 형식을 바꿀 수 있다는 카더라가 있었지만 전혀
elasticserach opensearch sql문으로 검색할때 curl
curl -XPOST "https://localhost:9200/plugins/sql" -u admin:Hkdijeksk0! -k -d '{"query": "SELECT * FROM user WHERE userid=\"admin\""}' -H 'Content-Type: application/json' curl -XPOST "https://localhost:9200/plugins/sql" -u admin:${password} -k -d '{"query": "SELECT * FROM ${index} WHERE ${field}=\"${userid}\""}' -H 'Content-Type: application/json'
테라폼으로 오픈 서치 만들기
오픈서치테라폼 ex vpc 내부용으로 만든 것이라서 nginx proxy타고 들어가게 설정 그냥 만들면 외부용으로 만들어지는데, 안쪽에서만 사용이 가능하게 만들고 싶어서 이렇게 구성하고, 나는 확인용으로 프록시 nginx 서버를 하나 만들었다. nslookup 없으면 설치 bind-utils 패키지 설치 https연결 무조건해야되서, 인증서 하나 만들기 ( 대충 openssl로 만들었음 ) cd/etc/nginx/conf.d/default.conf vi /etc/hosts에 해당 ip 넣어주기 cloudwatch 로그에 구독 필터 만들어서 opensearch 와 연결하기 람다 실행 iam 롤을 os에 넣어줘야함 [롤추가 스택오버플로우글](https://stackoverflow.com/questions/61333298/streaming-data-fr

Fluentd + OpenSearch 로그 모니터링 시스템 구축기
개요 Fluentd + OpenSearch를 결합하여 syslog를 수집하는 시스템을 구축하는 내용에 대한 기록입니다. 준비물 Ubuntu 20.04.5 LTS Fluentd가 설치된 환경 (버전 : v1.15.3) OpenSearch가 설치된 환경 (버전 : v2.4.1) 시스템 관련 디렉토리 정보 타켓 로그파일 : /var/log/syslog (rsyslog 데몬의 설정을 참고합니다. /etc/rsyslog.d/50-default.conf) Fluentd 설정파일 : /etc/fluentd/fluent.conf Fluentd 로그 관리용 디렉토리 : /var/log/fluentd 로그 파싱 전략 (syslog 한정) 로그 파싱은 Grok pattern을 활용합니다. syslog 구조 파악 
Opensearch Cluster 구성에 대해 알아보자
정보 : Opensearch Documentation > https://opensearch.org/docs/latest/opensearch/cluster/ Opensearch Documentation을 보면서 느낀 건 ElasticSearch Documentation을 복사 붙여넣기 한게 굉장히 많다. Refer가 부족한 부분은 ElasticSearch Documentation을 보면서 보완해야 할 것 같다. 1. Cluster 종류 |Node type | Description | Best practices for production | |---|---|---| | Cluster manager|클러스터의 전체 작업을 관리하고 클러스터 상태를 추적합니다. 여기에는 인덱스 생성 및 삭제, 클러스터에 가입하고 나가는 노드 추적, 클러스터의 각 노드 상태 확인(ping 요청 실행), 노드에 샤드 할당 등이 포함됩니다.|3개의 서로 다른 영역에 있는 3개의 전용 클

Data Prepper에 대해 알아보자!
https://github.com/opensearch-project/data-prepper 1. DatePrepper Overview Data Prepper는 오픈소스 Server Side Data Collector임. Raw log 수집에서부터 interactive ad-hoc analyses까지 end-to end lifecycle 분석을 목표로 하고 있음. Star수를 보았을때 Opensearch에서 초기단계의 프로젝트이다. (2021년 6월 Launch) 
OpenSearch에 대해 알아보자!
1.OpenSearch란 > Opensearch는 Elastic Search가 기업화를 꾀하는데에 대한 반발로 나온 오픈소스이다! https://aws.amazon.com/ko/blogs/opensource/introducing-opensearch/ https://aws.amazon.com/ko/what-is/opensearch/ https://opensearch.org/docs Elastic Search 7.1에서 Fork 되어서 등장 Kibana 7.1에서 Fork 되어서 등장 ALv2 라이센스 (무료 개방형 오픈소스) 분산형 커뮤니티 기반 100% 오픈 소스 검색 및 분석 제품군으로, 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용 2. Opensearch stack opensearch는 기존 ES (Elastic Search)를 대체해서 등장했기에 다양한 스택과 조합이 가능. 수집 및 정제 D

[Kubernets] LogStash -> Fluentd 전환기 - 1. 배경
배경 최근 Cloud Engineer에서 DevOps Engineer로 직무변경을 하며 이직에 성공했습니다. 인수인계를 받고 클라우드 구성을 파악한 뒤 가장 처음으로 맡게된 업무가 기존의 로그수집 환경을 개선하는 것이었습니다. 현재 직장에서는 서비스의 로그 수집을 별도 EC2에 설치한 LogStash에서 Kubernetes Cluster에 Container로 배포된 Fluentd 기반의 로그수집 방식으로 전환하는 작업을 진행하고 있습니다. 현재 환경은 Service -> LogStash ->Confluent(kafka)-> AWS OpenSearch(Elastic Search)로 로그를 수집하고 있는데, 이를 Service -> Fluentd -> AWS OpenSearch(Elastic Search) 형태로 전환하는 것입니다. 현재 LogStash가 설치된 EC2와 Confluent Kafka로 이어지는 구성에서

opensearch IAM role 규칙 적용
opensearch에서 특정 role에만 DELETE 권한을 허용하도록 할 수 있다. role은 user와 비슷하지만, 비밀번호나 access_key 등이 없다는 게 특징이다. 또한 인스턴스 등의 리소스에게 권한을 줄 때 role을 사용한다. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html https://stackoverflow.com/questions/46199680/difference-between-iam-role-and-iam-user-in-aws opensearch resource based policy opensearch 도메인 화면에서 Security Configuration 탭으로 들어간다. 수정화면에서 policy json

opensearch IAM user 규칙 적용
opensearch는 http 프로토콜을 사용한다. DELETE 요청을 하면 인덱스가 삭제될 수 있다. opensearch http 접근 가능한 누구나 인덱스를 삭제할 수 있다. 누구나 인덱스를 삭제할 수 있도록 열려 있는게 아닌, 특정 user만 DELETE할 수 있는 닫혀있는 환경이 필요하다. DELETE 프로토콜을 관리할 방법 중 IAM resource base policy가 있다. https://docs.aws.amazon.com/IAM/latest/UserGuide/accesspoliciesidentity-vs-resource.html opensearch resource base policy opensearch 도메인에서 Security configuration을 수정한다. 수정 화면

AWS OpenSearch CreateDomain error
ElasticSearch 생성시 아래와 같은 에러가 발생하면 고급설정에서 '최대 절 수'를 조절하시면 해결됩니다. > CreateDomain: {"message":"indices.query.bool.maxclausecount is not a valid query count value. Please enter a integer value between 1 and 2147483647 (inclusive)."}
[TIL]search cluster using docker container not docker compose
제목 그대로다. elasticsearch든 opensearch든 대부분 cluster구성의 예제가 docker-compose로 작성되어있다. docker-compose가 아닌 docker container로 각각 띄워 cluster를 구성할 필요가 있었다. 관련내용을 찾는 건 쉽지 않았고 생각보다 공유된 docker-compose내용을 나누어 각각의 container로 띄우기는 쉽지 않다. 아래 블로그에서 가장 중요한 힌트를 얻었지만, 전체 내용은 없어 나처럼 헤매는 사람이 있을까 공유를 한다. > HOST의 IP를 network.publish_host에 직접 바인딩해준다. Docker로 ES를 띄울 경우 network 설정이 복잡해진다. 3개의 호스트에서 컨테이너를 각각 띄워 3개의 노드로 opensearch클러스터를 구성하는 내용이다. 추가로 필요한 설정은 -e 옵션을 사용하여 환경
[TIL]Elasticsearch Upgrade and Migration
Migration은 Data만을 이관 , Upgrade는 인프라 변경에 필요한 인증 등 내용 필요한 케이스는 아래와 같았다. Elasticsearch에서 Opensearch로 데이터 이관 Opensearch Minor Versio Upgrade 아래 조사한 내용을 바탕으로 각각 reindex와 rolling upgrade를 진행하려고 한다. Upgrade https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html Rolling upgrades Full cluster restart upgrade Reindex before upgrading Migration https://www.elastic.co/guide/en/cloud/current/ec-migrate-data.html Indexing from the source Reindex from a r
[TIL]Elasticsearch, Opensearch and ODFE...
이미지로 차이가 잘 정리된 곳 https://aws.plainenglish.io/the-difference-between-elasticsearch-open-distro-and-opensearch-d43c9a2c31b1?gi=e79f8d8bd81a 이미지로 엔진에 대한 개념이 잘 정리된 곳 https://www.instaclustr.com/opensearch-and-elasticsearch-architecture/ 시작은 docker-compose로부터 feat. Opensearch https://opensearch.org/docs/opensearch/install/docker/#sample-docker-compose-file Nori Analyzer(Offline install) curl -O -k https://artifacts.opensearch.org/releases/plugins/analysis-nori/1.0.0/analysis-nor