DEV Community

Panupong Chantaklang
Panupong Chantaklang

Posted on • Edited on

มาเปลี่ยน admin password ให้กับ opensearch docker กันเถอะ

    เนื่องด้วยตอนนี้จะทำอะไรแต่ละอย่างก็พยายามใช้ Docker เป็นหลักเพื่อความสะดวก ในทั้งตอน Develop → UAT → Produciton จะได้ไปในท่าเดียวกันได้ทั้งหมด

    และมีโจทย์ที่จะ implement log server ขึ้นมาอีกตัว เลยนั่งนึกๆดู ปกติเรา Search มา log อะไรมันก็เป็น Text Base Search ดังนั้นตัวที่เหมาะๆในการใช้งานน่าะเป็น Elastics Search Stack นี่แหละที่เหมาะที่สุด แต่ Elastics Search ก็ดันเปลี่ยน license ไปซะแล้ว ไหนๆก็ไหนๆ ใช้ ตัว Open Search เลยดีกว่า

    ซึ่งไปหาดูใน Website ของ Open Search ก็แสนจะง่าย

https://opensearch.org/docs/latest/opensearch/install/docker/#run-the-image

$docker run -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:1.3.1
Enter fullscreen mode Exit fullscreen mode

Run command ง่ายๆ แบบนี้เอง หลังจาก container up ขึ้นมาแล้วก็ ทดสอบง่ายๆ ว่าสามารถใช้งานได้่ไหม โดยคำสั่ง

$curl -XGET https://localhost:9200 -u 'admin:admin' --insecure
$curl -XGET https://localhost:9200/_cat/nodes?v -u 'admin:admin' --insecure
$curl -XGET https://localhost:9200/_cat/plugins?v -u 'admin:admin' --insecure
Enter fullscreen mode Exit fullscreen mode

ได้ response มาก็จะพบว่าใช้งานได้ละ

แต่ !!!!!!

    สังเกตอะไรไหมครับ Username และ Password มันช่างง่ายดายเสียนี่กระไร หากมีใครล่วงรู้ก็สามารถมาทำอะไรๆกับ Open Search ของเราได้ล่ะสิ ​ดังนั้นควรจะเปลี่ยนมันซะเพื่อป้องกันการเข้าถึงที่ง่ายเกินไประดับนึง

    ดังนั้นจึงต้องไปแสดงหาวิธีการในการแก้ไข password ของ admin อย่างง่ายๆเพื่อไม่ให้เปลืองพลังงานชีวิตจนเกินไป ก็พบทางสว่าง จาก link นี้ที่เค้าทำการเปลี่ยน password admin ของ Elastics Search บน Open Distro

    ดังนั้นมาลองกันเลยครับ

  • ตรวจสอบเสียก่อนว่า container ที่เรารันชื่ออะไรจะได้เข้าไปจัดการได้ถูก run คำสั่งนี้ได้เลย
$docker ps -a
Enter fullscreen mode Exit fullscreen mode

ก็จะเจอ

CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                      PORTS                                                                NAMES
9ce2cb3a905c   opensearchproject/opensearch:1.3.1    "./opensearch-docker…"   42 minutes ago   Up 42 minutes               0.0.0.0:9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, 9650/tcp   zen_lamarr
Enter fullscreen mode Exit fullscreen mode
  • เจอแล้วก็เข้าไปข้างใน container เพื่อจัดการครับ
$docker exec -it {ชื่อ container ที่ต้องการ} /bin/bash
Enter fullscreen mode Exit fullscreen mode
  • ก็จะเข้ามาใน terminal ของ docker ได้แล้ว
[opensearch@9ce2cb3a905c ~]$
Enter fullscreen mode Exit fullscreen mode

คราวนี้ก็พร้อมให้เราจัดการแล้วครับ

  • ขั้นแรกจัดการสร้าง hash ของ password ใหม่เสียก่อน ด้วยคำสั่งนี้
[opensearch@9ce2cb3a905c ~]$ /usr/share/opensearch/plugins/opensearch-security/tools/hash.sh
Enter fullscreen mode Exit fullscreen mode

ระบบก็จะขึ้น Prompt [Password:] เพื่อให้เราป้อนค่าที่ต้องการครับแล้วมันจะ Hash ให้เราเลยแบบนี้

[opensearch@9ce2cb3a905c ~]$ /usr/share/opensearch/plugins/opensearch-security/tools/hash.sh
[Password:]
$2y$12$L3hqnOTHLUTa1M9MCwboZ.74PHhcKsnzix2Tv34308U7qi11f2Uw6
[opensearch@9ce2cb3a905c ~]$
Enter fullscreen mode Exit fullscreen mode
  • จากนั้นตามหา file internal_users.yml เพื่อแก้ไข password ของ admin ซึ่งมันจะอยู่ที่
/usr/share/opensearch/plugins/opensearch-security/securityconfig/internal_users.yml
Enter fullscreen mode Exit fullscreen mode

ยังดีครับ image นี้มี vi ให้เราใช้แก้ไข file ได้ บาง image เอาออกเกลี้ยงจะทำอะไรทีต้อง eho ทับมันก็จะรันทดหน่อยๆ

ก็จัดการมันครับ

$vi /usr/share/opensearch/plugins/opensearch-security/securityconfig/internal_users.yml
Enter fullscreen mode Exit fullscreen mode

จะพบ section hash กันต่อหน้าต่อตาเลยทีเดียว

# Define your internal users here

## Demo users

admin:
  hash: "$2y$12$/yozwRC7sWQMzj.O3s5wvOR12gm9KpDgpMtxEypUTgcmlRnbpZtay"
  reserved: true
  backend_roles:
  - "admin"
  description: "Demo admin user"
Enter fullscreen mode Exit fullscreen mode

copy hash ที่เราได้มาใหม่ทับเลยครับ แต่ยังไม่จบ เมื่อเปลี่ยนแล้วต้องให้มันรู้จักครับว่าเปลี่ยน

  • Run Command นี้เข้าไป
$cd /usr/share/opensearch/plugins/opensearch-security/tools
$./securityadmin.sh -cd ../securityconfig/ -icl -nhnv -cacert /usr/share/opensearch/config/root-ca.pem  -cert /usr/share/opensearch/config/kirk.pem -key /usr/share/opensearch/config/kirk-key.pem
Enter fullscreen mode Exit fullscreen mode

เป็นอันเรียบร้อยครับ

  • ลองทดสอบดูด้วย user / password เดิมจะพบว่าใช้ไม่ได้แล้ว
$curl -XGET https://localhost:9200 -u 'admin:admin' --insecure
$Unauthorized
Enter fullscreen mode Exit fullscreen mode



แต่เมื่อทดสอบด้วย password ใหทม่

curl -XGET https://localhost:9200 -u 'admin:password' --insecure
{
  "name" : "9ce2cb3a905c",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "L4yL5lc1SMOVrmPty8msOA",
  "version" : {
    "distribution" : "opensearch",
    "number" : "1.3.1",
    "build_type" : "tar",
    "build_hash" : "c4c0672877bf0f787ca857c7c37b775967f93d81",
    "build_date" : "2022-03-29T18:35:30.372094Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Enter fullscreen mode Exit fullscreen mode

ก็จะพบว่าใช้ได้แล้วตามปกติ

เป็นอันว่าจบไปครับกับการเปลี่ยน admin password ของ opensearch อย่างง่าย(ตรงไหน) เผื่อใครจะเอาไปใช้นะครับ

Top comments (0)